データシートのデザイン - パラダイム

最初のパラダイム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私たちは、依存関係を持っているので、第三のパラダイムを満たしていません。

公開された60元の記事 ウォンの賞賛6 ビュー1207

おすすめ

転載: blog.csdn.net/DLC990319/article/details/105046690