概述
什么是数据库
数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。
什么是数据库表
数据库中以表为组织单位存储数据。
表类似我们的Java类,每个字段都有对应的数据类型。
那么用我们熟悉的java程序来与关系型数据对比,就会发现以下对应关系。
类----------表
类中属性----------表中字段
对象----------记录
在设计表中。根据表于表中的关系进行设计。在这里介绍下他们之间的关系:
将实体与实体的关系, 反应到最终数据库表的设计上来: 将关系分成三种: 一对一, 一对多和多对多.
所有的关系都是指的表与表之间的关系.
一对一
一对一: 一张表的一条记录一定只能与另外一张表的一条记录进行对应;
学生表: 姓名,性别,年龄,身高,体重, 籍贯, 家庭住址
Id | 姓名 | 性别 | 年龄 | 体重 | 身高 | 婚姻 | 籍贯 | 住址 | |
表设计成以上这种形式: 符合要求. 其中姓名,性别,年龄,身高,体重属于常用数据; 但是婚姻,籍贯,住址属于不常用数据. 如果每次查询都是查询所有数据,不常用的数据就会影响效率, 实际又不用.
解决方案: 将常用的和不常用的信息分离存储,分成两张表
常用信息表
Id | 姓名 | 性别 | 年龄 | 体重 | 身高 |
1 | |||||
不常用信息表: 保证不常用信息与常用信息一定能够对应上: 找一个具有唯一性(确定记录)的字段来共同连接两张表
Id | 婚姻 | 籍贯 | 住址 | |
2 | ||||
1 |
一个常用表中的一条记录: 永远只能在一张不常用表中匹配一条记录;反过来,一个不常用表中的一条记录在常用表中也只能匹配一条记录: 一对一的关系
一对多
一对多: 一张表中有一条记录可以对应另外一张表中的多条记录; 但是返回过, 另外一张表的一条记录只能对应第一张表的一条记录. 这种关系就是一对多或者多对一.
母亲与孩子的关系: 母亲,孩子两个实体
妈妈表
ID | 名字 | 年龄 | 性别 |
孩子表
ID | 名字 | 年龄 | 性别 |
以上关系: 一个妈妈可以在孩子表中找到多条记录(也有可能是一条); 但是一个孩子只能找到一个妈妈: 是一种典型的一对多的关系.
但是以上设计: 解决了实体的设计表问题, 但是没有解决关系问题: 孩子找不出妈,妈也找不到孩子.
解决方案: 在某一张表中增加一个字段,能够找到另外一张表的中记录: 应该在孩子表中增加一个字段指向妈妈表: 因为孩子表的记录只能匹配到一条妈妈表的记录.
妈妈表
ID | 名字 | 年龄 | 性别 |
孩子表
ID | 名字 | 年龄 | 性别 | 妈妈ID |
妈妈表主键 | ||||
多对多
多对多: 一张表中(A)的一条记录能够对应另外一张表(B)中的多条记录; 同时B表中的一条记录也能对应A表中的多条记录: 多对多的关系
老师教学: 老师和学生
老师表
T_ID | 姓名 | 性别 |
1 | A | 男 |
2 | B | 女 |
学生表
S_ID | 姓名 | 性别 |
1 | 张三 | 男 |
2 | 小芳 | 女 |
以上设计方案: 实现了实体的设计, 但是没有维护实体的关系.
一个老师教过多个学生; 一个学生也被多个老师教过.
解决方案: 在学生表中增加老师字段: 不管在哪张表中增加字段, 都会出现一个问题: 该字段要保存多个数据, 而且是与其他表有关系的字段, 不符合表设计规范: 增加一张新表: 专门维护两张表之间的关系
老师表
id | 姓名 | 性别 |
1 | A | 男 |
2 | B | 女 |
学生表
id | 姓名 | 性别 |
1 | 张三 | 男 |
2 | 小芳 | 女 |
中间关系表: 老师与学生的关系
id | t_id(老师) | s_id(学生) |
1 | 1 | 1 |
2 | 1 | 2 |
3 | 2 | 1 |
4 |
增加中间表之后: 中间表与老师表形成了一对多的关系: 而且中间表是多表,维护了能够唯一找到一表的关系; 同样的,学生表与中间表也是一个一对多的关系: 一对多的关系可以匹配到关联表之间的数据.
由此可见,设计表首要任务是明白表于表之间的关系。判断是一对一,一对多,还是多对多关系。在进行设计。
最后
以上就是幽默小鸽子为你收集整理的学习数据库表格设计的全部内容,希望文章能够帮你解决学习数据库表格设计所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复