0
作为一个常见的约定,我问,因为我不完全确定;数据库设计栏命名约定;主要和外键
正常列名命名; id_ * referes到pk's和* id到fk's? 因此,多个ID *会暗示id_ *形成一个多列pk?
作为一个常见的约定,我问,因为我不完全确定;数据库设计栏命名约定;主要和外键
正常列名命名; id_ * referes到pk's和* id到fk's? 因此,多个ID *会暗示id_ *形成一个多列pk?
一个名为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