1.操作规范
1.表中的第一个id字段一定是主键且为自动增长,一般为1,请使用UNSIGNED属性,主键与业务无关。
2.外键名字修改成’关联对象——id’(例如:study表patient_id),数据库不设外键约束。
3.所有字段都增加非空约束,防止业务逻辑报npe异常。
4.使用utf8mb4字符集,防止表情出现乱码。
5.所有字段增加注释。(除非显而易见)
6.每张表包含mtime,ctime字段,仍使用unsigned int。
7.时间字段使用时间戳(秒数)储存,设置默认值。
8.使用tinyint代替enum,默认值default=0,在业务中处理enum字段。
9.varchar类型设置长度为2的倍数,(32,64,128等)
10.增加null处理,比如特殊字段null,0,处理。
11.与sql 关键字,系统函数区别处理。
2.约定俗成
1.所以表名都小写,单词之间用下划线分开,单词都用单数形式。
2.主键是针对一个表的, 而不是针对一个字段,因为主键是唯一的,一个表一般只能有一个主键。
3.数据库字段一般不超过32字节。
4.double,float,改成 decimal类型。
5.int,tinyint,bigint不设置长度(设置也没用)。
6.用尽量少的存储空间来存数一个字段的数据。
7.使用常用英语(或者其他任何语言)而不要使用编码或者拼音首字母缩写
3.续言
以上只是本人在设计数据库表使用的规范,如果有好的建议或意见请及时和我联系www.codemanzz@163.com,大致的建标语句如下:
-- ----------------------------
-- Table structure for dcm_beam_limiting
-- ----------------------------
DROP TABLE IF EXISTS `dcm_beam_limiting`;
CREATE TABLE `dcm_beam_limiting` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`control_point_id` int(11) unsigned NOT NULL,
`beam_id` int(11) unsigned NOT NULL DEFAULT '0',
`beam_number` int(11) NOT NULL DEFAULT '0',
`control_point_index` int(11) NOT NULL DEFAULT '0',
`rt_beam_limiting_device_type` varchar(256) NOT NULL DEFAULT '' COMMENT '射线 限制装置类型',
`leaf_jaw_pairs_number` int(11) NOT NULL DEFAULT '0' COMMENT '成对多页光栅的数量',
`source_to_device_distance` decimal(20,12) NOT NULL DEFAULT '0.000000000000' COMMENT '源面距离',
`leaf_position_boundaries` varchar(512) NOT NULL DEFAULT '' COMMENT '叶片位置边界',
`leaf_jaw_positions` varchar(1024) NOT NULL DEFAULT '' COMMENT '多叶光栅位置',
`ctime` int(11) unsigned NOT NULL DEFAULT '0',
`mtime` int(11) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;