ERD的一部分顯示3個表之間的關係。此表是否需要新的主鍵?
用戶可以通過許多用戶
在中間的表解決了多對多的關係,並具有複合主鍵擁有許多tarcks(歌曲)
的軌道可以被擁有。以及存儲關於特定用戶如何評定特定曲目的信息。
http://i.imgur.com/Rn4PnGO.png
是否採用中間表需要一個新的主鍵「User_Rating_ID」或者是好(更好?)離開它作爲一個組合鍵?
ERD的一部分顯示3個表之間的關係。此表是否需要新的主鍵?
用戶可以通過許多用戶
在中間的表解決了多對多的關係,並具有複合主鍵擁有許多tarcks(歌曲)
的軌道可以被擁有。以及存儲關於特定用戶如何評定特定曲目的信息。
http://i.imgur.com/Rn4PnGO.png
是否採用中間表需要一個新的主鍵「User_Rating_ID」或者是好(更好?)離開它作爲一個組合鍵?
這取決於你如何使用數據。
從嚴格的邏輯角度來看,複合主鍵說明需要說什麼,並且工作正常。有一些不尋常的情況,單獨的PK可能會有所幫助。
多對多交叉表沒有任何錯誤,它具有由兩個外鍵列構成的組合主鍵,這兩個外鍵列指向通過交叉點鏈接的兩個表。
有些人可能希望將額外的候選主鍵,特別是無意義的系統生成的ID號(或GUID等)添加到這些交叉表中。
的原因,有人可以做到這包括:*
table_name
,record_id
,change_date
,change_user
等項目。*注意:我不主張任何這些原因。我說他們是你會發現「野外出走」的觀點。你的里程可能會有所不同,做出自己的決定等等。
交集表定義了兩個實體之間的關係。如果這是一個匿名關係,那麼不需要單獨的代理鍵。
例如,一個零件表和一個單位表可以有一個表,它定義了哪些零件用於製造每個單位。每個部分可以用於多個單元,每個單元由許多部分組成(有時也包括特定部分的幾個部分)。這樣的表可以是這樣的:
UnitID PartID Qty
這樣的交集表可能不會有一個代理鍵。常見問題被問到的關係將是:
我想不出任何情況下,甚至會使用這種關係的單獨關鍵。所有的問題都會涉及某個特定的部分或特定的單位。
另一方面,採取課程和學期。交叉表將建立課程,課程將被授課的具體課程。這裏可能有同一學期內某個特定課程的幾個例子。 Smith教授每天可以進行1小時的Math-101課程,瓊斯教授每天可以進行1.5小時的T-th課程。
在登記和其他未來的記錄保存,它會不是數學-101或將被跟蹤的學期,但將要使用的特別類。出於這個原因,需要一個單獨的代理鍵。
分析將在您的實例中確定關係是否爲匿名。
您是否介意闡述這些情況或指引我走向正確的方向?我搜索了這個問題,但找不到任何特別有用的東西。 – user388600