Schema

計算表關係的有效性

  • October 26, 2014

問題背景:

為了提高我的 TSQL 程式技能,我正在為動物園設計一個“簡單”的數據庫模式。

我目前總共有 4 張桌子,但在解決動物園本身與其員工(在本例中為動物園管理員)之間的關係時遇到了問題。

架構:

在此處輸入圖像描述

這是一個有效的模式和關係嗎?這兩個表之間甚至應該有關係還是應該完全分開?

儘管動物園和飼養員之間存在一對多的關係,但對模型來說這並不是一個非常有用的關係,因為每個飼養員都在一個動物園工作。這可能就是您遇到問題的原因。除非您擁有多個動物園,否則您的 Zoo 表並未真正設置為與任何事物相關聯。您可以將 Zoo_ID 欄位添加到 Zoo 和 Keepers 表中。但是,只有一個動物園,有什麼意義呢?

對於多個動物園,必須使用鍵顯式佈置一對多關係,以便您跟踪飼養員為哪個動物園工作。每個動物園都有一個唯一的 Zoo_ID(主鍵),每個飼養員都有一個 Zoo_ID 欄位,該欄位與 Zoo_Ids(外鍵)之一匹配。

如果您的飼養員可以在多個動物園工作,那就更麻煩了。現在你有一個多對多的關係。您的飼養員表中可以有多行,每個動物園一個,但這是一種俗氣和重複的資訊。表示這種關係的正確方法是一個帶有飼養員 id 和動物園 id 的聯結(連接)表。如果你想像一張圖,畫出每個動物園和飼養員,以及連接飼養員和動物園的線,連接表中的每一行就像其中一條線,一端是動物園的 ID,另一端是飼養員的 ID .

tl;博士:是的,這是一個有效的關係。不,你不應該為它建模,除非你計劃在未來建立多個動物園。

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