最初のパラダイム1NF
テーブル内のデータのすべてのフィールドは不可分原子値です。
create table student(
id int primary key,
name varchar(20),
contact varchar(30)
);
---contact字段是可以拆分的
insert into student values(1,'张三','8159758,17625364718');
insert into student values(2,'李四','6547621,18743627162');
insert into student values(3,'王五','1253512,13345671243');
連絡先フィールドは固定電話や携帯電話に分けることができ、それが最初のパラダイムを満たしていません。最初のパラダイムは、それは、要件を満たしていないリレーショナルデータベースではありません。
しかし、ちょうど最初のパラダイムを満たすために、存在します、データの冗長性が大きすぎ、異常な挿入、削除の異常、異常な変更で問題が。次の表の例を示します。
第二に、第2正規形2NF
まず前提パラダイムは、第二のパラダイムの要件を満たさなければならない主キーに加えて、各列が主キーに完全に依存しなければなりません。あなたは完全に依存して表示したくない場合は、それが唯一の共同主キーの場合に発生する可能性があります。
---订单表
create table myorder(
product_id int,
customer_id int,
product_name varchar(20),
customer_name varchar(20),
primary key(product_id,customer_id)
);
質問:のみのみに関連する唯一の製品関連および製品ID、顧客名、顧客名が名前フィールド主キーの一部に依存している、それは第二のパラダイムを満たしていません。
それは第二のパラダイムと一致するようにテーブルを分割するには。
---拆表后均完全依赖主键
create table myorder(
id int primary key,
product_id int,
customer_id int
);
create table product(
id int primary key;
name varchar(20)
);
create table customer(
id int primary key;
name varchar(20)
);
第三に、第3正規形3NF
第二のパラダイム、満たさなければならない他の主キー列間の依存関係が転送できませんすなわち、互いに独立。
create table myorder(
order_id int primary key,
product_id int,
customer_id int,
product_name varchar(20)
);
product_name
そしてまた、product_id
私たちは、依存関係を持っているので、第三のパラダイムを満たしていません。