5

我正在查看这个数据库模型,我对某些表中的“PF”感到困惑。我的理解是 PF 是一个“主/外键”,也可以是一个复合键。我理解这种情况是多对多的关系,但是像Menu_Courses桌子这样的情况呢?主键显然是一个 int 类型的自动递增列,但是该menu_id字段呢?这将如何在 SQL Server 等数据库中实现?

作者还在此页面上解释了 PF 字段:http ://www.databaseanswers.org/tutorial4_db_schema/tutorial_slide_5.htm

http://www.databaseanswers.org/data_models/recipes/index.htm

4

4 回答 4

10

我理解的方式是这些字段是定义它们的表上的主键,同时它们是其他表的外键。

menu_courses引用suggested_menusthroughmenu_id和 combine withcourse_number是主键 - 即每个菜单/课程编号组合都是唯一的,并且唯一标识表中的一行。

您通常会将其实现为suggested_menus表上的外键字段。

于 2012-12-31T20:17:07.137 回答
2

我想这只是意味着它是表中复合主键的一部分,但同时也是外键。在menu_courses中,menu_id引用的Suggested_menus AND 是表主键的一部分。

于 2012-12-31T20:17:45.180 回答
1

PF 表示该列既是主键又是外键。作为主键,它是构成主键的多个列之一。这就是引用复合键的地方。

例如,在 table 中Recipe_Stepsrecipe_id是表的外键Recipe。并且,Step_Number它与 一起构成表中的主键Recipe

于 2012-12-31T20:20:46.593 回答
0

此处的描述具有误导性,当显示多个PF' 时,它们表示单个复合键。

如果只PF显示一个,PK则表的 是用来组成复合键的,在 中似乎是这种情况Menu_Courses
它有自己的PK组合PF键,由自己表的 PK 和父表的 PK 组成。

于 2012-12-31T20:31:11.763 回答