繁体   English   中英

一对一关系的数据库设计

[英]Database design for one-to-one relationship

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

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

到Registrant_Type的事件:一对多(一个事件由零个,一个或多个注册者类型组成;一个注册者类型仅属于一个事件)

事件收费:一对一(一个事件仅包含一项费用(注册费))

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

Registrant_Type to Fee:一对一(一种注册人类型仅包含一种费用(注册费))

如何基于这些关系创建表?

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

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

  1. 在事件,议程和registrant_type中放置收费的外键。

这将起作用,但不会强制执行关系必须为1:1而非1:1:1的规则。 如果要执行该规则,则需要在应用程序中或使用触发器来执行。

  1. 使用事件,议程和registrant_type中的主键作为收费的外键。

因为PK不能具有重复值,所以这将强制建立1:1关系。 您的费用PK可能会自动增加,但是随后您必须在其他表中手动设置PK,以与费用中的匹配记录相对应。 如果您不能先​​将费用添加到数据库中(例如,如果您先创建事件,然后再决定费用是多少),那么这将无法正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM