簡體   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