これは非常に基本的なデータベース設計/正規化の質問です。
Books次の列を持つテーブルがあるとします。
isbn|title|author|status
、、、のstatusいずれかになりますchecked out(整数として格納されます)。availableoverduelost
行を追加するときに、「実際には、ステータスがのときに、checked out別のフィールドを保存したい」と判断しますdue_date。このフィールドは、ステータスがチェックアウトされている書籍にのみ保存します。それ以外の意味はありません。
これを行うための標準的で正しい、標準的な方法は何ですか?
1つのアプローチは、列を追加しNULLてステータスがそうでない場合に設定することですchecked outが、これは私には悪い考えのように聞こえます(特に、ステータスがavailableあり、ステータスがある場合はどうなりますdue_dateか?)
もう1つの明白な答えは、テーブルを作成してペアDueDatesを格納することです。これは私が通常採用しているアプローチですが、テーブルやsがいたるところにあるisbn|due_dateことになりがちです。JOIN
私は本を具体的に保管する方法を探していません。それは問題の単なる例であり、標準的な解決策を知りたいです。
編集:ステータスのみ(、、、、 ...)のフィールドをたくさん追加し、ステータスがそうでないかのようにこれらすべてを追加したい場合、答えは変わりますか?checked outdue_dateborrowed_bychecked_out_fromNULLchecked out
