2017-04-18 7 views
0

私は、画像、アルバム、アルバムのカテゴリを扱うデータベースを持っています。mySQL親モデル、子モデル、デフォルト値

1つのアルバムは複数のアルバム(サブアルバム)を持つことができ、1レベルしかありません。

1つのアルバムは1つのアルバムカテゴリにのみ分類されます。

はここにいくつかの研究を行なったし、私が最も適切なデータベースモデルは私がのわからない物事のカップルをしたこの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をチェックしてデフォルトのnullにするオプションがあります。それはより良い解決策ですか?

  2. アルバムがサブアルバムの場合、parent_album_idは有効なalbum_idに設定されています。しかし、サブアルバムのために私は​​でどうしますか?それをnullまたは0に設定しますか? parent_album_idで参照されている​​に設定していますか?

答えて

1

第1の質問では、nullに対して特別な処理を設定する必要がないため、nullよりも0を好むでしょう。 album_idは自動インクリメントであるため、有効なalbum_idはゼロになることはありません。

2番目の質問では、サブアルバムのカテゴリIDを持つことの美しさは、そうした場合に別のカテゴリに設定できることです。私は同じカテゴリ、またはnullにデフォルト設定します。 Nullは親のカテゴリを使用することを意味する "特殊なケース"になります。 nullの場合、クエリで親カテゴリからカテゴリを取得できます。親カテゴリが変更された場合はそのようにカテゴリを取得できます。したがって、親を更新するときにサブアルバムを更新する必要はありません。

+0

subalbumのalbum_category_idをnullにすると、あなたが言及したすべての理由から、多くの意味があります。ありがとう – Marco

1

あなたの最初の質問では、どちらかがうまくいく可能性があります。しかしゼロは、有効なparent_album_idがゼロにならない場合にのみ機能します。

2番目の質問では、アルバムがどのカテゴリにあるのか把握しなければならないと思います。album_category_idは、あなたがそれらを接続することを決めた場合を除き、album_idとparent_album_idには関係しません。

関連する問題