2015-07-19 60 views
0

我從同學的帖子中讀到: 「在一個好的數據庫設計中,通常使用主鍵來完成聯接。」 真正使用主鍵作爲良好設計所必需的謂詞。我看不出如何。連接操作的主鍵?

謝謝你的幫助!

回答

0

使用主鍵進行良好的數據庫設計可能是一個爭論。按照RDBMS指南的經典,建議爲良好的數據庫設計創建主鍵。但現在有一天不會對數據庫方面施加太多限制來提高性能,而是對業務層進行驗證(不確定主鍵是否也是如此)。

現在想到您的問題, 主鍵對於連接操作不是必需的,但是必須使用唯一標識主表記錄的列,否則它可能會生成虛假記錄。

部門

| dept| sub_dept | dsc   | 
| CS | CS  | Computer sc.| 
| CS | IT  | Info Tech. | 

學生

| Name | age | sex | dept | sub_dept| 
| abcd | 025 | M | CS | CS  | 
| wxyz | 023 | M | CS | IT  | 

現在,如果你加入的sub_dept表,你會得到正確的結果。

select s.name, s.age, s.sex, d.dsc from student s, department d where 

s.sub_dept = d.sub_dept

| Name | age | sex | dsc   | 
| abcd | 025 | M | Computer Sc. | 
| wxyz | 023 | M | Computer Sc. | 

如果你加入的dept列的表,你會得到虛假的元組(2個額外的行)

select s.name, s.age, s.sex, d.dsc from student s, department d where s.dept = d.dept 

| Name | age | sex | dsc   | 
| abcd | 025 | M | Computer Sc. | 
| wxyz | 023 | M | Computer Sc. | 


| abcd | 025 | M | Info Tech.  | 
| wxyz | 023 | M | Computer Sc. |