数据库设计一对一的关系

时间:2014-09-12 02:24:54

标签: mysql database-design relational-database mysql-workbench

我有以下表格: 1)事件 2)议程 3)Registrant_Type 4)费用

关系: 议程事件:一对多(一个事件由零个,一个或多个议程组成;一个议程仅属于一个事件)

Registrant_Type事件:一对多(一个事件由零个,一个或多个注册人类型组成;一个注册人类型只属于一个事件)

活动费用:一对一(一项活动仅包含一项费用(注册费))

费用议程:一对一(一个议程只包含一项费用(议程费))

注册人_类型到费用:一对一(一种注册人类型只包含一项费用(注册费))

如何根据这些关系创建表?

1 个答案:

答案 0 :(得分:0)

将事件的外键放入议程中。在registrant_type中放置事件的外键。

对于一对一关系,您有两个可行的选项:

  1. 在事件,议程和registrant_type中加入外键付费。
  2. 这将有效,但不会强制执行关系所具有的规则    是1:1而不是1:多。如果要强制执行该规则,    您需要在应用程序中或使用触发器执行此操作。

    1. 使用event,agenda和registrant_type中的主键作为外键付费。
    2. 这会强制实施1:1的关系,因为PK不具备重复值。您的费用PK可以自动递增,但是您必须手动设置其他表中的PK以对应于费用中的匹配记录。如果您不能先​​将费用添加到数据库中(例如,如果您先创建事件,然后再决定费用是多少),这将无法正常工作。