資料表三大設計正規化

2021-09-19 14:41:05 字數 1475 閱讀 8475

第一正規化

inf資料表中所有欄位都是不可分割的原子值

create table student2(

id int primary key,

name varchar(20),

address varchar(30)

)insert into  student2 values(1,"li","四川省成都市武侯大道100號")

字段值還可以繼續拆分,就不滿足第一正規化

create table student4(

id int primary key,

name varchar(20),

cuntry varchar(30),

privence varchar(30),

city varchar(30),

details varchar(30)

)insert into student4 values(1,"li","中國","四川省","成都市","武侯大道100號")

正規化設計越詳細 ,對於某些基本操作可能更好,但是不一定都是好處

第二正規化

必須滿足第一正規化的前提下,第二正規化要求 ,除主鍵外的每一列都必須完全依賴與主鍵

如果要出現不完全依賴,只可能發生在聯合主鍵的情況下

建立乙個訂單表 :

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 myorder1(

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)

)第三正規化

3nf必須先滿足第二正規化,除開主鍵列的其他列之間不能有傳遞依賴關係

create table myorder5(

order_id int primary key,

product_id int,

customer_id int

)create table customer5(

id int primary key,

name varchar(20),

phone varchar(15)

MySQL資料表設計,三大正規化

個人筆記,僅供參考 三大正規化即三個建立資料表的準則,根據自己的實際需求決定是否遵守即可 資料表中的所有欄位都是不可分割的原子值 例如乙個位址資訊,如果全部存在乙個欄位中就不符合第一正規化,需要把國家,省份這些資訊盡可能拆分到不同欄位才滿足。這樣可以方便以後檢索。舉例 create table st...

mysql筆記三 資料表三大設計正規化

1nf 資料表中的所有欄位都是不可分割的原子值 mysql create table student2 id int primary key,name varchar 20 address varchar 30 mysql insert into student2 values 1 張三 中國江蘇省...

(Mysql 八)資料表設計的三大正規化

目錄 基礎知識 一 第一正規化 每一列都是不可分割的原子資料項 存在問題 二 第二正規化 在第一正規化的基礎上,非碼屬性必須完全依賴於碼 三 第三正規化 在第二正規化的基礎上,消除傳遞依賴 四 表與表之間的對應關係 1.多對一 2.多對多 設計資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,...