2013-05-29 85 views
1

我有點困惑,應該如何爲這個示例SQL數據庫設計我的表。數據庫設計 - 子類關係模型

我有Customer實體。客戶可以擁有許多Pet實體。每個寵物必須有自己的MedicalHistory。但一些寵物是女性,所以他們有一個FemaleMedicalHistory。最後,每個女性醫療歷史記錄可以有多個Birth記錄。

因此,FemaleMedicalHistory似乎是MedicalHistory的子類別,其中包含相同的字段以及指向Birth表的內容。這是正確的嗎?

如何將這些關係建模爲表格? MedicalHistory & FemaleMedicalHistory表共享相同的主鍵(例如mid)?

編輯:

這是我腦子裏想的,但我不知道它適合: enter image description here

+0

家庭作業?你爲什麼不告訴我們你目前的想法如何解決它。 –

+0

@BjoernRennhak不,它目前正在嘗試開發的項目應用程序的數據庫關係。我上傳了我的第一個模式嘗試,但由於某種原因,它似乎不合適。你怎麼看? – LePhleg

+0

有人嗎?我認爲這很簡單,我只是錯過了一些東西。 – LePhleg

回答

1

@LePhleg:'醫療歷史'本身就是一個非常糟糕的主意,這導致你定義了'medical_history_female'表。最好只有一個只有幾個字段的表格 - mid,pid,curdate,treatment_type和details - 但是有很多行。每行將是每個寵物的治療記錄。這種結構避免了對「醫療史」和「出生」表的需求:出生是一種將存儲在(新)病歷中的事件。

所以對於一個動物(比方說,一個女的狗),有可能是在medical_history表中的幾個事件 - 驅蟲,治療斷腿,出生,噴施等

0

我遵循KISS原則,所以我將它設計爲1:寵物之間有許多和出生記錄 - 出生表包含關於寵物的信息,而不是醫學史嗎?另外,什麼是「誕生」?我會爲表格及其屬性提供更多有意義的名稱 - 恕我直言,20世紀嘗試保存表/屬性名稱中的每個字符。