我有一個藝術家實體。一位藝術家最多可以有3張照片(最少一張),一張帶有標題的歌曲。如何爲藝術家實體存儲3張圖片和一首歌曲?
所以我的第一個想法是存儲照片登在一個單獨的表圖片與ID,artist_id,路徑。
和歌曲存儲在宋實體ID,artist_id,路徑,標題
但另一個想法將這些媒體在媒體表存儲與ID,artiste_id,圖片1, picture2,picture3,path_song,title_song。
這樣做的最佳方法是什麼?
任何幫助將是偉大的!
我有一個藝術家實體。一位藝術家最多可以有3張照片(最少一張),一張帶有標題的歌曲。如何爲藝術家實體存儲3張圖片和一首歌曲?
所以我的第一個想法是存儲照片登在一個單獨的表圖片與ID,artist_id,路徑。
和歌曲存儲在宋實體ID,artist_id,路徑,標題
但另一個想法將這些媒體在媒體表存儲與ID,artiste_id,圖片1, picture2,picture3,path_song,title_song。
這樣做的最佳方法是什麼?
任何幫助將是偉大的!
那麼,建立當前要求的最精確方法是將3張圖片和1首歌曲直接作爲字段存儲在藝術家表格中。在這種情況下,很少需要垂直分割藝術家並製作單獨的媒體表格。
唯一的問題是:你肯定你將永遠不會需要超過3張圖片和超過一首歌?如果沒有,做了第一種方法,但我修改它以下列方式:
CHECK (PICTURE_NO BETWEEN 1 AND 3)
CHECK (SONG_NO = 1)
相結合的identifying relationships並檢查確保所需最大值感到非常榮幸。如果您需要增長,請修改(或完全刪除)CHECK。
不幸的是,最低(至少一個畫面和歌曲的存在)不能在這種模式保證,至少在沒有訴諸推遲循環引用,這可能是更多的麻煩比他們的價值,即使你DBMS支持它們。
當然,在現實生活中,可能有多個藝術家參與一件藝術品。你確定這種關係是1:N而不是N:N?
非常感謝您的詳細和明確的答案。我非常感激。是的,它確定這種關係是1:N,因爲它是一場比賽,他們不能參加另一位藝術家的藝術作品。再次感謝! – Reveclair 2013-02-14 09:29:35
從數據庫規範化的角度來看,你的第一個想法是更好的。
以較容易的爲準。但我更喜歡第一個。 – DarthVader 2013-02-12 11:50:12