本文转载自数据库设计:表的设计命名的十个注意点
Oracle
大小写敏感,在SQL
中可以不用“_”,因为可以用大小写一起的写法。这也是可以的)。tab
或tb
作为表前缀(本来就是一个表,为什么还要说明)。User_Login
,用户分组表User_GroupInfo
,这两个表建立多对多关系的表名为:User_Group_Relation
(关系统一用Relation
)。注意一点,主键在做其他表的外键时,或者在被其他表引用时,字段说明和字段名尽量保持一致,比如发帖表BBS_Topic
里的用户字段写成UI_ID
,这样跟用户信息表User_Info
的主键UI_ID
保持一致,看起来舒服,对应关系很明确,也不容易错,前后不一致时容易令人费解。Dictionary_
作为前缀。ID
(一般作为主键用),该记录创建的时间CreateDate
(创建时间),该记录的创建人CreatBy
(注意这里,没UI_ID
(用户信息表User_Info
的主键UI_ID
),因为还有修改人),最后修改人LastEditBy
,最后修改时间LastEditDate
(这些可以直接使用中文字符,而不使用编码,提高查询的效率)。同时有的时候需要注意,删除的时候并不真的删除该记录,而是添加一个标识位,比如XX_DeleteStaus
删除状态。1是有效的,0则是无效的。Employee
,而不是 Employees
。MAX(ID)
的做法,也可以自定义一个序列表,有点像序列,或者用时间的年月日秒具体到毫秒。关于列的命名,建议对数据类型也做一些规范,因为很容易确定,只有四种主要类型:数字,字符,时间,逻辑值,这些在类型上和长度上都可以定好规范,统一起来。Sys_OperateLog
、登录日志表Sys_LoginLog
、系统字典表Sys_Dictionary
、系统字典表类型Sys_DicType
中文名 | 字段名 | 注释 |
---|---|---|
操作日志编号 | OL_ID | 索引列,日志的编号 |
操作类型 | OL_Type | 是添加,修改,删除,查询等类容(可放在通用字典表) |
操作模块 | OL_Module | 操作模块,比如新闻模块,关联的是菜单表编号 |
操作内容 | OL_Content | 操作了什么内容,越具体越好(修改前、修改后) |
操作人 | UI_ID | 用户的信息 |
操作时间 | OL_AddDate | 日志记录创建时间 |
操作IP | OL_IP | 操作人的IP地址 |
备注信息 | OL_Remarks | 备注信息,一些其他的需要说明的信息 |
这样的一个操作日志比较笼统,不是能具体到具体的字段值更新,如果要具体到某个具体值的更新,则需要设计新的数据库
一般情况下需要这样几个表,系统中可能已经有了,但是我们拿到我们自己的数据库中来,一个是数据库列表的表(就是数据库中有几个表)(编号,创建时间,创建人,修改时间,修改人,表名,注释,是否删除),然后就是数据库表下面的字段类型(编号,创建时间,创建人,修改时间,修改人,字段名,字段类型,字段精度,字段说明,字段注释,表的编号),也就是字段列表,这时的日志操作表可以这样设计(编号,表名,被修改的字段名,修改前值,修改后值,操作人,操作时间,相关模块,操作IP) 这种能记录修改记录,但是添加和删除时记录就不是很方便控制了。
中文名 | 字段名 | 注释 |
---|---|---|
登录日志编号 | LL_ID | 登录的日志编号 |
登录人 | UI_ID | 登录人 |
登录时间 | LL_AddDate | 登录时间 |
登录IP | LL_IP | 登录的IP地址 |
登录状态 | LL_Status | 登录是否成功的标识位 |
登录浏览器 | LL_Browser | 登录浏览器 |
登录分辨率 | LL_Resolution | 登录的屏幕分辨率 |
还有一个就是数据字典表,我看过很多的数据库设计,类型表一个接一个,没有放在一起,还有的干脆写在注释里,有的根本就没有,这样某个程序员走了,这个字段就没人知道了,即使没走,自己也有可能时间长了忘掉,所以,见一个基础数据字典表的作用非常重要,其他的比如地区表(Sys_DicArea
),汉语拼音表(Sys_DicCharacter
)(用来汉字和拼音的转换)因为数据量较大,单独建表。这里介绍通用的数据字典表。
中文名 | 字段名 | 注释 |
---|---|---|
字典编号 | SD_ID | 字典的编号,可以直接使用此主键编码(注意删除时的关联关系) |
字典类型 | DY_ID | 字典类型的ID,需要建立字典类型表,因为放的是所有的字典表 |
字典编码 | SD_Code | 字典编码,支持自己编码(同一类型是唯一的,一般是整数型 |
字典中文名称 | SD_Name | 字典中文名称(比如男女,比如状态,可以放在字典表里,作为查看依据) |
字典备注 | SD_Remarks | 字典备注,字典需要一些备注信息 |
创建人 | ||
创建日期 | ||
修改人 | ||
修改日期 |
中文名 | 字段名 | 注释 |
---|---|---|
字典类型编号 | DT_ID | 字典的自动索引号 |
字典类型名称 | DT_Name | 字典类型的中文名称 |
字典的备注说明 | DT_Remarks | 字典使用的备注说明 |
字典状态 | DT_Status | 字典是否删除,不在使用 |
最后补充一些内容,一般设计数据库是这个样子的,但是不排除有些特殊的情形,为了数据的保密性,数据库的表名和字段名都是一些看似毫无意义的字符数字,比如Table1
,Col1
,但是有一个表是说明表,或者有对应的数据库文档设计。
补充:一些列说明了单位类型,可以在设计数据库的时候表明,比如HeightIncm
, WeightInKg
.这样一目了然。
原文:https://www.cnblogs.com/yungyu16/p/12964712.html