MySQL --- 讀書筆記 --- 索引(2)
阿新 • • 發佈:2022-05-22
資料庫設計
表關係
-
一對一
- 如: 使用者 和 使用者詳情
- 一對一的關係多用於表的拆分,講一個實體經常使用的子端但放一張表,不經常使用的子端放另一張表,用於提升查詢效能
實現方式:在任意一方加入外來鍵,關聯另一方的主鍵,並且設定外來鍵為 唯一(UNIQUE)
-
一對多(多對一)
- 如:部門 和 員工
- 一個部門對應多個員工,一個員工對應一個部門
實現方式: 在 多 的一方建立外來鍵,指向一的一方的主鍵
-
多對多
- 如:商品 和 訂單
- 一個商品對應多個訂單, 一個訂單包含多個商品
實現方式: 建立第三張中間表,中間至少包含兩個外來鍵,分別關聯兩方主鍵
/* 多對多: * 如:訂單 和 商品 * 一個商品對應多個訂單,一個訂單包含多個商品 實現方式:建立第三張中間表,中間表至少包含兩個外來鍵,分別關聯兩方主鍵 */ -- 刪除表 DROP TABLE IF EXISTS tb_order_goods; DROP TABLE IF EXISTS tb_order; DROP TABLE IF EXISTS tb_goods; -- 訂單表 CREATE TABLE tb_order( id int primary key auto_increment, payment double(10,2), payment_type TINYINT, status TINYINT ); -- 商品表 CREATE TABLE tb_goods( id int primary key auto_increment, title varchar(100), price double(10,2) ); -- 訂單商品中間表 CREATE TABLE tb_order_goods( id int primary key auto_increment, order_id int, goods_id int, count int ); -- 建完表後,新增外來鍵 alter table tb_order_goods add CONSTRAINT fk_order_id FOREIGN key(order_id) REFERENCES tb_order(id); alter table tb_order_goods add CONSTRAINT fk_goods_id FOREIGN key(goods_id) REFERENCES tb_goods(id);