Database design 数据库设计列命名约定;主键和外键

Database design 数据库设计列命名约定;主键和外键,database-design,Database Design,作为一个常见的惯例,我问,因为我不完全确定 列命名正常;id_*指主键,*id指fk? 因此,多个id*意味着id正在形成一个多列pk?一个名为FOO\u BAR\u id的字段会向我建议某种桥接或映射表,而不是与复合主键的关系,我相信你是这么建议的,下面是我如何命名字段的演示,就我个人而言,我避免使用复合主键,因为它们打破了第二范式,而且我从未见过使用它们的逻辑推理 + a normal table ---------------------------------------------

作为一个常见的惯例,我问,因为我不完全确定

列命名正常;id_*指主键,*id指fk?
因此,多个id*意味着id正在形成一个多列pk?

一个名为
FOO\u BAR\u id
的字段会向我建议某种桥接或映射表,而不是与复合主键的关系,我相信你是这么建议的,下面是我如何命名字段的演示,就我个人而言,我避免使用复合主键,因为它们打破了第二范式,而且我从未见过使用它们的逻辑推理

  + 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