数据库设计心得
工具选择
进行数据库设计的时候,选择好一个合适的设计工具非常重要。一个好的设计开发工具可以大大提高效率。powerdesigner就是一个很好的选择,它能支持快速创建表,并支持表与表之间建立关系,使得数据模型设计变得简单高效。同时,能够实现概念模型与物理模型之间的自动转换,以及支持将SQL脚本导出,十分快捷便利。
针对性设计
在进行数据库设计之前需要明确包括数据存储的需求、数据访问的需求以及数据安全的需求等,这样才能够便于后续表的设计。针对于不同的数据需求,进行不同的设计处理。
例如,在本组的项目中我们需要对于用户的头像进行存储,但是头像图片通常较大,直接存储在数据库之中会增大查询以及存储的负担,于是选择将图片存储在服务器中,在数据库中存储该图片所在的路径,这样既能降低数据库存储负担,也能提高数据库中表的查询效率。
我们还对用户的聊天记录进行了存储,对于聊天记录起初是将其于聊天窗口的存放在一起,但后续发现这样会使得聊天窗口的表过大,在进行查找时效率会降低,于是将聊天记录抽取出来单独作为一张表,再将其于聊天窗口进行关联。
范式检查
在设计表的属性字段的过程中要注意是否满足数据库设计的三大范式,简单来说分别是表中的属性字段不可以再被分割;非主键属性必须完全依赖于主键属性;非主键属性必须直接依赖于主键属性。通过对于三范式的检查,可以确保数据的一致性和完整性,减少数据冗余和避免数据异常。
例如,我们组在设计登录日志表的过程中,在其中添加了用户id、用户邮箱、日志编号和时间。但这里违反了第二范式,用户邮箱依赖于用户id,用户id依赖于日志编号,那么用户邮箱是传递依赖于日志编号,并不是直接完全依赖于日志编号。后面我们将用户邮箱从表中删除,这样该表的设计就满足了三大范式,同时这里也就减少了数据的冗余。