我有2個表:
表1
TrackID PK
random columns
ActionID FK
表2
ActionID PK
random columns
TrackID FK
問題: 有上述設定一個問題,如果有啥(正常化?)還是需要更多信息...?
感謝
菅
我有2個表:
表1
TrackID PK
random columns
ActionID FK
表2
ActionID PK
random columns
TrackID FK
問題: 有上述設定一個問題,如果有啥(正常化?)還是需要更多信息...?
感謝
菅
所提供的架構模型兩個實體由兩個不同的關係連接。
第一關係R1 Track - * ---- 1 - Action
由場ActionID表1
第二關係R2 Track - 1 ---- * - Action
由場的TrackID於表2
建模建模如果您的要求這可能是有效的模式表明你有兩種不同的關係。
這種情況下的一個簡化的例子將包括兩個實體Employee
和Project
與
的關係
manages
Employee - 1 ---- * - Project
和關係
works
Employee - * ---- 1 - Project
假設一名員工僅適用於最多一個項目。
這裏的問題是你想建模一個或兩個關係嗎?
如果你想模擬你的實體之間的一種關係,那麼你的模式有點不對,否則它是正確的。
上述設置有問題嗎?
不,這個詞的古典含義沒有「問題」。你可以堅持你的設計,這將沒有問題。但是,它是標準嗎?這就是我將在下一節討論的內容。
什麼(正常化?)還是需要更多信息...?
是的,正如我上面所暗示的那樣,爲了標準化或「標準化」您的設計,我可以提供以下信息。不幸的是,你對這個數據庫設計的目的不是很清楚。知道這個目的對於充分回答這個問題是至關重要的。不過,我會解決兩個可能的目的,我想你有其中一個。
目的1:每個音軌最多隻能有一個動作:在這種情況下,您不需要兩個表格。你可以有:
TrackID PK
random columns
random columns of actions /*(will stay null if no action takes place)*/
目的2:每個軌道可以有零或多個動作:在這種情況下,你需要兩個表如下所示:
表1:
TrackID PK
random columns
表2:
ActionID PK
random columns
CreateDate /*(search for creating a DateTime column with default to current date)*/
TrackID FK
所以,如果你想要的最新或當前租賃行動,您可以選擇排名前1,並通過CreateDate desc
與訂單相關。
是的,你肯定有問題。你怎麼能添加一行到任何一個表?您構建這些鍵的方式意味着您不能向任一表添加新行,除非外鍵的值已存在於其他表中。這是一個非常糟糕的設計。 –
兩個表都不需要有FK到另一個。你只需要一個顯示關係。 –
Track(TrackID)表是主表。當對Track(行)採取「行動」時,Action表獲得一行,Track表用ActionID更新。 Track表中的ActionID不是必需的。然而,Action表的TrackID是必需的... – Suge