資料庫三大正規化:第一正規化(1nf)、第二正規化(2nf)、第三正規化(3nf)
第一正規化1nf:資料表中的所有欄位都是不可分割的原子值
--資料表 1
create
table student2(
id int
primary
key,
name varchar(20
),address(30)
);
**向資料表中插入資料**
insert into student2 values(1,'張三','河南四川成都市武侯區武侯大道110號');
insert into student2 values(2,'李四','河南四川成都市武侯區武侯大道100號');
insert into student2 values(3,'王五','河南四川成都市武侯區武侯大道90號');
資料表1中的,位址字段值還可以繼續拆分的,就不滿足第一正規化
--資料表 2
create
table student3(
id int
primary
key,
name varchar(20
),cuntry varchar(20
),privence varchar(20
),city varchar(20
));
**向資料表中插入資料**
insert into student3 values(1,'張三','中國','四川','成都');
insert into student3 values(2,'李四','中國','河南','信陽');
insert into student3 values(3,'王五','中國','湖北','武漢');
資料表 2,表中每個字段,都不可再分,所以滿足第一正規化
正規化,設計的越詳細,對於某些操作可能更好,但是不一定都是好的
第二正規化:滿足第乙個正規化的前提下,第二正規化要求,除主鍵外的每一列都必須完全依賴與主鍵,如果要出現不完全依賴,只可能發生在聯合主鍵的情況下。
--訂單表:
create
table moorder(
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
));
第三正規化:必須先滿足第二正規化,除開主鍵列其他列不能有傳遞依 MySQL 03 建立和管理表
use 資料庫名 shwo databases create database 資料庫名 drop database 資料庫名 int 整數。使用4個位元組儲存 char size 定長字元。若未指定,預設長度1個字元 varchar size 可變長字元。根據字串的實際長度儲存,最長為指定長度。注...
MySQL 03(建立資料庫)
我們可以在登陸 mysql 服務後,使用 create 命令建立資料庫,語法如下 create database 資料庫名 以下命令簡單的演示了建立資料庫的過程,資料名為 runoob root host mysql u root p enter password 登入後進入終端 mysql cre...
濃墨重彩之MySQL 03 資料操作
一 插入資料 1,給表的所有字段插入資料 格式 insert into 表名 values 值1,值2,值3,值n 2,給表的指定字段插入資料 格式 insert into 表名 屬性1,屬性2,屬性n values 值1,值2,值n 3,同時插入多條記錄 insert into 屬性列表 valu...