mysql学习之数据库设计

1 MySql数据库建模过程

需求分析阶段:分析客户的业务和处理需求

概要设计阶段:设计数据库的E-R模型图,确认需求信息的正确和完整

详细设计阶段:应用三大范式审核数据表结构

代码编写阶段:物理实现数据库,编码实现应用

软件测试阶段:....

安装部署:...

2设计数据库的步骤1了解需求:与该系统有关人员进行交流、座谈,充分了解用户需求,理解数据库需要完成的任务

2标识实体:标识数据库要管理的关键对象或实体(名词)

3标识每个实体的属性(名词)

4标识实体之间的关系(动词)

在E-R图中,实体用矩形标识,属性用椭圆形标识,关系用菱形标识

1.一对一:X中的一个实体最对与Y中的一个实体关联,
    并且Y中的一个实体最多与X中的一个实体关联.
    Eg:一个人只有一张身份证.
2.一对多:X中的一个实体可以与Y中的任意数量的实体关联;
    Y中的一个实体最多与X中的一个实体关联.
    Eg:一个班级有多名学生.
3.多对多:X中的一个实体可以与Y中的任意数量的实体关联,反之亦然.
    Eg:学生和课程之间的关系,一个学生可以有多门课程,一门课程可以对应多名学生.
E-R图设计练习

某医院病房计算机管理中心需要如下信息:
    科室:科名、科地址、科电话、医生姓名
    病房:病房号、床位号、所属科室名
    医生:姓名、职称、所属科室名、年龄、工作证号
    病人:病历号、姓名、性别、诊断、主管医生、病房号
其中,一个病房只能属于一个科室,一个科室可以有多个病房,一个医生只属于一个科室,一个科室可以有多名医生,一个医生可负责多个病人的诊治,一个病人的主管医生只有一个。一个病人只能住一间病房,一间病房可以入住多名病人。
完成如下设计:
(1)       设计该计算机管理系统的E-R图
(2)       将该E-R图转换为关系模式结构。

E-R图设计(表设计)  重要!!!

1.如果是1:1的关系:那么将实体转换成表,将任意1端实体的主键拿到另一端实体做外键。

2.如果是1:N的关系:那么将实体转换成表,关系不成表,将1端实体的主键拿到N端实体做外键。

3.如果是M:N的关系:将实体转换成表,关系形成表,同时将两端实体的主键拿过来作为该表的外键,形成复合主键。

数据库设计三大范式

为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。

范式是符合某一种设计要求的总结。

要想设计一个结构合理的关系型数据库,必须满足一定的范式。

第一范式: 要求表的每个字段必须是不可分割的独立单元

student:name       --违反第一范式

    张小名丨狗娃

student : name old_name  --符合第一范式

    张小名    狗娃

第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。

第一范式的合理遵循需要根据系统的实际需求来定。比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行。但是如果系统经常会访问“地址”属性中的“城市”部分,那么就非要将“地址”这个属性重新拆分为省份、城市、详细地址等多个部分进行存储,这样在对地址中某一部分操作的时候将非常方便。这样设计才算满足了数据库的第一范式。

第二范式

第二范式: 在第一范式的基础上,要求每张表只表达一个意思。表的每个字段都和表的主键有依赖。

employee(员工):

员工编号 员工姓名 订单名称  --违反第二范式

员工表:员工编号 员工姓名

订单表:订单编号 订单名称  --符合第二范式

第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。

比如要设计一个订单信息表,因为订单中可能会有多种商品,所以要将订单编号和商品编号作为数据库表的联合主键,如下表所示。

订单信息表

这样就产生一个问题:这个表中是以订单编号和商品编号作为联合主键。这样在该表中商品名称、单位、商品价格等信息不与该表的主键相关,而仅仅是与商品编号相关。所以在这里违反了第二范式的设计原则。
而如果把这个订单信息表进行拆分,把商品信息分离到另一个表中,把订单项目表也分离到另一个表中,就非常完美了。如下所示。

这样设计,在很大程度上减小了数据库的冗余。如果要获取订单的商品信息,使用商品编号到商品信息表中查询即可。
第三范式

第三范式: 在第二范式基础,要求每张表的主键之外的其他字段都只能和主键有直接决定依赖关系。

员工表:员工编号(主键) 员工姓名 部门编号 部门名    --符合第二范式,违反第三范式   (数据冗余高)

员工表:员工编号(主键 )  员工姓名  部门编号

部门表:部门编号 部门名     ------符合第三范式(降低数据冗余 )

总结:1.为满足某种商业目标,数据库性能比规范化数据库更重要
通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间
通过在给定的表中插入计算列(如成绩总分),以方便查询
2.在数据规范化同时,要综合考虑数据库的性能

原文地址:https://www.cnblogs.com/zzq123/p/9973161.html

时间: 2024-07-30 12:49:41

mysql学习之数据库设计的相关文章

mysql笔记8_数据库设计步骤

step1: 收集信息,与谈系统有关的人员进行交流.座谈,充分了解数据库需要完成的任务. 示例:blog系统 基本功能:发表和编辑文章,多用户支持,全文检索,RSS支持,图片收藏,管理站内短消息. step2: 标识对象(实体Entity) 标识数据库要管理的关键对象或实体. 实体一般是名词: 博主账号:发表和管理文章.图片管理. 文章类别 文章 文章回复 图片分类 图片 连接分类 连接 短消息 step3: 标识每个实体的属性 E-R图(Entity-Relationship) |     符

MySQL学习——有关数据库的操作语句

MySQL学习——有关数据库的操作语句 摘要:本文主要学习了使用DDL语句对数据库进行操作的方法. 创建数据库 语法 1 create database [if not exists] 数据库名 2 [default] character set 字符集名 3 [default] collate 校对规则名; 实例 1 mysql> create database if not exists demo 2 -> default character set utf8 3 -> defaul

使用MySQL Workbench进行数据库设计——MySQL Workbench用法总结

转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/48318877 1 简单介绍 MySQL Workbench是一款专为MySQL设计的ER/数据库建模工具.它是著名的数据库设计工具DBDesigner4的继任者. 你能够用MySQL Workbench设计和创建新的数据库图示.建立数据库文档,以及进行复杂的MySQL 迁移. 做数据库设计的话,大家都比較熟悉Power Designer,用得也比較多.但PD有个缺点就是收费,并

MySQL学习——操作数据库(增删改查)(一)

数据库是长期存储在计算机内,有组织的和可共享的数据集合,简而言之,数据库就是一个存储数据的地方,只是在其存储方式有特定的规律,这样做可以方便处理数据,数据库的操作包括创建数据库和删除数据库,还有数据库中的查询与修改,这些操作都是数据库管理的基础. 一,创建数据库 创建数据库是指在数据库系统中划分一块空间,用来存储相应的数据,这是进行表操作的基础,也是进行数据库管理的基础,在mysql中创建数据库需要通过SQL语句CREATE DATABASES实现,语法形式如下: CREATE DATABASE

SQL SERVER学习2——数据库设计

数据库设计是数据库知识中比较重要的部分,我们需要了解数据库设计的基本步骤,E-R图的画法. 数据库设计的基本概述 检验一个数据库设计好坏的标准就是,看他是否能够方便的执行各种数据检索和处理操作,并且有利于数据的控制管理和维护. 数据库设计步骤 设计数据库规范中比较著名的是"新奥尔良方法"(这个可不是做新奥尔良鸡腿的方法哦),Now Orleans,总计4个阶段: 需求分析(分析用户要求,制作数据流图和判定图) 概念结构设计(信息分析和定义,制作E-R图) 逻辑结构设计(设计实现,关系型

MYSQL学习笔记——数据库范式及MYSQL优化整体思路

一.数据库范式                                                                               为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满足一定的范式. 1.1.第一范式(1NF:每一列不可包含多个值)      所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列

MySql学习(五) —— 数据库优化理论篇(一)

一.数据库管理系统 数据库管理系统(Database Management System, DBMS) 衡量是否是数据库的标准: ACID:是指在数据库管理系统(DBMS)中事务所具有的四个特性: 1) 原子性(Atomicity) 2) 一致性(Consistency) 3)隔离性(Isolation) 4)持久性(Durability) 1.关系型数据库:是建立在关系数据库模型基础上的数据库,借助于关系代数等概念和方法来处理数据库中的数据,同时也是一个被组织成一组拥有正式描述性的表格,该形式

MySql学习(六) —— 数据库优化理论(二) —— 查询优化技术

逻辑查询优化包括的技术 1)子查询优化  2)视图重写  3)等价谓词重写  4)条件简化  5)外连接消除  6)嵌套连接消除  7)连接消除  8)语义优化 9)非SPJ优化 一.子查询优化 1. 什么是子查询:当一个查询是另一个查询的子部分时,称之为子查询. 2. 查询的子部分,包含的情况: a) 目标列位置:子查询如果位于目标列,则只能是标量子查询,否则数据库可能返回类似“错误:子查询只能返回一个字段 ( [Err] 1242 - Subquery returns more than 1

Mysql 学习-索引的设计原则

索引的设计不合理或者缺少索引都会对数据库和应用程序的性能造成障碍.高效的索引对获的良好性能非常重要.设计索引是,应该考虑一下准则: (1)索引并非语讹夺越好,若一个表中有大量索引,不仅占用磁盘空间,而且会影响Insert/delete/update等语句的性能,因为当表中的数据更改同时,索引也会进行调整和更新. (2)避免对经常更新的表最好不要使用索引,并且索引中的列尽可能少,而对经常用于查询的字段应该创建索引,但要避免添加不必要的字段. (3)数据量小的表最好不要使用索引,由于数据比较少,查询