2012-02-19 65 views
1

我想知道在mysql數據庫中存儲音樂「Lyrics」的最佳方式是什麼。以及用於此的設置是什麼。另外,我希望桌子能夠存放休息線。將歌詞存儲在MySQL數據庫中

我正在考慮使用「|」指示一個新行並使用php來替換字符串。

我不知道從哪裏開始,或需要使用什麼參數(VARCHAR,INT(我知道這不會是int),等等)

目前,我有我的曲目表佈局像這樣

table tracks 
---- 
id (int, 10, primary key) 
albumid (foreign key to albums table) 
name (varchar, 50) 
override_artist (overrides album artist if not null) 
playtime (int, 5) 
lyric (??????) 

任何想法都會很棒。

+1

最簡單的方法是使用「文本」。它也將存儲您的linebreaks罰款,所以不需要轉換它們。 – kapa 2012-02-19 15:55:33

+0

儲存它們是很容易的部分。你想如何**使用它們,一旦它們被存儲(例如你是否需要搜索每一行前綴,或者單個單詞,你是否需要修改它們等等)?預期的使用經常驅動數據庫模型。 – 2012-02-19 16:28:58

回答

4

你的歌詞欄應該是TEXT type,你應該,如果你tracks表使用InnoDB引擎(其中新安裝在默認情況下這樣做)可能存儲在鍵入到tracks臺單獨的MyISAM表。這將使你在文本列做全文搜索:

表歌詞:

CREATE TABLE lyric (
    lyricid INT PRIMARY KEY NOT NULL AUTO_INCREMENT, 
    /* foreign key to tracks.id */ 
    trackid INT, 
    lyric TEXT, 
    FOREIGN KEY (trackid) REFERENCES tracks (id) 
) ENGINE=MyISAM; 

您可以將換行符簡單地存儲在歌詞作爲普通的老換行符。您不需要在數據庫中替換它們。相反,在輸出爲HTML格式時,您可以將它們轉換爲<br />(在PHP中,這是通過nl2br()完成的)。換句話說,如果您將文本輸入到具有換行符的數據庫中,請不要專門對待它們。他們會很好地工作。

+1

真棒的東西,謝謝你的回覆。這真的幫助了我的問題。我從來不知道nl2br(),我將不得不看看如何正確使用該功能的PHP頁面。再次感謝。 – Throdne 2012-02-21 00:26:17

1

我會選擇一個TEXT列並存儲新行,就像它們一樣 - 這在MySQL表中是完全有效的。