Database-Design

如何建立二對一表關係(PK-FK-CK)?

  • March 20, 2014

我的問題是關於數據庫設計及其原則。我正在開發一個 Python 應用程序,其中對象映射到數據庫表。

我有ProjectsPeople對象,映射到各自的表。然後我有Messages,也映射到自己的表。

Amessage可以屬於person(people 表) 或project(projects 表) (n-1)。

我的問題:

  • 我應該為消息和查詢創建兩列 -belongs_to_idbelongs_to_type- 以獲取它們嗎?要麼;
  • 我應該為每個人創建一個關聯表——people_have_messages 和項目有消息嗎?
  • 在這種情況下,正確的工作方式是什麼?
  • 如果我使用第一個選項,如何創建 FK 約束和約束?

我的問題是,由於項目和人員(人員表)都可以具有相同的 PK(ID),如果不說明表就不足以引用,我不知道具體該怎麼做。

表:

People:
--------------
ID (PK unique)
Name

Projects:
--------------
ID (PK unique)
Title
Description

Message:
--------------
ID (PK unique)
Text

我會說這取決於人員和項目之間是否存在聯繫?

從您提到的內容來看,我會正確使用: Projects -> ProjectsToMessage <- MessagePeople -> PeopleToMesseage <- Message 類型結構

(你的要點2)

除非項目和人員之間存在關係,在這種情況下,您最終可能會遇到一些數據庫不喜歡的循環依賴。但是,在這種情況下,我會質疑消息是否可以在不通過人員的情況下與項目相關聯。

引用自:https://dba.stackexchange.com/questions/53005