2012-02-10 259 views
4

我需要一些幫助爲MySQL中的音樂數據庫建立一個或多個表。我不確定如何將這些信息放在表格中。音樂庫MySQL數據庫

這是我想要存儲在數據庫中的信息。

Artist Name 
Album Name 
Release Date 
Genre 
Picture URL (album artwork) 

Track Number 
Trank Name 
Track Playtime 
Lyric (optional, But would like to have it someday) 

etc. 

基本上任何與組織數字音樂有關的東西。我是數據庫新手,我有一些想法。但如果我要學習,我不妨學習正確的做法。

任何關於如何設計我的表的想法都會很棒。

回答

12

像這樣的東西將是很好的開始。它爲藝術家,專輯(帶有藝術家和流派的關鍵詞),曲目(鍵入專輯)和流派指定了一張表格。

Table artists 
---- 
id (primary key), 
name 
description 
years_active 
otherinfo (whatever you need) 

Table albums 
---- 
id (primary key) 
artistid (foreign key to artists table) 
name, 
releasedate 
genreid (foreign key to genres table) 
picture 

Table tracks 
---- 
id (primary key) 
albumid (foreign key to albums table) 
name 
override_artist (overrides album artist if not null) 
playtime 
lyric 
otherstuff as needed 

Table genres 
---- 
id (primary key) 
name 
description 
+1

這假設一張專輯中的所有曲目共享一位藝術家,但情況並非總是如此。 – Umbrella 2012-02-10 20:17:00

+0

@傘這是真的,並與每個軌道上的補充藝術家解決... – 2012-02-10 20:22:01

+1

真棒,這是我正在尋找的答案。我是使用php和mysql編程的新手。所以,學習如何以正確的方式建立一張桌子是一個很好的開始。謝謝回覆。 – Throdne 2012-02-19 15:31:36

2

我建議以下數據庫結構:

artist { id, name } 
genre { id, name } 
album { id, name, artist_id, release_date, genre_id, picture_url } 
track { id, album_id, number, name, playtime, lyrics } 
1
Artist (ArtistID INT PRIMARY KEY, ArtistName) 
Genre (GenreID TINYINT PRIMARY KEY, GenreDescription) 
Album (AlbumID INT PRIMARY KEY, ArtistID INT, GenreID INT ReleaseDate) 
AlbumArt (AlbumArtID INT PRIMARY KEY, AlbumID INT, AlbumArtPath) 
Track (AlbumID INT, TrackNumber INT, TrackName, PlayTime, Lyrics , PRIMARY KEY (AlbumID, TrackNumber)) 
0

數據庫原理是關於鋪設表和建立這些表之間的關係。

你已經發現了許多表考生:曲目,藝術家,專輯

然後,你需要的關係:藝術家可以有很多的專輯,這張專輯可以有許多曲目。

通過這幾個簡單的表格和關係,您已經擁有了一個小型數據庫。

0

結賬http://www.freedb.org/en/。以前是cddb.org,它是一個免費的音樂數據庫。你可以從他們的一個鏈接下載整個數據庫,看看他們是如何做到的。

+1

真棒的東西。我有機會在我的週末看這個,我有一個問題,我看起來像10,11,12的CD,它沒有記錄它們。所以,在一張有20首曲目的CD中,它停在了11ish。看看我在說什麼。也許我做錯了什麼。但是,感謝您的回覆,我可能會在我的程序中使用它。我正在爲我的音樂收藏建立一個數據庫,並將其與我的需求進行比較。 – Throdne 2012-02-19 15:35:45