2015-01-12 432 views
1

我正在嘗試創建所有看過的電影的關係數據庫。SQL:如何分隔由逗號分隔的字符串值?

我用IMDb來評價我見過的電影,並使用該站點的導出功能來獲取我上傳到Microsoft Access的.csv文件中的數據。然而,「流派」專欄是我希望變成一對多關係的多對多關係。

我想要一張名爲GENRE_ID的表格,它爲每個類型分配一個數字ID。然後我會有另一個表,其中每個實例將有movie ID(「const」),line item numberGENRE_ID

因此,它可能看起來像:

const  line_item  MOVIE_ID 
tt0068646  1    1 (if MOVIE_ID: 1 = "crime") 
tt0068646  2    2 (if MOVIE_ID: 2 = "drama") 

這裏是我的數據庫的當前狀態的圖像的鏈接。非常感謝你的幫助。這是我爲了在自己的時間學習更多東西而開展的一個項目。

+0

http://imgur.com/YWLiKFu – WalkerS

+0

我不清楚你想用這個數據庫做什麼以及你想如何報告它。 Wraith的回答是有道理的,直到你想得到一個電影標題的報告,並在其旁邊列出所有流派,然後它變成一個轉位查詢並變得混亂。因此,在確定存儲數據的最佳方式之前,您需要弄清楚您的主要關注點。 –

+0

我最終希望能夠使用Excel的迴歸和關聯公式來查找我觀看的電影類型,給予這些電影的評級以及電影在IMDb上收到的評級之間的關係。我想我可以離開我的模型「流派」,但我有興趣解決數據庫上的這個問題。我在尋找一個查詢來自動化這個過程。我同意我不希望擁有與電影類型數量相同的實例數量。 – WalkerS

回答

0

關於解決方案的一些注意事項。

流派

ID Genre 
1 Action 
2 Adventure 
3 Thriller 
4 War 

的導入表

Const GenreList 
tt00 Action, Adventure, Thriller, War 

查詢的表

SELECT ti.Const, ti.GenreList, tg.Genre 
FROM Imports as ti, Genres as tg 
WHERE ti.GenreList Like "*" & tg.Genre & "*" 
+0

感謝您的迴應!我會試試看,並回復你! – WalkerS

+0

完美!非常感謝。 – WalkerS

1

基本上,當你有一個一對多的關係,你應該使用一個關係表 在你的情況下,我會建議有3個表:

  1. 電影表:包含了諸如當前表信息,除了流派
  2. 流派表:包含(至少)Id和名稱
  3. Film_Genre表:包含Film_Id,Gen​​reId。

例如

在你的類別表,您的數據將是

row 1: Id =1 , Name = "Crime" 
row 2: Id = 2, Name = drama, 

您Film_Genre表將是這樣的:

row1: Film_Id = tt0068646, GenreId = 1, 
row2: Film_Id = tt0068646, GenreId = 2 
row3: Film_Id = tt0082971, GenreId = 2 

等等 (我假設你使用「const」列作爲電影表的ID,如果不是,你應該有自己的ID)

當然,需要花費一點努力才能將當前數據庫轉換爲該數據庫。

+0

謝謝你的迴應!這種結構是有道理的,但我想我的問題是我如何做到這一點,而不必手動添加每個這些? – WalkerS