數據庫的三大設計範式

數據庫的三大設計範式

一、第一範式

1、特點:數據表中的所有字段都是不可分割的原字值

	create table student(
		id int primaryy key,
		name varchar(20),
		address varchar(30),
		);

insert into student values(1,‘張三’,‘中國四川省成都市武侯區’);
像這種字段值還可以繼續拆分的就不滿足第一範式

	create table student2(
	id int primaryy key,
	name varchar(20),
	country varchar(20),
	privence  varchar(30),
	city varchar(30),
	);

insert into student2 values(1,‘張三’,‘中國’,‘四川省’,‘成都市’,‘武侯區’);
像這種就接近滿足第一範式。

範式,設計的越詳細,對於某些實際操作可能更好,但是不一定都是好處。

二、第二範式

1、特點:必須是滿足第一範式的前提下,第二範式要求,除主鍵外的每一列都必須完全依賴於主鍵。(如果出現不完全依賴,只可能發生在聯合主鍵的情況下。)

創建訂單表
	create table myorder(
		product_id int,
		customer)id int,
		product_name varchar(20),
		customer_name varchar(20),
		primary key(product_id,customer_id)
		);
像除主鍵以外的其他列,只依賴與主鍵的部分字段,這種就不滿足第二範式。
	
	create table myorder(
		order_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),
		);

像這種,沒有出現聯合主鍵的,就滿足第二範式。

第三範式

1、特點:(1)必須先滿足第二範式。(2)除開主鍵列的其他列之間不能有依賴傳遞關係。

	creat table myorder(
		order_id int primary,
		customer_id   int,
		customer_name varchar(20),
		);

像這種,customer_id,有可能會依賴於customer_name因此,不滿足第三範式。若要滿足第三範式應該對某一個字段新建一個表。

	creat table myorder(
		order_id int primary,
		customer_id   int,
		
		 );
	creat table myorder(
		order_id int primary,
		customer_id   int,
	 
		);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章