一千萬個為什麽

搜索

mySQL和一般數據庫規範化問題

我對規範化有疑問。 假設我有一個處理歌曲的應用程序。

首先,我想到這樣做:

Songs Table:
id | song_title | album_id | publisher_id | artist_id

Albums Table:
id | album_title | etc...

Publishers Table:
id | publisher_name | etc...

Artists Tale:
id | artist_name | etc...

然後我想到規範化的東西。我想我應該擺脫歌曲表中的“album_id,publisher_id和artist_id”並將它們放在像這樣的中間表中。

Table song_album:
song_id, album_id

Table song_publisher
song_id, publisher_id

Table song_artist
song_id, artist_id

現在我無法確定哪種方式更好。我不是數據庫設計方面的專家,所以如果有人指出正確的方向。太棒了。

兩種方法之間是否存在任何性能問題?

謝謝

最佳答案

忘記性能問題。問題是這個模型是否正確表示數據?

中間表稱為“聯結表”,當您可以擁有多對多關系時,它們非常有用。例如,如果您在數據庫中存儲歌曲“We Are the World”,那麽您將擁有許多該歌曲的藝術家。每個藝術家也負責創作許多其他歌曲。因此,要正確表示數據,您必須使用聯結表,就像在第二個版本中一樣。

轉載註明原文: mySQL和一般數據庫規範化問題