数据库规范
一、关系型数据库(Mysql、PostgreSQL)
1.1 表名规范
- 模块_+功能点 示例:alllive_log alllive_category。
- 采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线'_'组成,命名简洁明确,多个单词用下划线'_'分隔,一个项目一个数据库。
- 全部小写命名,禁止出现大写,专有名词也要小写。
- 数据库创建 字符集:utf8mb4、排序规则:utf8mb4_general_ci。
- 表必须填写描述信息,字段有注释。
- 用单数形式表示名称,例如,使用 employee,而不是 employees。
1.2 字段规范
- 采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线'_'组成,命名简洁明确,多个单词用下划线'_'分隔。
- 全部小写命名,禁止出现大写。
- 系统中所有逻辑型中数值0表示为“假”,数值1表示为“真”,datetime、smalldatetime类型的字段没有默认值,必须为NULL。
- 表中字段是另外一张表的主键,则为表名+id ,体现关联关系 示例:user_id
- 禁止使用外键。
1.3 表设计
- 表必须定义主键,默认为ID,整型自增。
- 多表中的相同列,必须保证列定义一致。
- 强烈建议不使用外键, 数据的完整性靠程序来保证。
1.4 索引命名规则
- 单个索引中的字段数不超过5个。
- 索引名必须全部使用小写。
- 主键索引名为 pk_字段名;唯一索引名为 uk_字段名;普通索引名则为 idx_字段名。(pk 即 primary key ; uk_ 即 unique key ; idx_ 即 index)
- 组合索引建议包含所有字段名,过长的字段名可以采用缩写形式。例如idx_age_name_add。
- 不在低基数列上建立索引,例如“性别”。
- 合理创建联合索引,(a,b,c) 相当于 (a) 、(a,b) 、(a,b,c)。
二、Redis&KeyDB
2.1 key 设计规范
- 命名规范为:业务模块名::业务逻辑含义::其它:: value 类型。
- key 命名必须全部小写字母、数字和双冒号(::)组成,必须以英文字母开头。
- 避免使用过长的键名,尽量保持简洁和清晰。
- 避免使用过多的层级关系或分组关系,以免增加系统的复杂性。
- 尽量避免使用通配符查询,例如KEYS user:*,这样的查询性能低。
2.2 单冒号的使用
单冒号的命名方式是将键的名称以冒号分隔的形式进行组合。例如,我们可以使用user:id来代表一个用户的ID键。单冒号的使用有以下几个特点:
- 层级关系:单冒号可以用来表示键之间的层级关系。例如,user:id可以表示用户的ID键,而user:id:name可以表示用户的名称键。
- 查询模式:单冒号的命名方式可以方便地进行模糊查询。例如,可以使用user:*来查询所有的用户键。
2.3 双冒号的使用
双冒号的命名方式是将键的名称以双冒号分隔的形式进行组合。例如,我们可以使用user::id来代表一个用户的ID键。双冒号的使用有以下几个特点:
- 分组关系:双冒号可以用来表示键之间的分组关系。例如,user::id可以表示用户的ID键,而order::id可以表示订单的ID键。
- 更加清晰:双冒号的使用可以使键的层级关系更加清晰明确。例如,user::id::name可以更加清晰地表示用户的名称键。
2.4 单冒号和双冒号的选择
在选择单冒号和双冒号的命名方式时,需要根据实际的需求和使用场景进行选择。下面是一些选择的建议:
- 如果键之间存在较为复杂的层级关系,建议使用单冒号的命名方式。例如,用户的信息包括姓名、邮箱、地址等多个属性,可以使用user:id:name、user:id:email、user:id:address等形式。
- 如果键之间存在较为简单的分组关系,建议使用双冒号的命名方式。例如,用户的信息和订单的信息是两个不同的分组,可以使用user::id:name、order::id:amount等形式。
原文地址:https://blog.csdn.net/nonagontech/article/details/144066991
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!