sqlserver 数据库设计规范
2021-11-01 本文已影响0人
Sunday_1024
0 建议在ssms表设计器里增加说明和默认设置列,方便创建库。效果如下
image.png1 每个表一定要有主键
主键属于索引的一种,会提高查询效率。
2 每个表都要写中文注释和默认值
有中文注释(也就是数据库[说明]),方便业务理解,代码生成工具也会调用注释内容方便代码生成。
图22.1 表都要有默认值,除了个别的datetime类型
有默认值,避免判断数据为null,判断null效率很低下。除了个别datetime类型可以允许为null,例如更新时间updatetime字段,如果给默认值业务上可能会有歧义,避免这种情况可以设置为null。而addtime不允许为null是业务上的规定。
2.2 主键注释可以不写,要写可写表注释
主键写表注释(说明),方便查看表备注。
2.3 关联其他表字段,要在注释里写关联表
如图2 newsTypeid 注释写法:字段说明+ 关联xxx表主键
2.4 如果表的值含义是整数类型,C#程序可以用枚举来表示
如图2 newsTypeEnum 注释写法:字段说明 (枚举)
2.5 如果表的值含义是文字类型,要写上所有的值
如图2 newsType2 注释写法:字段说明 [值1,值2,值3,值4,....] 。 注意值要以中括号表示
2.6 如果表的值含义是其他规则,用小括号进行说明
如图2 tags字段
3 禁止使用ntext、text 和 image作为数据库字段类型
请改用 nvarchar(max)、 varchar(max)和 varbinary(max) 。
微软官方都不推荐使用ntext、text 和 image。
https://docs.microsoft.com/zh-cn/sql/t-sql/data-types/ntext-text-and-image-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15
说明一点:nvarchar(4000) 跟 nvarchar(max) 不是一个东东,nvarchar(数值) 只能是1到4000 双字节长度,而nvarchar(max)是存储2GB长度