簡體   English   中英

如何設計MySQL數據庫

[英]How to design MySQL Database

我有一個名為“ movie2person”的表,該表具有3列:movieID,personID和role。 我使用此表在“電影”表和“人”表之間建立聯系……多對多關系。

我已將movieID和personID都選擇為主鍵...問題是有時我需要多次為同一movieID輸入相同的personID,但我不能這樣做,因為只允許使用相同的movieID和personID的一種組合...

我該怎么做??

謝謝..

您可以在主鍵中包含角色,也可以在表中添加新的人工鍵,然后將此新列用作主鍵,而您不會在該表外使用它。

根據您的評論,我認為您需要更多規范化。 創建一個角色表並相應地調整您的查找表

movie
+----+------------+
| id | title      |
+----+------------+
|  1 | Braveheart |
+----+------------+

person
+----+------------+
| id | name       |
+----+------------+
|  4 | Mel Gibson |
+----+------------+

role
+----+------------+
| id | title      |
+----+------------+
|  1 | Director   |
|  2 | Actor      |
+----+------------+

movie2person
+---------+----------+--------+
| movieID | personID | roleID |
+---------+----------+--------+
|       1 |        4 |      1 |
|       1 |        4 |      2 |
+---------+----------+--------+

通過此設置,您將在movie2person上具有一個三列的復合主鍵。

主鍵的意思是“這是該行的唯一標識符”。

如果要插入許多具有相同值的行,那么那不是您的主鍵。

如果計划為行插入完全相同的重復項,那么根本就沒有主鍵,應該永久刪除它。

但是,如果您打算為每個(movieID,personID)對插入不同的角色,則只需將角色添加到主鍵即可。

將所有三列均作為主鍵。

我建議您對設計進行一些更改:

  1. 將表的名稱從Movie2Person更改為MoviePerson_xref。 通常,通常以這種格式命名,並從表命名約定中排除數字。

  2. 該表應具有自己的主鍵,稱為movieperson_xrefID。

  3. 然后,您可以保存電影ID和人物ID的所有組合。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM