當創建數據庫時,如果一個表只包含來自其他表的2個主鍵,會發生什麼情況,我假設它們都是外鍵。表中是否必須有主鍵?主鍵和外鍵?
主鍵和外鍵?
回答
表不一定需要關聯主鍵。據我完全有效的如下
Table_Album
pkey | name
1 | name1
2 | name2
Table_Song
pkey | name
1 | song1
2 | song2
3 | song3
然後,您可以有哪些規定
Table_Album_Song_Map
01表id | Album | Song # Here id is just row number and not primary key
1 | name1 | song1
2 | name1 | song2
3 | name2 | song3
希望幫助
否;表格不必有主鍵。
他們經常(通常?)不要當他們這樣鏈接/映射表。
只有兩個外鍵,沒有別的鏈接表(沒有加入代理鍵做一個簡單意義的主鍵)通常會被限制爲是唯一的(否則你不會能夠區分重複 - 這也是對正常形式的違反),所以你通常會繼續前進,並將這兩個鍵合併爲一個組合構成主鍵(PK必須按定義是唯一的,並且它們形成一個自然的這種鏈接表的PK的選擇)。主鍵中這些列的順序通常由最頻繁的搜索順序確定 - 即,personid,可能首先在personid上的合成主鍵上擁有personid,被確認。
+1是的,你是對的主鍵是一個或多個列上的*約束*。這不是一個專欄,因爲其他答案都是假設的。 – 2011-12-15 04:45:46
當你有一個關聯實體或表時,最好創建一個由雙親的鍵組成的複合主鍵。在這個例子中,Album-Song-Map上的專輯和歌曲的組合會有一個唯一性約束。如果您不將這些設置爲主鍵,並且使組合具有唯一性,那麼您可以在「Album-Song-Map」中添加重複項。 Album-Song-Map的組合鍵是父母雙方的關鍵,但他們分別是外鍵,分別返回到他們的父母,專輯和歌曲。根據我的經驗,關聯實體通常不僅用於映射,還包含一些業務屬性。例如,說這首歌在一張專輯中的持續時間(播放時間)與另一張不同。該屬性必須進入Album-Song-Map。我使用很多音樂來跳舞,而且在不同的專輯中,歌曲的持續時間通常不同。
- 1. 主鍵和外鍵
- 2. 主鍵和外鍵
- 3. 外鍵和主鍵
- 4. ScalaQuery多主鍵和外鍵
- 5. 主鍵和外鍵2
- 6. SQL主鍵和外鍵
- 7. 主鍵和外鍵衝突
- 8. ORA-01735主鍵和外鍵
- 9. 外鍵和主鍵錯誤
- 10. 主鍵VS外鍵
- 11. 外鍵和主鍵Postgres和索引
- 12. 有主鍵和外鍵的drop table
- 13. SQL更新主鍵和外鍵同時
- 14. SQL更改語句和外鍵/主鍵
- 15. SQL命令,主鍵和外鍵
- 16. 複合主鍵和外鍵jpa
- 17. 加入聲明/主鍵和外鍵
- 18. 需要主鍵和外鍵的幫助
- 19. 更改主鍵和外鍵的ActiveRecord
- 20. 有重複的外鍵和無主鍵
- 21. 主鍵和外鍵的插入
- 22. PHP分配主鍵和外鍵
- 23. Ruby on Rails - 主鍵和外鍵
- 24. 不清楚的外鍵和主鍵
- 25. 加入由主鍵和外鍵關係
- 26. 一個外鍵和兩個主鍵
- 27. Mysql數據庫...主鍵和外鍵
- 28. 主鍵和外鍵同時出現
- 29. 同一表中的主鍵和外鍵
- 30. 選擇SQL與主鍵和外鍵
這是一個奇怪的質量downvote。 – 2011-12-15 04:45:11