MySQL(四)—— 数据库设计

一、多表之间的关系的分类

(一)、一对一之间的关系

如:人和身份证

分析:一个人只有一个身份证,一个身份证只能对应一个人。

(二)、一对多(多对一)之间的关系

如:部门和员工

分析:一个部门有多个员工,一个员工只能有一个部门。

(三)、多对多之间的关系

如:学生和课程

分析:一个学生可以选择很多门课程,一个课程也可以被多个学生选择。

二、一对多(多对一)关系实现

如:部门和与员工

实现:在多的一方建立外键,指向一的一方的主键。

三、多对多关系实现

如:学生和课程

实现:多对多关系实现需要借助第三张中间表。中间表至少包含两个字段,这两个字段作为第三张表的外键,分别指向两张表的主键。

中间表每一对值可作为联合主键。

四、一对一关系实现

如:学生和身份证

实现:可以在任意一方添加唯一外键指向另一方的主键。

五、数据库三大范式概述

概念:设计数据库时需要遵循的规范。要遵循后面的范式要求,必须先遵循前面的范式要求。

分类:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)。

六、第一范式(1NF)

概念:每一列都是不可分割的原子数据项

七、第二范式(2NF)

概念:在1NF的基础上,非码属性必须依赖于候选码属性(在1NF的基础上消除非主属性对主码的部分函数依赖)

注:

1.函数依赖:A-->B,如果通过A属性(属性组)的值,可以确定唯一B属性的值,则称B依赖于A。例如:学号-->姓名,(学号,课程)-->分数

2.完全函数依赖:A-->B,如果A是一个属性组,则B属性值的确定需要依赖于A属性组中所有的属性值。例如(学号,课程)-->分数

3.部分函数依赖:A-->B,如果A是一个属性组,则B属性值的确定只需要依赖于A属性组中某一些值即可。例如(学号,课程)-->姓名

4.传递函数依赖:A-->B,B-->C,如果通过A属性(属性组)的值,可以确定唯一B属性的值,在通过B属性(属性组)的值,可以确定唯一C属性的值,则称C函数传递依赖于A。

  例如:学号-->系名,系名-->系主任,称系主任传递依赖学号。

5.码:如果在一张表中,一个属性或属性组,被其他属性所有属性完全依赖,则称这个属性(属性组)为该表的码。例如:上表中码为:(学号、课程名称)

主属性:码属性组中的所有属性

非主属性:除码属性组的属性

3.第三范式:在2NF的基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)

原文地址:https://www.cnblogs.com/upyang/p/12130891.html

时间: 2024-10-15 20:43:30

MySQL(四)—— 数据库设计的相关文章

Oracle基础<1>--数据库设计

一:为什么需要使用数据库设计 数据库设计可以使数据库通过健壮的数据库结构  高效并且健康  的进行工作. 二.数据库设计原则 (数据库设计.系统设计.架构设计) 1.熟悉需求 保证之后需求的变更 不会影响到数据库的维护.更新.减少了工作成本 2.开发符合规范的数据库 (1).命名规范 (2).明确现实中的实体与数据表的关系 ·   (3).一张数据表不能既没有主键,也没有外键(主键是现实中实体的抽象,外键表示现实中实体之间的关系) (4).基本表的特征 原子性:基本表中的字段是不可在分解的 原始

mySQL教程 第1章 数据库设计

第1章 数据库设计 E-R设计 很多同学在学SQL语句时,觉得非常困难,那是因为你在学一个你根本不了解的数据库,数据库中的表不是你设计的,表与表之间的关系你不明白.因此在学SQL语句之前,先介绍一下数据库设计. 下面举例说明数据库设计: 学校需要开发一个系统记录有学生.课程和成绩信息.数据库如何设计? 这里面涉及到两个实体,学生表.课程,这些表为实体表. 这些表之间有什么关系呢?.学生考试出成绩,成绩记录在成绩表. 一个学生可以参加多门课程,关系是1对多. 数据库设计实例 设计数据库和表 安装m

MySql三大范式与数据库设计和表创建常用语句

[数据库设计的三大范式] 1.第一范式(1NF First Normal Fromate):数据表中的每一列(字段),必须是不可拆分的最小单元.也就是确保每一列的原子性. 例如: userInfo: '山东省烟台市 13181621008' => userAds:'山东省烟台市' tel:'13181621008' 2.第二范式(2NF):满足1NF后,要求:表中所有的列,都必须功能依赖于主键,而不能有任何一列与主键没有关系.(一张表值描述一件事情) 3.第三范式(3NF):满足2NF后,要求:

mysql数据库设计

2.MySQL之选择字段数据类型 1.http://blog.itpub.net/29660208/viewspace-1208352/ 3.http://www.cnblogs.com/HondaHsu/p/3640180.html 数据库设计纪要上面是下面的解决办法1.表中特有的字段,与公共的字段,共享字段问题2.对某些值数据类型的选择问题3.数据库字符集问题 本篇文章对于设计表时,数据列的选择进行了一些探寻.好的表设计不仅仅是能满足业务需求,还能够满足对性能的优化.英语与网址都是公共的表

使用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 web数据库的设计归范-2表设计原则

[职责分离原则] 职责分离原则是指在设计的时候应当考虑到数据的产生,聚合使用等原则,每个系统干自己能干的事情,每个系统只干自己的事情.一个数据表应该放在哪个系统中,通常取决于几点: 1. 谁产生这个信息:通常情况下谁产生了这个数据应当对此数据负责:也就是考虑该数据的创建,发展,销毁等全生命周期的定义,并将这个定义维护起来提供给消费者作为消费原则: 2. 谁最经常使用这个信息:如果某个系统最经常使用这个数据,最经常去修改某个数据,也应该由该系统来负责保存维护该数据: 3. 遵守高内聚,低耦合的考虑

Windows中使用MySQL 查看数据库信息(四)

一.查看MySQL中的所有数据库 show databases; 二.查看当前正在使用的数据库 select database(); 三.查看当前数据库中的所有表 show tables; 四.查看表结构 describe employees; 其中employees为表名 五.显示创建表语句 show create table 表名; 六.查看表的索引信息 select index from employees; 其中employees为表名 七.查看当前连接最后一次插入到表中的标识(已插入)

数据库设计中的四个范式

在创建一个数据库的过程中,必须依照一定的准则,这些准则被称为范式,从第一到第六共六个范式,一般数据库设计只要遵循第一范式,第二范式,和第三范式就足够了.满足这些规范的数据库是简洁的.结构明晰的,同时,不会发生插入(insert).删除(delete)和更新(update)操作异常.反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息. I.关系数据库设计范式介绍 1.1 第一范式(1NF)无重复的列 所谓第一范式(1NF)是指数据库表的每一列都是不可分割

MySQL数据库设计常犯的错以及对性能的影响

1.过分的反范式化为表建立太多的列 我们在设计数据库的结构时,比较容易犯的第一个错误就是对表进行了过分的反范式化的设计,这就容易造成了表中的列过多,虽然说Mysql允许为一个表建立很多的列,但是由于Mysql的插件式架构的原因,前面博客已经有介绍,Mysql的服务器层和存储引擎层是分离的,Mysql的存储引擎API工作时需要把服务器层和存储引擎层之间通过缓冲格式来拷贝数据,然后在服务器层将缓冲层的数据解析成各个列,这个操作过程成本是非常高的,特别是对于MyISAM的变长结构,和Innodb这种行

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

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