2011-07-19 98 views
1

我有一個項目即將到來,需要我存儲有關某些音樂專輯的信息。我想只是一個簡單的相冊表具有以下字段:將專輯曲目列表存儲在數據庫中

| id | name | artist |description| year | 

但我想知道什麼來存儲曲目列表將是最好的方式。我可以在專輯表中有另一個字段,並將曲目列表數據(曲目名稱,曲目運行時間)存儲爲JSON對象或類似內容,然後將其提取出來並在我的應用程序中進行解析,或者可以使用另一個字段表稱爲tracklists具有以下字段:

| id | name | album | runtime | 

並將其拉出基礎上,album場。

你會怎麼做呢?

回答

-2

我會像你說的那樣分解它,並在專輯ID上有一對一的關係。我認爲更清潔...

+0

真的嗎?一對一的關係? –

+0

b我的意思是一對多。 – luckytaxi

4

另一張桌子。

調用專輯字段album_id,並將其設爲外鍵返回專輯表。

基本上,你不想把所有東西都放在一張表中。

這將使操縱跟蹤相關的數據更加困難。因爲它不是原子處理數據。你必須弄亂包含與你想編輯的內容無關的其他數據的整個領域,可能導致數據損壞。

另一個原因是將概念分解成很好的抽象概念,以便將來和其他程序員清楚地理解它。例如我在哪裏去了解軌道?那麼,我去軌道表。我去哪裏操縱專輯?好吧,我去專輯表。

0

你一定要去第二個選項。試想一下如何用json對象搜索曲目。第二張桌子會更容易!

0

可能看起來有點像這樣(未測試)?

CREATE TABLE album 
(   
    album_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,   
    description VARCHAR(400),  
    artist VARCHAR(400), 
    description VARCHAR(400), 
    year_released NUMBER(4), 
); 

CREATE TABLE track 
(   
    track_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    album_id INT,   
    description VARCHAR(100),   
    order_no NUMBER(3), 
    runtime NUMBER(6), 
    INDEX albumfk (album_id), 
        FOREIGN KEY (album_id) REFERENCES album(album_id) 

);