正規形式 (NF): リレーショナル データベースを設計する場合、さまざまな規範要件に従って、さまざまなパラダイムが異なる仕様で提示されます。パラダイム データベースの冗長性が高くなります。小さくなるほど小さくなります。ただし、冗長性を減らすために盲目的にパラダイムを追求すると、実際にデータの読み取りと書き込みの効率が低下する場合があります。このときは、パラダイムを逆転して、時間を引き換えにスペースを使用する必要があります。データテーブルのテーブル構造が、ある設計基準のレベルに準拠しているかどうかを大まかに理解できます。
仕入と販売は購入数量、購入単位、販売単位、販売数量などにさらに分割できるため、上記は最初のパラダイムに適合しません。以下は最初のパラダイムに適合します。
3NF
さまざまな制約
NULLではありません
非 null 制約、この列の値が NULL であることが許可されるかどうか、ここで非常に重要なことが 1 つあります。指定されていない場合、多くのフィールド (時間を除く) のデフォルト値は NULL になるため、NULL=NULL を除く他の値は""、0 などは NULL に等しくありません。
フィールドを NOT NULL に変更します:
リーリーここで別の問題が発生します。デフォルト値は NULL ですが、フィールドが挿入されるように指定されていないからです。 リーリー
ユーザー名列の値が null 文字であり、そのデフォルト値が NULL であることがわかります。
logipのデフォルト値はNULLですが、NULL値の挿入が許可されているため、ここではNULL値が表示されます。
リーリー
は複数の null にすることができます。同じテーブルに複数の 一意制約 (複数の列を結合する制約) を含めることができます。一意制約を作成するときに、一意制約名を指定しないと、デフォルトでカラム名と同じ名前になり、MySQL はデフォルトで一意制約のカラムに一意のインデックスを作成します。
一意の制約を追加します:リーリー
一意制約 + 非 null 制約 の組み合わせに相当します。主キー制約列では、重複または null 値が許可されません。複数の列を結合する主キー制約の場合、これらの列のいずれも null 値を持つことは許可されず、結合された値を繰り返すことは許可されません。各テーブル には最大で 1 つの主キー のみが許可されます。主キー制約はカラム レベルまたはテーブル レベルで作成できます。主キー制約を作成する場合、システムは常に PRIMARY になります。列とそれが配置されているテーブルの組み合わせに対応する一意のインデックスを作成します。
操作は次のとおりです:リーリー
1 つまたは 2 つのテーブル間の参照整合性を確保します 。外部キーは、 1 つのテーブルの 2 つのフィールドまたは 2 つのテーブルの 2 つのフィールド間の参照関係に基づいて構築されます 。 つまり、スレーブ テーブルの外部キー値がマスター テーブル内に存在するか、空である必要があります。マスター テーブルのレコードがスレーブ テーブルによって参照される場合、マスター テーブルのレコードは削除されません。データを削除する場合は、まずスレーブ テーブルを削除する必要があります。テーブル内のデータはレコードに依存します。その後、メイン テーブルのデータを削除することもできます。別の方法は、サブテーブルのデータをカスケード削除することです。テーブル。
注: 外部キー制約の参照列は、メイン テーブルの主キーまたは一意キー制約の列のみを参照できます。参照されるメイン テーブルの列が唯一のレコードではないため、テーブルから参照されるデータは次のようになります。同じテーブルに複数の外部キー制約がある可能性があります。
それでは、ユーザーのグループ情報を記録するための GROUP テーブルを作成しましょう。
リーリー
リーリー
//外部キーを追加しますリーリー
//外部キー制約を検証するリーリー
//空にすることもできますが、参照テーブルにない値にすることはできませんリーリー
外部キーの定義:リーリー
次のカスケード操作には注意が必要です:ON DELETE CASCADE: 親 (参照) テーブルの行を削除するときに、削除された親行に依存する子テーブルが子テーブルにある場合、子行も一緒に削除されます。これはお勧めできません。
ON DELETE SET NULL: 親 (参照) テーブルの行を削除するときに、削除された親行に依存する子テーブルが子テーブルにある場合、その子行は削除されませんが、子の外部キー列は削除されます。行は NULL に設定されます
リーリー
例: ユーザー名の長さが 0 より大きいかどうかを確認しますリーリー
これは非常に役に立たないようです。通常、データの判断はビジネス層で行われ、データベースはデータを保存するだけで済みます。以上がMariadb 学習の要約 (5): データベース テーブルの制約と 3 つのパラダイムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。