2012-01-26 37 views

回答

1

一个名为FOO_BAR_ID的字段会向我建议某种桥接或映射表,而不是与我认为您建议的复合主键的关系,下面是我如何倾向于命名字段的演示我避免使用复合主键,因为他们打破第二范式和tbh我从来没有见过使用它们的合理理由

+ a normal table 
----------------------------------------------------- 
| DEPARTMENT_SID | NAME | DESCRIPTION | ADDRESS_SID | 
----------------------------------------------------- 
^pk        ^fk 

    + another normal table 
-------------------------------------------------- 
| ADDRESS_SID | NUMBER | STREET | TOWN | POSTCODE | 
-------------------------------------------------- 
^pk 

    + yet another normal table 
----------------------------------------------------------------------- 
| EMPLOYEE_SID | FIRST_NAME | LAST_NAME | DATE_OF_BIRTH | ADDRESS_SID | 
----------------------------------------------------------------------- 
^pk             ^fk 

    + bridge table as an employee can belong to many departments 
    + uses a composite key rather then defining a single primary key 
--------------------------------- 
! EMPLOYEE_SID ! DEPARTMENT_SID | 
--------------------------------- 
^cpk/fk ^cpk/fk 

    + bridge table defining a single primary key 
----------------------------------------------------------- 
| EMPLOYEE_DEPARTMENT_SID ! EMPLOYEE_SID | DEPARTMENT_SID | 
----------------------------------------------------------- 
^pk     ^fk   ^fk 

    + a table with a foreign key to the bridge table 
------------------------------------------------------ 
! SHIFT_SID | EMPLOYEE_DEPARTMENT_SID | HOURS_WORKED | 
------------------------------------------------------ 
^pk  ^fk     

pk = PRIMARY KEY, fk = FOREIGN KEY, cpk = COMPOSITE PRIMARY KEY