2014-10-09 108 views
2

我有一個MySQL數據庫設置了我從MS Access數據庫導入的所有電影列表。一個字段包含電影類型的可能值,電影可以具有多種類型,所以我需要一種支持此功能的數據類型。在訪問中,我可以將一個表的'流派'鏈接到表格'電影'中的'流派'字段,所以我可以選擇任何一個,每部電影一個或多個流派。當我切換到MySQL時,我使用SET數據類型來定義所有可能的值。到目前爲止,一切都運行完美。 我現在試圖在html/php中設置一個表來顯示mysql表。我希望表格能夠排序:標題,流派,質量,評級等。但是對於流派的排序,我需要設置數據類型的可能值。我不知道是否可以通過一些php命令/代碼獲取值,但是當我在網絡上潛伏了一段時間後,我沒有看到許多應用程序在使用SET數據類型時出現明顯的負面原因。外鍵與SET數據類型MySQL

所以我開始研究外鍵的可能性。我在這裏遇到的問題是 - 就我所知,鑰匙只能包含一個可能的價值,這使我回到了問題的開始。我喜歡外鍵的想法,因爲這會讓我更容易在列表中添加新的流派。

我有沒有可能忽略的可能性?是否可以從SET類型獲取值到php或使用具有多種可能性的外鍵用於一條記錄?

我知道我也可以手動將每個類型放在我的php腳本中,但是我想將它放在一個地方。所以如果我添加一部電影還沒有定義,我可以在一個地方更新它,而其他所有東西都可以適應它。

+1

我會有另一個表'film_id,genre_id'每個電影根據需要的行數 – 2014-10-09 21:07:51

回答

0

Dagon絕對就在這裏 - 你的後端表格結構有問題。你現在想要建立一個多對多的關係,而在目前的後端,你所能做的最好的是一對多的關係。

審查: 您有可以有很多流派 個人的電影和你有涉及到許多電影流派個人

關係數據庫其實並不多模型與一個關係多對多的關係,他們使用遞歸一對多關係並創建兩個連接。

爲了模擬一個多對多的關係,你需要三個表 A片表(我想你已經有了) 一個種類表(我想你已經有了) 其作爲袞建議將包括結合表兩個字段電影ID和流派ID。

然後,您設置兩個單獨的一對多關係。一個從電影表到聯結表,一個從風格表到聯結表。

現在,如果您想知道電影的所有流派,只需在相關電影ID上過濾連接表,並且如果要了解具有某種流派的所有電影,請過濾流派ID上的連接表。

設置查找以將您的流派ID與文本描述關聯起來,並且您可以隨意更改文本描述,只要您想做就可以,而且如果您做得對,就可以更改文本描述,它將升級您表單中的每個值。

這是SQL和關係數據庫設計背後的集合代數的絕對基本概念。