规则1:字段命名应具有含义,能反映该字段存储的内容,且字段应增加字段备注;
示例
如下语句不符合规范(假定存储的字段为用户名和密码,如下的字段名毫无意义也没有备注)
CREATE TABLE wap_user
(
col1 VARCHAR(100),
col2 VARCHAR(16)
);
如下语句符合规范
CREATE TABLE wap_user
(
user_name VARCHAR(100),
pass_word VARCHAR(16)
);
如下语句是使用了无意义字段名,但增加了字段说明,不作为推荐方法,但确实字段名无法表述含义时,必须使用该方法;
CREATE TABLE wap_user
(
col1 VARCHAR(100) comment 'username',
pass_word VARCHAR(16) comment 'password'
);
规则2:同种用途的字段,在所有表中,应保持有同样的字段类型和字段长度,并尽量保持一致的字段命名;
示例
如下语句不符合规范(字段user_name在两个有业务关系的表中字段长度不一致,易导致业务接口冲突)
CREATE TABLE wap_user
(
user_name VARCHAR(100),
pass_word VARCHAR(16)
);
CREATE TABLE wap_user_login_log
(
user_name VARCHAR(80),
login_date DATE
);
如下语句符合规范
CREATE TABLE wap_user
(
user_name VARCHAR(100),
pass_word VARCHAR2(16)
);
CREATE TABLE wap_user_login_log
(
user_name VARCHAR(100),
login_date DATE
);
以下是建议的公共字段名称及类型
create_user | VARCHAR(32) | 建档人 |
create_time | datetime | 创建时间 |
update_user | VARCHAR(32) | 更新人 |
update_time | datetime | 更新时间 |
remark | VARCHAR(255) | 备注 |
contact_name | VARCHAR(32) | 联系人 |
tel | VARCHAR(20) | 电话号码 |
mob | VARCHAR(20) | 手机号码 |
address | VARCHAR(100) | 联系地址 |
zip_code | VARCHAR(10) | 邮编 |
identity_card | VARCHAR(25) | 身份证号 |
fax | VARCHAR(20) | 传真 |
VARCHAR(64) | 电邮 |
建议1: 字段名建议不要用JAVA关键字来命名,;
4.2.4 主键
规则1:涉及到要做分库分表的表用有序UUID做主键,UUID主键类型选择CHAR(32);
规则2:不涉及分库分表的表选用自增长ID做主键,主键类型使用unsigned int或unsigned big int;
规则3:主键无特别要求的,字段名统一定义为 id;
4.2.4 外键
规则1:外键名应以"fk_"开头,后接表名;
示例
如下语句不符合规范(外键名未以fk_开头)
alter table wap_user_login_log
add constraint wap_user_login_log_f foreign key(user_name) REFERENCES
tb_user_name(user_name)
如下语句符合规范
ALTER TABLE wap_user_login_log
ADD CONSTRAINT fk_wap_user_login_log FOREIGN KEY(user_name) REFERENCES
tb_user_name(user_name)
规则2:不同的表的外键,如果引用的是相同表的相同字段,则外键字段名及类型应保持一致;