数据库设计

数据库设计概念

根据业务系统的具体要求,结合我们所学DBMS,为这个系统构建出最优的数据存储模型。

建立数据库的表结构以及表和表之间的关联关系的过程。

有哪些表?表中有哪些数据?表和表有什么关系?

数据库设计步骤

1、需求分析

2、逻辑分析

3、物理分析

4、维护分析

表关系

一对一:用于优化查询性能

一对多:员工和部门

多对多:商品和订单

一对多

-- 部门表
CREATE TABLE dept(
id int PRIMARY key auto_increment,
dep_name VARCHAR(20),
addr VARCHAR(20)
);
-- 员工表
CREATE TABLE emp(
id int PRIMARY KEY auto_increment,
name VARCHAR(20),
age int,
dep_id int,
-- 添加外键,dep_id,关联 dept 表的id主键
CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id)
);
-- 添加2个部门
INSERT INTO dept(dep_name,addr) VALUES('研发部','广州'),('销售部','厦门');
-- 添加员工,dep_id表示员工所在的部门
INSERT INTO emp(NAME,age,dep_id) VALUES
('张三',20,1),
('李四',20,1),
('王五',19,1),
('赵六',21,2),
('孙七',23,2),
('周八',24,2);

-- 删除外键
alter TABLE emp drop FOREIGN KEY fk_emp_dept;
-- 创建完表,添加外键
alter TABLE emp add CONSTRAINT fk_emp_dept FOREIGN KEY (dep_id) REFERENCES dept(id) ;

多对多

DROP TABLE tb_order;
DROP TABLE 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 to_order_goods(
id int PRIMARY key auto_increment,
order_id int,
goods_id int,
count INT
);

-- 建完表后,添加外键
ALTER TABLE to_order_goods ADD CONSTRAINT fk_order_id FOREIGN KEY (order_id) REFERENCES tb_order(id);
ALTER TABLE to_order_goods ADD CONSTRAINT fk_goods_id FOREIGN KEY (goods_id) REFERENCES tb_goods(id);

一对一用于将表中经常使用的字段单独获取放到一张表中,和多表查询类似。不同的是它可以从任何一个表指向对方,并且外键需要设置为UNIQUE(一个人对应一个部门)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值