我正在看这个数据库模型,我对某些表中的“PF”感到困惑。我的理解是PF是“主/外键”,也可以是复合键。我理解这种情况是为了多对多的关系,但是Menu_Courses
表等情况怎么样呢?主键显然是int类型的自动递增列,但是menu_id
字段呢?如何在SQL Server等数据库中实现?
作者还在此页面上解释了PF字段:http://www.databaseanswers.org/tutorial4_db_schema/tutorial_slide_5.htm
答案 0 :(得分:7)
我理解的方式是这些字段是它们定义的表上的主键,同时它们是其他表的外键。
menu_courses
引用了suggested_menus
到menu_id
,并与course_number
结合使用了主键 - 即每个菜单/课程编号组合都是唯一的,并且唯一标识了在桌子上排。
您通常会将其作为suggested_menus
表上的外键字段实现。
答案 1 :(得分:2)
我想这只是意味着它是表中复合主键的一部分,但同时是外键。在 menu_courses 中,menu_id
引用了 suggested_menus ,并且是表主键的一部分。
答案 2 :(得分:1)
PF表示该列既是主键又是外键。作为主键,它是包含主键的多个列之一。那是引用复合键的地方。
例如,在表Recipe_Steps
中,recipe_id
是Recipe
表的外键。并且,与Step_Number
一起,它包含Recipe
表中的主键。
答案 3 :(得分:0)
这里的描绘具有误导性,当显示多个PF
时,它们代表一个复合键。
如果只显示了一个PF
,则表的PK
用于组成复合键,Menu_Courses
中似乎就是这种情况。
它有自己的PK
和PF
组合键,由自己的PK和父表的PK组成。