我是PHP和MySQL的新手。對於我的項目,我想爲歌詞製作一個網站。如何設計數據庫和關係?歌詞網站的數據庫設計
這是我到目前爲止有:
藝術家
- Artist_id
- 這位演出
- Artist_bio
- Artist_thumb
個相冊
- Album_id
- Artist_id
- Genre_id
- ALBUM_TITLE
- RELEASE_YEAR
流派
- genre_id
- GENRE_NAME
曲目
- track_id
- TRACK_TITLE
- album_id
請讓我知道,如果我WR翁。
我是PHP和MySQL的新手。對於我的項目,我想爲歌詞製作一個網站。如何設計數據庫和關係?歌詞網站的數據庫設計
這是我到目前爲止有:
藝術家
個相冊
流派
曲目
請讓我知道,如果我WR翁。
我強烈建議WWWSQLDesigner來設計你的數據庫。 brianreavis提到的準則非常值得傾聽。始終使用正確的拼寫,使用一致的語法,大小寫和下劃線(_)。您也可以考慮使用關係表添加多個流派。
album_genre (id int, album int, genre int)
對於專輯或藝術家圖片,我建議您將它們保存到與其相關的ID的文件夾中。注意,
id = 14
artist = 42
title = Mask And Mirror
year = 1994
thumbnail: /thumbnails/album-14.jpg
我可能會再添加一個關於WWWSQLDesigner的東西,它也會從您的設計中生成表格創建查詢。它是一個非常方便的工具。您可以在幾分鐘內爲您的網站設置它。 – 2009-09-18 06:29:41
感謝WWWSQLDesigner它使生活更輕鬆 – sunidhi 2009-09-18 06:48:41
如何爲專輯提供單獨的表格以及定義所有其他表格之間關係的公用表格?
錯誤...單個關係表?請問爲什麼? – 2009-09-18 06:15:02
更多的外鍵引用可能會導致問題......我認爲這可以簡化數據庫方案。 – 2009-09-18 06:18:44
較少的關係表使外鍵約束變得不可能,而我認爲這會導致更多的問題。單個關係表將如何建立? ''關係'與'column1'和'column2'?可讀性如何加入?我寧願爲每種類型的關係都有一張桌子,而不是有更少的桌子。它將使數據庫模式具有更多的部分,但它會使它不那麼複雜。 – 2009-09-18 06:22:24
與您的 表名是單數還是複數是一致的。我的偏好是單數的,因爲那時你在進行多表查詢時,可以將列簡單地稱爲「track.id
」,而不是「tracks.id
」。
確保所有表格和字段 的名稱拼寫正確(即 「流派」);這是後來改變的一種痛苦。
最後,我不會建議在列名前添加父表名。這只是多餘的。
藝術家
專輯
流派
軌道
我正在寫一個類似的迴應;這個人是對的。 – 2009-09-18 06:14:42
最後但並非最不重要的:有一個地方把實際的歌詞! – 2009-09-18 06:15:45
+1單數/複數表命名的事情是困難的 - 是的,你可以做'track.id',但你也''選擇*從軌道',這自然不如'從軌道'選擇*在我看來。 – 2009-09-18 06:16:16
你的設計看起來相當不錯。一些額外的表,你可能要添加:
你可以添加其他字段軌道表。例如:
你應該問自己一些重要的問題而設計
您的設計可能是相當的下降,可能會很好地工作爲您的要求,但是這取決於你是多麼複雜的多少願意來處理,你可能要照顧的東西,如:
我可以看到更多的東西可能會導致你後來的問題,但正如我所說,我不知道你的要求範圍是什麼! :)
這裏是我現在做的 我增加了一個字段作爲Artist_type知道它的歌手或作家。 現在我不知道如何解決多個藝術家的事情。 1首歌曲由許多歌手唱歌或由2名或以上作家撰寫 – sunidhi 2009-09-18 08:40:57
如果藝術家既是歌手又是作家? :)如果你開始設計並考慮需求,你會遇到很多問題。我建議,您首先要確定您的需求範圍,例如您的網站提供的所有信息等等。一旦您完成設計,您將可以更輕鬆地進行設計。目前你正試圖擊中一個移動的目標。 – 2009-09-18 09:42:03
我可以將歌曲的作者存儲在另一個表格中嗎?如果歌曲有不同的作者,那麼它會在作家表格中創建一個記錄,如果不是,它會使用與artrist相同的名字...如果我不那麼會對我產生混亂 – sunidhi 2009-10-10 22:10:26
您正在幾個地方混合多種不同類型的對象 - 例如,它看起來像是在嘗試創建適用於專輯,藝術家和曲目的單個rating
表。仔細考慮是否可以更容易地爲三種不同類型的評級分配三個表格。
同樣的事情發生在comment
。此外,在該表格上,您當前的結構(在專輯,藝術家或曲目上擁有一個comment_id
)似乎將每種類型的對象限制爲僅具有一條評論,這是沒有意義的。
對於genre
,type
和thumb
,考慮將這些表內聯到父對象中。舉個例子,在多個藝術家之間共享一個單獨的拇指排是否合理?或者,如果讓每個藝術家都直接存儲一條thumb
路徑,會更容易嗎?
最後,對於您繪製的所有關係,您需要定義關係的基數。對於每一個,定義哪個表引用另一個表,並且一個表中的「多少」行可以存在於另一個表中的另一個表中。例如,album
和track
之間的關係是一對多的關係,因爲每個專輯包含多個曲目,但每個曲目屬於一個專輯。使用諸如「crow's foot notation」的記號來表示這些信息。
看起來不錯。除「流派」拼寫「流派」外,不包含「一般」。 – 2009-09-18 06:04:39
除了事實上你已經把「流派」誤以爲「genere」,而你似乎沒有地方可以存儲歌詞來追蹤歌詞,後者在歌詞網站中似乎是一個相當基本的缺陷...... – 2009-09-18 06:05:16
其實這是多米尼克的一個好點! :) – 2009-09-18 06:12:29