【Java 入门】(六)表设计

导读:本篇文章讲解 【Java 入门】(六)表设计,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

为什么要有表设计,其实软件开发,说白了就是数据要以什么方式保存,又要以什么结构展示。

特别是复杂的系统设计,表设计变得更为重要,这涉及到性能、扩展等问题,涉及得不好,后续开发中就会越感痛苦。

下面以”学校班级”说明一般表设计的过程。

1.表设计中要思考的三要素

主体对象

涉及到的主体对象有:班级、老师、学生

对象间的关系

每个班级都有一个老师(班主任)

每个班级都有若干个学生

对象都有哪些信息项

班级:班级编号、班级名称、…

老师:老师编号、老师名称、老师性别、…

学生:学生编号、学生姓名、学生性别、…

2.具体表设计

基础对象表

【Java 入门】(六)表设计

【Java 入门】(六)表设计

【Java 入门】(六)表设计

对象关联关系表

【Java 入门】(六)表设计

【Java 入门】(六)表设计

 3.第三范式

三范式:

1NF:字段不可分; 
2NF:有主键,非主键字段依赖主键; 
3NF:非主键字段不能相互依赖; 

解释:
1NF:原子性 字段不可再分,否则就不是关系数据库; 
2NF:唯一性 一个表只说明一个事物; 
3NF:每列都与主键有直接关系,不存在传递依赖; 

虽然说表设计必须符合第三范式,但是有时候适当的冗余可以减少表查询次数。

例如将在班级表中加入老师对象,因为一般一个班级只有一个老师(班主任),即一对一的关系,所以我们可以这样设计班级表

【Java 入门】(六)表设计 

这样设计后,”班级-老师表”就可以去掉了,因为我们将这个整合到班级表了。

#原本需要查询某个班级的老师(班主任)

#step 1
select 班级编号,班级名称 from 班级表 where 班级名称 = '软件开发1班'
#step 2
select 班级编号,老师编号 from 班级-老师表 where 班级编号 = 'step 1查询到的班级编号'
#step 3
select 老师编号,老师名称,老师性别 from 老师表 where 老师编号 = 'step 2查询到的老师编号'


#修改后

#step 1
select 班级编号,班级名称,老师编号,老师名称 from 班级表 where 班级名称 = '软件开发1班'

那么什么时候不能整合呢?当两个主体对象的关系为一对多,或者多对多关系的时候,就不能够将它们放在一起了,例如现在一个班级有两个老师(班主任),”软件开发1班”有两个老师,”张三”和”赵六” 

【Java 入门】(六)表设计

4.技巧

每个表都创建一个主键id,类型为int(11),并设置为自增AUTO_INCREMENT。

每个表都创建一个状态列state,类型为int(2),默认设置为1,用于筛选记录的有效性,代替物理删除delete,尽量保存数据记录。

适当的字段冗余,减少连表查询,在业务较简单时,尽量能做到单表查询,达到以空间换时间的目的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/93627.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!