資料完整性分為:實體完整性,域完整性,參考完整性。
參照完整性指的就是多表之間的設計,主要使用外來鍵約束。
多表設計: 一對多、多對多、一對一設計
一:實體(行)完整性
實體完整性通過表的主鍵來實現。
使用主鍵來表示一條記錄的唯一,且不為空
語法:primary key
主鍵分類:
邏輯主鍵:例如id,不代表實際的業務意義,只是用來唯一標識一條記錄(推薦)
業務主鍵:例如username,參與實際的業務邏輯。
特點:唯一,not null
自動增長:auto_increment
例如:create table person2(
id int primary key auto_increment,
name varchar(100)
二:域(列)完整性
非空約束:not null
唯一約束:unique
creat table person3(
id int not null unique,
name varchar(20) not null unique,
gender varchar(20) not null,
phone char(11) unique #不能有,
三:參照完整性
1,一對多
a:例如:客戶和訂單的關係就是一對多,乙個客戶可以有多張訂單,一張訂單屬於乙個客戶;
b:外來鍵設定到多的一方
語法輸入建立一對多:
建立客戶表:
create table customers(
id int,
name varchar(20),
address varchar(100),
primary key(id)
建立訂單表:
create table orders(
id int,
order_num int primary key,
price float(4,2),
customer_id int,
constraint customer_ord_fk foreign key(customer_id) references customers(id)
注:constraint: 約束,foreign key: 外來鍵,references: 參照
建立乙個名叫customer_ord_fk的外來鍵約束,外鍵指的是customer_id,參照的是 customers表中的id列
**操作建立一對多
customers表
orders表
orders外來鍵設定
建立乙個名叫customer_ord_fk的外來鍵約束,外來鍵字段customer_id,參照的是 customers表中的id列
擴充套件:四種子表的刪除更新策略:
1,cascade 級聯策略:使用此種策略時主表的記錄被刪除或者主鍵欄位被修改時會同步刪除或修改子表
2,no action 無動作策略:使用此種策略時要刪除主表必須先刪除子表,要刪除主表的記錄必須先刪除子表關聯的記錄,不能更新主表主鍵欄位的值
3,restrict 主表約束策略。此種策略對主表的約束跟 no action 一樣
4,set no置空策略。使用此種策略時,如果主表被刪除或者主鍵被更改,則將子表中的外來鍵設定為null。需要注意的是,如果子表的外來鍵是主鍵或者是設定為not null的,則主表的刪除和主鍵的更改跟 no action 一樣
2,多對多
建立老師表:
create table teachers(
id int primary key auto_increment,
name varchar(20) ,
gender char(5),
subject varchar(20)
建立學生表:
create table students(
id int primary key ,
name varchar(20),
age int
第三張為關聯表:
create table teacher_student(
id int,
t_id int,
s_id int,
primary key(t_id,s_id)
constraint teacher_id_fk foreign key(t_id) references students(id),
constrains student_id_fk foreign key(s_id) references teachers(id)
**操作多對多
建立老師表:
建立學生表:
第三張表:
3,一對一
(1)一般情況,設計一張**即可
(2)設計成兩張**
法1:第二張**中建立乙個字段作為外來鍵(設定求唯一 unique)對應第一張**中的主鍵;
法2:直接使用第二張**中的主鍵作為外來鍵,對應第一張**的主鍵。
兩張表:unique很重要
create table user(
id int primary key auto_increment,
name varchar(20),
age int
create table card(
id int primary key auto_increment,
num varchar(20) not null,
address varchar(100) not null,
user_id int unique,
constraint user_card_fk foreign key(user_id) references user(id)
詳解MySQL 資料完整性
參照完整性指的就是多表之間的設計,主要使用外來鍵約束。多表設計 一對多 多對多 一對一設計 一 實體 行 完整性 實體完整性通過表的主鍵來實現。使用主鍵來表示一條記錄的唯一,且不為空 語法 primary key 主鍵分類 邏輯主鍵 例如id,不代表實際的業務意義,只是用來唯一標識一條記錄 推薦 業...
mysql 域完整性 Mysql之資料完整性約束
mysql之ddl操作 四 資料完整性約束 實體完整性 域完整性 引用完整性 自定義完整性 1 實體完整性 主鍵約束 唯一約束 主鍵自增 1 主鍵約束 特點 唯一的,不能為空 關鍵字 primary key 新增約束語法 alter table 表名 add constraint 約束名 prima...
MySQL資料完整性(實體完整性 域完整性)
資料完整性 為保證插入到資料庫中的資料是正確的,防止使用者輸入錯誤的資料 分為實體完整性 域完整性 參照完整性 下節再說 1 實體完整性 實體指的是表中的一行,一行記錄對應乙個實體 通過主鍵實現 主鍵 關鍵字 primary key 特點 不能為null,並且唯一。邏輯主鍵 推薦 例如id,不代表實...