数据库是我们经常使用的数据存储工具,所以怎么设计数据表是我们实现代码前需要做的一件很重要的事情,但不是每个企业都有DBA,所以很多时候我们都有可能扮演DBA的角色,那么当你不幸被选中的时候,下面的建议可能对你有些帮助。
关系数据表的设计最重要的有两个部分:表属性、表之间的关系,有了表属性才能够清楚每个表的字段,有了表之间的关系才能够正确的保存一些业务逻辑数据。
表属性
我们以大家看的这篇文章举例说明,发现文章里面有标题、作者、作者LOGO、发布时间、文章内容、评论数等等,那么我们不作加工处理,直接将这些作为文章这个表的属性,这样就得到了一个粗糙的属性列表,下面经过进一步思考,比如作者LOGO这个属性,如果我们将作者的logo保存在文章这个表里面,是不是会出现这样一种情况,就是如果这个作者发了10篇文章,那么就要保存10个一模一样的LOGO在文章数据表里面,这样如果有一天,LOGO修改了,是不是要修改10条数据呢?如果有1000篇文章,这样要修改1000条数据呢?所以这个属性是不合理的,因为改变的话会导致要修改很多很多的数据,所以我们就将这个属性放在存储作者这个数据表里面去,这样修改的话,仅仅修改作者这个表里面的一条数据就可以了,其他属性经过同样的思考不断排除,从而得到一个基本的属性列表。
表之间的关系
一对一
一对一的关系还是比较少的,比如对于文章表,我们刚刚开始的时候没有设计一些统计信息,比如点击数、分享数、浏览数、浏览频率等等,那么这个时候,我们可以新建一张表,用来保存这些数据,并且这个表和文章表里面是一一对应的,就是一篇文章只对应一个统计的记录,一个统计记录只对应一篇文章,这个时候的关系,可以选择任何一个表增加一个附加的属性保存另一个表的主键。
一对多
上面我们提到文章和作者这两个表,你写的文章只能是你的,你一个人可以写很多篇文章,所以作者和文章这两个表的关系是一对多的关系,对于一对多的关系,在多端会增加一个字段用于保存一端的主键字段值,所以这时多端会增加一个附加的属性,有了这个属性,才能够进行关联查询。
多对多
比如商品和分类之间的关系,如果一个商品可能在多个分类下面,一个分类下面又有多个商品,所以应该是多对多的关系,这个时候必须新增一个数据表,用于保存商品和分类之间的关系,这个数据表有两个字段,一个用于保存商品的主键值,一个用于保存分类的主键值,其他字段根据需要分析获得。
由基本属性列表+附加属性列表得到每个表最后的属性列表,有了这些属性列表,我们的单个表字段也就确定了,不管是表属性还是表之间的关系都需要根据具体的业务来决定,而不是死的,这点需要大家切记切记,还有不管怎么说,还是希望大家有时间看看ER、数据库原理相关的知识,只有明白了这些,才能够深刻的理解和数据库相关的很多知识,感谢大家花时间阅读我们的文章。