2012-02-10 263 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