2017-04-18 78 views
0

我有一個數據庫,處理圖像和相冊和專輯類別。mySQL父,子模型和默認值

一張專輯可以有多個專輯(subalbums),它只有1層深。

一張專輯僅分爲一個專輯類別。

在這裏做了一些研究,我相信最合適的數據庫模型是這樣的一個

album_category (album_category_id, name, description, position) 

album (
    album_id, 
    album_category_id, 
    parent_album_id, 
    name, 
    description, 
    cover_filename, 
    position 
) 

enter image description here

我做了幾件事情是我不知道的。我需要你的專業知識。

  1. 當專輯parent_album_id是空的(這意味着它不是一個subalbum),默認值是零。這可以嗎?我可以選擇檢查Allow NULL並將其設置爲空。這是更好的解決方案嗎?

  2. 如果專輯是一個subalbum,parent_album_id設置爲有效的album_id。但是,我如何處理​​這個子集呢?我是否將它設置爲null或0?我是否將其設置爲parent_album_id引用的​​?

回答

1

對於你的第一個問題,我寧願0超過null,因爲你不必爲null設置特殊處理。由於album_id是自動增量,因此有效的album_id永遠不會爲零。

對於你的第二個問題,如果是這樣的話,那麼爲子專輯設置一個類別ID的好處就是你可以將它設置爲不同的類別。我會默認爲相同的類別,或者爲null。空將是一個「特例」,這意味着它使用父類的類別。如果爲null,則在您的查詢中,您可以從其父項中獲取該類別,這樣,如果父類別發生更改,那麼子專輯的類別也會更改,而不必在更新父項時更新任何子專輯。

+0

因爲你提到的所有原因,使這個subalbum的album_category_id爲空很有意義。謝謝 – Marco

1

對於你的第一個問題,任一個都可以工作。但是,只有當有效的parent_album_id不能爲零時,零纔有效。

對於第二個問題,我認爲你必須弄清楚該專輯的類別。album_category_id與album_id和parent_album_id無關,除非你決定連接它們。