5 6 資料庫表關係

2022-06-28 01:36:12 字數 3050 閱讀 3212

constraint  起個名字 foreign

key(關聯字段) references

被關聯表(被關聯字段)

ondelete

cascade

# 是否聯動刪除

onupdate

cascade # 是否聯動更新

乙個出版社可以出多本書    一對多

一本書可以被多個出版社出版   一對多

被關聯表

create

table

press(

id int

primary

keyauto_increment,

name

char(20

));

關聯表

create

table

book(

book_id

intprimary

keyauto_increment,

book_name

varchar(20

),book_price

int,

press_id

int,

constraint fk_pressid_id foreign

key(press_id) references

press(id)

ondelete

cascade

onupdate

cascade

);

fk 欄位在關聯表建立,會新增乙個fk欄位建立於被關聯表的對映 

被關聯表的被關聯字段必須是唯一的,即多對一的 "

關聯表的fk 欄位是可以不唯一的, 即多對一的 "

關聯字段 型別 unique

, # 一對一的管理字段必須在關聯表中唯一

constraint 起個名字 foreign

key(關聯字段) references

被關聯表(被關聯字段)

ondelete

cascade

# 是否聯動刪除

onupdate

cascade # 是否聯動更新

管理員對於使用者

每個管理員都是乙個使用者 一對一關係 

被關聯表

create

table

user

(id

intprimary

keyauto_increment, #主鍵自增

name

char(10

));

關聯表

create

table

admin(

id int

primary

keyauto_increment,

user_id

intunique

,   # 唯一索引

password

varchar(16

),foreign

key(user_id) references

user

(id)  # 建立外來鍵索引

ondelete

cascade

onupdate

cascade

);

一對一關係基於 fk 的使用加上了 唯一索引來限制 ,從而實現兩邊都是唯一的索引

unique(關聯欄位1,關聯欄位2),  # 建立聯合唯一
constraint 起個名字 foreign key(關聯字段) references被關聯表(被關聯字段) 

on delete cascade# 是否聯動刪除

on update cascade # 是否聯動更新

書和作者的關係

乙個作者可以寫多本書,一本書也可以有多個作者

雙向的一對多,即多對多

被關聯表1

create

table

book1(

id int

primary

keyauto_increment,

name

varchar(10

),price

float(3,2

));

被關聯表2

create

table

author(

id int

primary

keyauto_increment,

name

char(5

));

關聯表

create

table

author2book(

id int

primary

keyauto_increment,

book_id

intnot

null

,author_id

intnot

null

,unique

(book_id,author_id),  # 建立聯合唯一

foreign

key(book_id) references

book1(id)  # 對每個表進行外來鍵關聯

ondelete

cascade

onupdate

cascade

,foreign

key(author_id) references

author(id)  # 對每個表進行外來鍵關聯

on delete

cascade

onupdate

cascade

);

多對多的關係已經無法用兩張表完成。必須多建立一張表用來儲存關係欄位的聯絡記錄

第三張表建立的時候要對兩個表分別進行 fk 關聯 

在插入資料的時候要對第三張表進行操作建立管理資料才可以實現多對多關係對映

5 6 資料庫審計表

與上一章節所提到的歷史表不同,歷史表需要經常翻查所以我們需要用到索引。審計表通常是資料歸檔,不允許修改,且基本上很少訪問。create table order id int 10 unsigned not null auto increment comment 訂單id name varchar 4...

mysql資料庫表關係 資料庫 表關係

上節回顧 1.建表語法 注意點 2.資料型別 今日內容 1.表之間的關係 多對一,多對多,一對一 2.複製表 分表 為什麼要分表?乙個表中 要儲存個人資訊又要儲存部門資訊 會導致大量的資料冗餘 所有資料存放在同乙個表中 將導致以下幾個問題 1.浪費空間 不致命 2.結構混亂 3.修改資料時 如果有一...

關聯式資料庫 定義資料庫表之間的關係

關係型別 你和家人有很多關係。例如,你和你母親是親戚。你只有乙個母親,但她可能有幾個孩子。你和你的兄弟姐妹是親戚 你可能有很多兄弟姐妹,當然,他們也會有很多兄弟姐妹。如果你結婚了,你和你的配偶都有配偶 彼此 但一次只有乙個。資料庫關係非常相似,因為它們是表之間的關聯。關係有三種型別 建立關係 當您開...