MYSQL資料完整性

2021-10-10 03:41:25 字數 1811 閱讀 5254

是指儲存在資料庫中的資料,應該是保持一致性和可靠性

關係模型允許定義三類資料約束,他們是 實體完整性、參照完整性以及使用者定義的完整性約束,其中前兩種完整性約束由關係資料庫系統自動支援

實體完整性:實體就是現實世界中的某個物件,rdbms中一行代表乙個實體。實體完整性就是保證每個實體都能被區別

例如:使用者資訊不完整。缺少資料

域完整性:域完整性主要是對列的輸入有要求,通過限制列的資料型別、格式或值得方式來實現

參照完整性:主要是表與表直接的關係,可以通過外來鍵來實現

使用者自定義完整性:借助儲存過程和觸發器實現

實體完整性:

​ 要求每張表都有唯一識別符號,每張表中的主鍵字段不能為空且不能重複

​ 約束方法:唯一性約束、主鍵約束、標識列

域完整性:

​ 針對某一具體關聯式資料庫的約束條件,它保證某些列不能輸入無效的值。

​ 域完整性是指列的值域的完整性,如資料型別、格式、值域範圍、是否允許空值等。

​ 約束方法:限制資料型別、檢查約束、預設值、非空約束

參照完整性:

​ 要求關係中不允許引用不存在的實體。

​ 約束方法:外來鍵約束 (外來鍵:一般來說是其他表的主鍵)

使用者自定義完整性:

​ 針對某一具體關聯式資料庫的約束條件,它反映某一具體應用所涉及的資料必須滿足的要求。

​ 約束方法:規則、儲存過程、觸發器

唯一性約束: unique關鍵字,實現唯一性約束,保證實體完整性。乙個表中可以有多個unique約束

外來鍵(foreign key)約束定義了表之間的一致性關係,用於強制參照完整性。

外來鍵約束定義了對同乙個表或其他表的列的引用,這些列具有primary key或unique約束。

例項:create table person(

id int not null auto_increment primary key comment 『主鍵id』,

name varchar(30) comment 『姓名』,

id_number varchar(18) unique comment 『身份證號』

);這時插入身份證號相同的資料,系統會報錯:

mysql> insert into person (name,id_number)value(「張三」,201901);

query ok, 1 row affected (0.02 sec)

mysql> insert into person (name,id_number)value(「李四」,201901);

error 1062 (23000): duplicate entry 『201901』 for key 'id_number

外來鍵約束:

主表:create table stu(

stu_no int not null primary key comment 『學號』,

stu_name varchar(30) comment 『姓名』

);成績表:

create table sc(

id int not null auto_increment primary key comment 『主鍵id』,

stu_no int not null comment 『學號』,

course varchar(30) comment 『課程』,

grade int comment 『成績』,

foreign key(stu_no) references stu(stu_no)

);在插入成績表中的資料時,要求學號要在主表中存在。

MySQL資料完整性(實體完整性 域完整性)

資料完整性 為保證插入到資料庫中的資料是正確的,防止使用者輸入錯誤的資料 分為實體完整性 域完整性 參照完整性 下節再說 1 實體完整性 實體指的是表中的一行,一行記錄對應乙個實體 通過主鍵實現 主鍵 關鍵字 primary key 特點 不能為null,並且唯一。邏輯主鍵 推薦 例如id,不代表實...

mysql 完整性 詳解MySQL 資料完整性

資料完整性分為 實體完整性,域完整性,參考完整性。參照完整性指的就是多表之間的設計,主要使用外來鍵約束。多表設計 一對多 多對多 一對一設計 一 實體 行 完整性 實體完整性通過表的主鍵來實現。使用主鍵來表示一條記錄的唯一,且不為空 語法 primary key 主鍵分類 邏輯主鍵 例如id,不代表...

mysql 域完整性 Mysql之資料完整性約束

mysql之ddl操作 四 資料完整性約束 實體完整性 域完整性 引用完整性 自定義完整性 1 實體完整性 主鍵約束 唯一約束 主鍵自增 1 主鍵約束 特點 唯一的,不能為空 關鍵字 primary key 新增約束語法 alter table 表名 add constraint 約束名 prima...