2017-06-12 59 views
-1

以數據庫術語來說,當我添加一個新的外鍵時,爲該外鍵插入一條記錄並更新現有記錄,該過程稱爲什麼?我的目標是能夠更有效地找到答案。什麼是將一個新的關係添加到名爲?

//create temporary linking key 
alter table example add column example_foreign_key int unsigned null; 

//contains more fields 
insert into example_referenced_table (example_id, ...) 
select id, ... 
from example 
join ...; 

//link with the table 
update example join example_referenced_table on example_id = example.id 
set example.example_foreign_key = example_referenced_table.id; 

//drop linking key 
alter table example_referenced_table drop column example_id; 
+0

爲什麼downvote? –

回答

1

它看起來像你正在替代另一個代理標識符。引入代理鍵有時(不正確)稱爲規範化,所以您可能會在該術語中獲得一些命中。

在極少數情況下,規範化需要引入代理鍵,但在大多數情況下,它只是簡單地將關係(表)分解爲兩個或多個關係,以避免信息丟失。

當自然鍵或候選鍵不存在,不方便或不支持(例如,組合鍵通常是對象關係映射器的問題)時,通常使用代理鍵。關於選擇一個好主鍵的條件,請參閱:What are the design criteria for primary keys

將一個替代標識符替換爲另一個替代標識符的價值不大,因此您所演示的過程沒有正確的名稱,據我所知至少在關係模型中。

如果你的意思是引入一個代理鍵作爲一個新的實體集合的標識符來傳遞原始屬性,這接近Peter Chen所說的將一個從較低概念域的值集合移到較高概念域。您可以在他的論文「實體關係模型 - 企業數據視圖的基礎」中找到更多信息。

至於你的問題的標題,說你要添加一個關係到一個表(儘管這個措詞混合了概念和物理的術語)並沒有錯,但是請注意,在實體 - 關係模型中,一個關係被表示由表中的兩個或多個實體鍵(例如表中的(id, example_foreign_key)),而不是由表之間的外鍵約束。關係與外鍵約束的關聯來自網絡數據模型,它比關係模型和實體關係模型都要早。

+0

看來我還沒有給出正確的例子,example_referenced_table通常會包含更多的字段,而不是id。這個例子只是舉例說明了鏈接過程。 –

+0

>「雖然這種措詞混合了概念和物理條款」 精心製作? –

+0

實體關係模型是概念數據模型,提供了一個合理的直觀(但不是邏輯完整)的學科來組織知識,類似於主題領域的本體。 ER模型然後被映射到由表(物理數據模型)表示的關係(邏輯數據模型)。因此,說你將一個關係添加到表中就是混合不同級別的描述。在物理上,我們會將列添加到現有的或新的表格中以表示新的關係。 – reaanb

相關問題