次のように、2つの列に親子関係を持つ「メモ」を表すデータベーステーブルを作成しています。
ID INT(10) PK NOT NULL UNSIGNED ZEROFILL AUTOINCREMENT -- Primary key
parent_ID INT(10) UNSIGNED ZEROFILL -- References Primary key
username VARCHAR(30) NOT NULL
information VARCHAR(256) NOT NULL
comment VARCHAR(256) NOT NULL
ここusername
で、はテーブルへの外部キー、user
はメモを書いた人のユーザー名、はメモにinformation
含まれる情報、は追加されたcomment
ものです。常に何かが含まれ、前のユーザーと同じである必要はありません。username
comment
コンセプトは、誰かがメモを「コピー」して自分のコメントを付け、「このメモはxxxから取得した」と言うことができるため、親子関係になります。おそらく、Facebookで共有するのと少し似ています。
parent_ID列を正しく形成するにはどうすればよいですか?識別関係を使用する必要があります。どちら側が必須ですか?5人が同じメモをコピーできるので、これは1対多の関係でなければならないと思います。
新しいメモを作成するよりもコピーが多いと予想されるためNULL
、レコード内のの数は比較的少なくなりますが、nullを完全に取り除くには、制約を適用して、本質的に無意味なレコードを持つNOT NULL
デフォルトの親を作成する必要があります。0
でID 0
、ソフトウェアでこれに注意しますか?
これも正しい方法ですか?次の2テーブルシステムを採用する必要があります。
ID INT(10) PK
information VARCHAR(256)
orig_user VARHCAR(30) FK -- Potentially
と
ID INT(10) PK FK
username VARCHAR(30) PK FK
comment VARCHAR(256)
定義によって可能なものを排除するNULL
のはどれですか?
ありがとう