MySQL 数据库设计 笔记与总结(1)需求分析
数据库设计的步骤
① 需求分析
② 逻辑设计
使用 ER 图对数据库进行逻辑建模
③ 物理设计
④ 维护优化
a. 新的需求进行建表
b. 索引优化
c. 大表拆分
【需求分析】
① 了解系统中所要存储的数据(对象 / 实体)
a. 实体与实体之间的关系(1 对 1,1 对 多,多 对 多)
b. 实体所包含的属性有哪些
c. 哪些属性或属性的组合可以唯一标识一个实体
② 了解数据的存储特点
③ 了解数据的生命周期
【例】
一个小型电商网站,核心模块包括:用户、商品、订单、购物车、供应商。
① 用户模块
包括属性:用户名、密码、电话、邮箱、身份证号、地址、姓名、昵称
可选唯一标识属性:用户名、身份证、电话
存储特点:随系统上线时间逐渐增加,需要永久存储
② 商品模块
包括属性:商品编码、商品名称、商品描述、商品品类、供应商名称、重量、有效期、价格
可选唯一标识属性:(商品名称、供应商名称的组合)、(商品编码)
存储特点:对于下线商品可以归档存储
③ 订单模块
包括属性:订单号、用户姓名、用户电话、收货地址、商品编号、商品名称、数量、价格、订单状态、支付状态、订单类型
可选唯一标识属性:(订单号)、(用户姓名、商品、下单日期的组合属性)
存储特点:永久存储(分表、分库存储)
④ 购物车 用户保存用户购物时选对的商品
包括属性:用户名、商品编号、商品名称、商品价格、商品描述、商品分类、商品数量
可唯一标识属性:(用户名、商品编号、加入时间)、(购物车编号)
存储特点:不永久存储(设置归档、清理规则)
⑤ 供应商 用于保存所销售商品的供应商信息
包括属性:供应商编号、供应商名称、联系人、电话、营业执照号、地址、法人
可选唯一标识:(供应商编号)、(营业执照号)
存储特点:永久存储
【模块间的关系】
用户 ← 1对多→ 订单
↑ ↑
1对多 多对多
↓ ↓
购物车 ←多对多→ 商品 ← 多对多 → 供应商
MySQL 数据库设计 笔记与总结(1)需求分析的更多相关文章
- MySQL 数据库设计 笔记与总结(2)逻辑设计
[实例演示 —— 实体之间的关系] [逻辑设计的工作] ① 将需求转化为数据库的逻辑模型 ② 通过 ER 图的形式对逻辑模型进行展示 ③ 同所选用的具体的 DBMS 系统无关 [名词解释] 候选码可以 ...
- MySQL 数据库设计 笔记与总结(3)物理设计
[物理设计的工作] ① 选择合适的数据库管理系统:Oracle,SQLServe,MySQL,PgSQL ② 定义数据库.表及字段的命名规范 ③ 根据所选的 DBMS 系统选择合适的字段类型 ④ 反范 ...
- MySQL 数据库设计 笔记与总结(4)维护优化
[维护和优化的工作] ① 维护数据字典 ② 维护索引 ③ 维护表结构 ④ 在适当的时候对表进行水平拆分或垂直拆分 [维护数据字典] a 使用第三方工具对数据字典进行维护 b 利用数据库本身的备注字段来 ...
- MYSQL数据库学习笔记1
MYSQL数据库学习笔记1 数据库概念 关系数据库 常见数据库软件 SQL SQL的概念 SQL语言分类 数据库操作 创建数据库 查看数据库的定义 删除数据库 修改数据库 创建表 数据类型 约束 ...
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- Mysql数据库学习笔记之数据库索引(index)
什么是索引: SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间. 聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物 ...
- mySql 数据库设计原则
mysql数据库设计原则: 必须使用InnoDB存储引擎 解读:支持事务.行级锁.并发性能更好.CPU及内存缓存页优化使得资源利用率更高 禁止使用存储过程.视图.触发器.Event 解读:高并发大数据 ...
随机推荐
- Diablo3
1.装备 主手:元素弓 副手:精细箭袋 头: 胸:燃火外套 手:娜塔亚的手感 护腕:稳击护腕 戒指:罗盘玫瑰+布尔凯索的婚戒 颈部:旅者之誓 腰:科雷姆的强力腰带(速度加25%) 腿:深渊挖掘裤 脚: ...
- ajax 中文乱码问题 主要是IE浏览器
解决方案: 提交前采用encodeURI两次编码,注:一定是两次 举例: var taText = $("#txtName").val(); taText = encodeURI( ...
- transient关键字使用笔记
>>transient的作用及使用方法 一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过 ...
- Android 4.0源码目录结构
转:http://blog.csdn.net/xiangjai/article/details/9012387 在学习Android的过程中,学习写应用还好,一开始不用管太多代码,直接调用函数就可以了 ...
- javascript散列表实现
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- php session跨页面传递 session值丢失问题
.session_start();应该尽量放置到页面的顶部: .如果php.ini里面没有配置 session Autostart的话,每次会话之前,都得手动开启session:session_sta ...
- ActiveMQ Exception: java.io.EOFException: Chunk stream does not exist
解决办法: 方法1. 去掉延迟功能:<broker xmlns="http://activemq.apache.org/schema/core " brokerName=&q ...
- 前端JSON使用总结
JSON: JavaScript Object Notation(JavaScript 对象表示法)的简称. 1. 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaS ...
- 简单几何(凸包) POJ 1696 Space Ant
题目传送门 题意:一个蚂蚁一直往左边走,问最多能走多少步,且输出路径 分析:就是凸包的变形题,凸包性质,所有点都能走.从左下角开始走,不停排序.有点纠结,自己的凸包不能AC.待理解透凸包再来写.. 好 ...
- Complete the Sequence[HDU1121]
Complete the Sequence Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Ot ...