20条数据库设计最佳实践

翻译自 https://dzone.com/articles/20-database-design-best

对和使用明确定义的单词并且风格一致的命名。

表名使用单数(例如:使用 而不是),代表着一个实体的集合,不需要用复数命名。

表名不要用空格,否则,您将不得不使用等字符来定义表,访问时还需要用引号, 直接用会更好。

表名不要使用不必要的前缀或者后缀,例如使用而不是。

保持密码的安全性,需要用的时候在程序里解密

所有表使用类型ID字段。 即使暂时不需要ID,将来也可能会需要,例如关联表,索引等。

索引选择类型的列,列索引会引起性能问题。

使用位字段存储布尔值,使用或是不必要的存储消耗。布尔值的字段列命名使用作为前缀。

提供数据库访问权限,不要把管理员权限分配给所有人。

尽量避免出现select * 查询除非必须需要,使用select [需要的列]可以提高查询效率。

如果应用程序代码足够大,则使用框架(例如, ...)。ORM框架的性能问题可以通过详细的配置参数来处理。

将大表、不用的表或很少使用的表,部分划分到不同的物理存储区以提高查询性能。

对于大型,敏感和任务评论者数据库系统,使用灾难恢复和安全服务,如故障转移群集,自动备份,复制等。

使用约束(外键,检查,非空...)来保证数据的完整性。 不要把所有的控制权都交给程序代码处理。

缺乏数据库文档是非常可恶的。 用ER图和说明文档来记录数据库设计。 也为触发器,存储过程和其他脚本编写注释行。

在大表上经常使用的查询创建索引。 分析工具可以用来确定需要定义哪些索引。 对于多行数据的查询,聚簇索引通常更好。 对于点查询,非聚集索引通常更好。

数据库服务器和Web服务器必须放置在不同的机器上。 这将提供更高的安全性(攻击者无法直接访问数据),并且由于请求数量和进程使用率降低,服务器CPU和内存性能会更好。

由于性能问题,不得在频繁查询的表中定义图像和数据列。 这些数据必须放在单独的表中,并且它们的指针可以在查询的表中使用。

标准化必须根据需要使用,以优化性能。 欠规范化会导致数据的过度重复,过度规范化会导致太多表中的过多连接。两者都会影响性能。

一定要为数据库设计留足够的时间,否则可能会花费比设计多成百上千倍的时间来维护设计不佳的数据库甚至需要重新设计。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180620G0DRKU00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券