我只是有一個簡單的問題。一張表是否只有主鍵作爲外鍵?外鍵可以唯一主鍵
澄清。當我創建表時,我有時會有一個帶有多個鍵的表,其中一些是外鍵。例如:
create table Pet(
Name varchar(20),
Owner char(1),
Color varchar(10),
primary key(Name, Owner),
foreign key(Owner) referecnes Person(Ssn)
);
所以現在我想知道是否有可能做這樣的事情:
create table WorksAs(
Worker char(1),
Work varcahr(30),
primary key(Worker),
foreign key(Worker) references Person(Ssn)
);
這將導致在具有完全相同的主鍵兩個表。這是應該避免的還是設計數據庫的好方法?如果上述不是一個好的標準,我只是簡單地將Work變量設置爲主鍵,這樣可以,但是如果不需要,跳過它似乎更簡單。
我覺得你的表WorkAs應該是一個關係表的空間。這意味着您可以使用WorkPlaces的表格,例如帶有Workers和Table WorksAs的表格與Worker-> WorkPlace建立關係。否則,爲什麼你不使用同一個表(Worker)並且將該列添加到char Workplace中? 但回答你的問題,是的,你可以擁有它。 –
我會說它非常好。但是......爲什麼不直接將這些字段(在WorksAs中)移動到Person表中(在那裏可以爲空)?少一桌。少加入一個。 –
首先,這只是我提出這個問題時遇到的一個不好的例子,因爲解釋我想知道的更容易。其次,我想知道這個的原因是因爲我正在處理一個任務,我們應該從我們的數據庫中消除NULL值。所以,如果我把人工表格中的WorksAs我會有可能的NULL值,我不想要的問題:) –