Sql-third-normal-form

提供:Dev Guides
移動先:案内検索

データベース-第3正規形(3NF)

次の条件が満たされている場合、テーブルは第三の標準形式にあります-

  • 2番目の標準形式です。
  • すべての非プライマリフィールドは、プライマリキーに依存しています。

これらの非プライマリフィールドの依存関係はデータ間です。 たとえば、次の表では、通りの名前、都市、州が郵便番号に完全にバインドされています。

CREATE TABLE CUSTOMERS(
   CUST_ID       INT              NOT NULL,
   CUST_NAME     VARCHAR (20)      NOT NULL,
   DOB           DATE,
   STREET        VARCHAR(200),
   CITY          VARCHAR(100),
   STATE         VARCHAR(100),
   ZIP           VARCHAR(12),
   EMAIL_ID      VARCHAR(256),
   PRIMARY KEY (CUST_ID)
);

郵便番号と住所の依存関係は、推移的依存関係と呼ばれます。 3番目の標準形式に準拠するために必要なことは、Street、City、およびStateフィールドをそれぞれ独自のテーブルに移動することです。これは、郵便番号テーブルとして呼び出すことができます。 −

CREATE TABLE ADDRESS(
   ZIP           VARCHAR(12),
   STREET        VARCHAR(200),
   CITY          VARCHAR(100),
   STATE         VARCHAR(100),
   PRIMARY KEY (ZIP)
);

次のステップは、以下に示すようにCUSTOMERSテーブルを変更することです-

CREATE TABLE CUSTOMERS(
   CUST_ID       INT              NOT NULL,
   CUST_NAME     VARCHAR (20)      NOT NULL,
   DOB           DATE,
   ZIP           VARCHAR(12),
   EMAIL_ID      VARCHAR(256),
   PRIMARY KEY (CUST_ID)
);

推移的な依存関係を削除する利点は、主に2つあります。 まず、データの複製の量が減るため、データベースが小さくなります。

2番目の利点は、データの整合性です。 複製されたデータが変更されると、特にデータベース内のさまざまな場所に分散している場合、一部のデータのみを更新する大きなリスクがあります。

たとえば、住所と郵便番号データが3つまたは4つの異なるテーブルに保存されている場合、郵便番号の変更はそれらの3つまたは4つのテーブルのすべてのレコードに反映する必要があります。