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つのテーブルのすべてのレコードに反映する必要があります。