数据库设计注意事项
数据库设计包括:库的设计,表的设计,字段的设计,主键和外键的设计,索引设计,约束设计。我们先讨论前四个。库设计:
1、数据库名称要明确,可以加前缀或后缀的方式,使其看起来有业务含义,比如数据库名称可以为Business_DB(业务数据库)。
2、在一个企业中,如果依赖很多产品,但是每个产品都使用同一套用户,那么应该将用户单独构建一个库,叫做企业用户中心。
3、不同类型的数据应该分开管理,例如,财务数据库,业务数据库等。
4、由于存储过程在不同的数据库中,支持方式不一样,因此不建议过多使用和使用复杂的存储过程。为数据库服务器降低压力,不要让数据库处理过多的业务逻辑,将业务逻辑处理放到应用程序中。
------------------------------------------------------------------------------------------------------------------------
表设计:
1、 数据库表命名,将业务和基础表区分,采用驼峰表示法等。
------------------------------------------------------------------------------------------------------------------------
字段设计:
1、 字段名,有一个命名规范,意义要明确。这样方便查找。
2、 数据不要物理删除,应该加一个标志位,以防用户后悔时,能够恢复。还有就是比如人员登记加入某系统,采用登记卡的方式,一段时间后该人员退出了该系统,那么此时我们将该人员对应的记录标记为不可用,那么这个人就从系统中移除了,一段时间后这个人又回来了,那么我们直接修改标记字段为可用,这个人就从新加入系统,避免了其它信息的录入。
3、 数据是否有效的标示字段,其作用为:例如某条记录只有经过某个流程或者被某个人员审核通过后才有用,在这之前一直没有用。
4、 排序字段,按照某种类型来排序(sortcode)最好不依赖id排序,这样方便我们查询记录时按照某种方式排序,而不依赖id。
5、 数据是否允许删除和允许编辑,例如管理员不能删除,这样我们在查询数据时就可以根据该字段标示来决定某条记录是否可以编辑。而不用固化到代码中。
6、 增加备注字段,虽然我们考虑了很多用户需要输入信息的需求,但是无论何时我们都不可能考虑全,因此可以定义一个备注字段,允许用户将其它的信息填写在这里。无论表设计的再神奇,那么还是加一个备注字段。
7、 将记录创建人Id和记录创建人名字做为字段,这样看起来或许感到冗余有了Id还要名字干什么,使用住外键关联不就可以了吗,但是我们可以这样思考,如果只使用名字,那么人多了免不了名字重复,只使用id当然没有问题,但是我们查询时为了知道创建者的人名需要关联查询另外一张表,性能上不好,而且数据库看起来不是那么一目了然。并且创建人的名字也不是经常修改的。
8、 添加时间,有添加时间可以明确知道记录什么时候添加的。
9、 修改时间,可以知道记录什么时候被修改了,一旦数据出现问题,可以根据修改时间来定位问题。比如某人在这个时间做了哪些事。
10、 修改人id和名字,其作用就是标记谁对记录做了修改
11、 最后修改人
12、 最后修改时间
13、 记录所属公司id,方便我们查询只属于某个公司的记录
14、 记录所属部门id,方便我们查询只属于某个部门的记录
15、 记录所属工作组id,方便我们查询只属于某个工作组的记录
------------------------------------------------------------------------------------------------------------------------
主键设计:
不建议用多个字段做主键,单个表还可以,但是关联关系就会有问题
主键自增是高性能的。导入导出就有问题