這篇文章主要介紹MySQL數(shù)據(jù)完整性的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
專注于為中小企業(yè)提供成都網(wǎng)站建設、網(wǎng)站設計服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)平房免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。數(shù)據(jù)完整性分為:實體完整性,域完整性,參考完整性。
參考完整性:
參照完整性指的就是多表之間的設計,主要使用外鍵約束。
多表設計: 一對多、多對多、一對一設計
一:實體(行)完整性
實體完整性通過表的主鍵來實現(xiàn)。
使用主鍵來表示一條記錄的唯一,且不為空
語法:primary key
主鍵分類:
邏輯主鍵:例如ID,不代表實際的業(yè)務意義,只是用來唯一標識一條記錄(推薦)
業(yè)務主鍵:例如username,參與實際的業(yè)務邏輯。
特點:唯一,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:外鍵設置到多的一方
語法輸入創(chuàng)建一對多:
創(chuàng)建客戶表:
create table customers( id int, name varchar(20), address varchar(100), primary key(id) );
創(chuàng)建訂單表:
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: 參照
創(chuàng)建一個名叫customer_ord_fk的外鍵約束,外鍵指的是customer_id,參照的是 customers表中的id列
表格操作創(chuàng)建一對多
customers表
orders表
orders外鍵設置
創(chuàng)建一個名叫customer_ord_fk的外鍵約束,外鍵欄位customer_id,參照的是 customers表中的id列
擴展:四種子表的刪除更新策略:
1,cascade 級聯(lián)策略:使用此種策略時主表的記錄被刪除或者主鍵字段被修改時會同步刪除或修改子表
2,no action 無動作策略:使用此種策略時要刪除主表必須先刪除子表,要刪除主表的記錄必須先刪除子表關聯(lián)的記錄,不能更新主表主鍵字段的值
3,restrict 主表約束策略。此種策略對主表的約束跟 NO ACTION 一樣
4,set no置空策略。使用此種策略時,如果主表被刪除或者主鍵被更改,則將子表中的外鍵設置為null。需要注意的是,如果子表的外鍵是主鍵或者是設置為not null的,則主表的刪除和主鍵的更改跟 no action 一樣
2,多對多
創(chuàng)建老師表:
Create table teachers( id int primary key auto_increment, name varchar(20) , gender char(5), subject varchar(20) );
創(chuàng)建學生表:
Create table students( id int primary key , name varchar(20), age int );
第三張為關聯(lián)表:
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) );
表格操作多對多
創(chuàng)建老師表:
創(chuàng)建學生表:
第三張表:
3,一對一
(1)一般情況,設計一張表格即可
(2)設計成兩張表格
法1:第二張表格中創(chuàng)建一個字段作為外鍵(設置求唯一 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數(shù)據(jù)完整性的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯(lián)成都網(wǎng)站設計公司行業(yè)資訊頻道!
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。