1. 程式人生 > 其它 >MySQL --- 讀書筆記 --- 索引(2)

MySQL --- 讀書筆記 --- 索引(2)

資料庫設計

表關係

  • 一對一

    • 如: 使用者 和 使用者詳情
    • 一對一的關係多用於表的拆分,講一個實體經常使用的子端但放一張表,不經常使用的子端放另一張表,用於提升查詢效能

    實現方式:在任意一方加入外來鍵,關聯另一方的主鍵,並且設定外來鍵為 唯一(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);