mysql,字段命名规范

发布时间:2016-11-27 来源: 规范 点击:

篇一:MySQL数据库命名规范及约定

MySQL数据库命名规范及约定

一、【操作规范】

1. 如无备注,则表中的第一个id字段一定是主键且为自动增长;

2. 如无备注,则数值类型的字段请使用UNSIGNED属性;

3. 如无备注,排序字段order_id在程序中默认使用降序排列;

4. 如无备注,所有字段都设置NOT NULL,并设置默认值;

5. 如无备注,所有的布尔值字段,如is_hot、is_deleted,都必须设置一个默认值,并设为0;

6. 所有的数字类型字段,都必须设置一个默认值,并设为0;

7. 针对varchar类型字段的程序处理,请验证用户输入,不要超出其预设的长度;

8. 建表时将数据字典中的字段中文名和属性备注写入数据表的备注中(“PK、自动增长”不用写);

9. 如无说明,建表时一律采用innodb引擎;

二、【常用表名约定】

0. 说明:表前缀用项目名称首字母缩写;所以表名都小写,单词之间用下划线分开,单词都用单数形式

1. user – 用户

2. category – 分类

3. goods – 商品、产品等一切可交易网站的物品都用此命名

4. good_gallery – 物品的相册

5. good_cate – 物品的分类,除了单独作为表名,其他地方分类单词一律用缩写cate

4. attr – 属性

5. article – 文章、新闻、帮助中心等以文章形式出现的,一般都用此命名

6. cart – 购物车

7. feedback – 用户反馈

8. order – 订单

9. site_nav – 包括页头和页尾导航

10. site_config – 系统配置表

11. admin – 后台用户 【RBAC标准表】

12. role – 后台用户角色【RBAC标准表】

13. access – 后台操作权限,相当于action【RBAC标准表】

14. role_admin – 后台用户对应的角色【RBAC标准表】

15. access_role – 后台角色对应的权限【RBAC标准表】

16. 待续

三、【常用列名约定】

1. 表名_id – 通常用作外键命名

2. cid – 特殊的编号,带有元数据,方便关联查询,你可以把它理解成类别(层次)编号。举个例子,产品在分类时,往往需要将其归类到子分类下,相应的字段中也一般只记录子分类的id,这时若需要知道该产品属于哪个主分类,就需要通过子分类信息再查询到主分类信息,这是比较麻烦的,cid字段就是要解决这个问题。一般的站点几十个分类肯定是够用了,所以这里假设某一主分类的cid为11,则子分类的cid从1101开始编号,处理时只需截取前两位数值便可知道该产品属于哪一个主分类了。

3. add_time – 添加时间、上架时间等

4. last_time – 最后操作时间,如登录、修改记录

5. expire_time – 过期时间

6. name – 商品名称、商家名称等,不要跟title混用,title只用于文章标题、职称等

7.

mysql 字段命名规范

price – 价格

8. thumb – 只要是列表页面中的窗口图,一律用此命名

9. image_src – 相册中的图片地址一律用此命名,不要出现各种

img,image,img_url,thumb_url等

10. head_thumb – 用户头像, 虽然有点长,一定要遵守。不要出现上述情况

11. image_alt – 相册中图片的alt属性

12. desc – 描述、简介,比如goods_desc,不要出现goods_txt这种

13. details – 详情、文章内容等

14. order_id – 排序

15. telephone – 座机号码

16. mobile – 手机号码

17. phone – 当不区分手机和座机时,请用phone命名

18. address – 地址,单独出现不要用addr缩写,组合出现时需用缩写,比如mac地址,mac_addr

19. zipcode – 邮编

20. region – 地区,大的区域,比如记录杭州市、温州市等

21. area – 区域,小的,比如上城区,江干区等

22. avg_cost – 人均消费

23. 待续

四、【数据表字段设计范例】

分类表(t_category)

篇二:MYSQL数据库命名及设计规范

MYSQL数据库命名及设计规范

1.设计原则

1) 标准化和规范化

数据的标准化有助于消除数据库中的数据冗余。标准化有好几种形式,但Third Normal Form(3NF)通常被认为在性能、扩展性和数据完整性方面达到了最好平衡。简单来说,遵守3NF 标准的数据库的表设计原则是:“One Fact in One Place”即某个表只包括其本身基本的属性,当不是它们本身所具有的属性时需进行分解。表之间的关系通过外键相连接。它具有以下特点:有一组表专门存放通过键连接起来的关联数据。

举例:某个存放客户及其有关定单的3NF 数据库就可能有两个表:Customer和Order。Order表不包含定单关联客户的任何信息,但表内会存放一个键值,该键指向Customer表里包含该客户信息的那一行。

事实上,为了效率的缘故,对表不进行标准化有时也是必要的。

2) 数据驱动

采用数据驱动而非硬编码的方式,许多策略变更和维护都会方便得多,大大增强系统的灵活性和扩展性。

举例,假如用户界面要访问外部数据源(文件、XML 文档、其他数据库等),不妨把相应的连接和路径信息存储在用户界面支持表里。还有,如果用户界面执行工作流之类的任务(发送邮件、打印信笺、修改记录状态等),那么产生工作流的数据也可以存放在数据库里。角色权限管理也可以通过数据驱动来完成。事实上,如果过程是数据驱动的,你就可以把相当大的责任推给用户,由用户来维护自己的工作流过程。

3) 考虑各种变化

在设计数据库的时候考虑到哪些数据字段将来可能会发生变更。

举例,姓氏就是如此(注意是西方人的姓氏,比如女性结婚后从夫姓等)。所以,在建立系统存储客户信息时,在单独的一个数据表里存储姓氏字段,而且还附加起始日和终止日等字段,这样就可以跟踪这一数据条目的变化。

2.数据库涉及字符规范

采用26个英文字母(区分大小写)和0-9这十个自然数,加上下划线'_'组成,共63个字符.不能出现其他字符(注释除外).

注意事项:

1) 以上命名都不得超过30个字符的系统限制.变量名的长度限制为29(不包括标识字符@).

2) 数据对象、变量的命名都采用英文字符,禁止使用中文命名.绝对不要在对象名的字符之间留空格.

3) 小心保留词,要保证你的字段名没有和保留词、数据库系统或者常用访问方法冲突

5) 保持字段名和类型的一致性,在命名字段并为其指定数据类型的时候一定要保证一致性.假如数据类型在一个表里是整数,那在另一个表里可就别变成字符

型了.

3.数据库命名规范

数据库,数据表一律使用前缀

正式数据库名使用小写英文以及下划线组成,尽量说明是那个应用或者系统在使用的.比如:

web_19floor_net

web_car

备份数据库名使用正式库名加上备份时间组成,如:

web_19floor_net_20070403

web_car_20070403

4.数据库表命名规范

数据表名使用小写英文以及下划线组成,尽量说明是那个应用或者系统在使用的.

相关应用的数据表使用同一前缀,如论坛的表使用cdb_前缀,博客的数据表使用supe_前缀,前缀名称一般不超过5字

比如:

web_user

web_group

supe_userspace

备份数据表名使用正式表名加上备份时间组成,如:

web_user_20070403

web_group_20070403

supe_userspace_20070403

5.字段命名规范

字段名称使用单词组合完成,首字母小写,后面单词的首字母大写,最好是带表名前缀.

如 web_user 表的字段:

userId

userName

userPassword

表与表之间的相关联字段要用统一名称,

如 web_user 表里面的 userId 和 web_group 表里面的 userId 相对应

6.字段类型规范

规则:用尽量少的存储空间来存数一个字段的数据.

比如能用int的就不用char或者varchar

能用tinyint的就不用int

能用varchar(20)的就不用varchar(255)

时间戳字段尽量用int型,如created:表示从'1970-01-01 08:00:00'开始的int秒数,采用英文单词的过去式;gmtCreated:表示datetime类型的时间,即形如'1980-01-01 00:00:00'的时间串,Java中对应的类型为Timestamp

7.数据库设计文档规范

所有数据库设计要写成文档,文档以模块化形式表达.大致格式如下: /***************************

数据库名称:xtata_test

数据库描述:测试数据库

版本:v0.1

设计人:许立强

设计时间:2008-5-13

*/

8.索引使用原则:

1) 逻辑主键使用唯一的成组索引,对系统键(作为存储过程)采用唯一的非成组索引,对任何外键列采用非成组索引.考虑数据库的空间有多大,表如何进行访问,还有这些访问是否主要用作读写.

2) 大多数数据库都索引自动创建的主键字段,但是可别忘了索引外键,它们也是经常使用的键,比如运行查询显示主表和所有关联表的某条记录就用得上.

3) 不要索引blob/text等字段,不要索引大型字段(有很多字符),这样作会让索引占用太多的存储空间.

4) 不要索引常用的小型表

不要为小型数据表设置任何键,假如它们经常有插入和删除操作就更别这样作了.对这些插入和删除操作的索引维护可能比扫描表空间消耗更多的时间.

9.sql语句规范

所有sql关键词全部大写,比如SELECT,UPDATE,FROM,ORDER,BY等,所有的表名和库名都要用``包含

如:

SELECT COUNT(*) FROM `cdb_members` WHERE `userName` = 'aeolus';

10.其他设计技巧

1) 避免使用触发器

触发器的功能通常可以用其他方式实现.在调试程序时触发器可能成为干扰.假如你确实需要采用触发器,你最好集中对它文档化.

2) 使用常用英语(或者其他任何语言)而不要使用编码或者拼音首字母缩写 在创建下拉菜单、列表、报表时最好按照英语名排序.假如需要编码或者拼音首字母缩写,可以在旁边附上用户知道的英语.

3) 保存常用信息

让一个表专门存放一般数据库信息非常有用.在这个表里存放数据库当前版本、最近检查/修复(对Access)、关联设计文档的名称、客户等信息.这样可以实现一种简单机制跟踪数据库,当客户抱怨他们的数据库没有达到希望的要求而与你联系时,这样做对非客户机/服务器环境特别有用.

4) 包含版本机制

在数据库中引入版本控制机制来确定使用中的数据库的版本.时间一长,用户的需求总是会改变的.最终可能会要求修改数据库结构.把版本信息直接存放到数据库中更为方便.

5) 编制文档

对所有的快捷方式、命名规范、限制和函数都要编制文档.

采用给表、列、触发器等加注释的数据库工具.对开发、支持和跟踪修改非常有用.

对数据库文档化,或者在数据库自身的内部或者单独建立文档.这样,当过了一年多时间后再回过头来做第2 个版本,犯错的机会将大大减少。

6) 测试、测试、反复测试

建立或者修订数据库之后,必须用用户新输入的数据测试数据字段.最重要的是,让用户进行测试并且同用户一道保证选择的数据类型满足商业要求.测试需要在把新数据库投入实际服务之前完成。

7) 检查设计

在开发期间检查数据库设计的常用技术是通过其所支持的应用程序原型检查数据库.换句话说,针对每一种最终表达数据的原型应用,保证你检查了数据模型并且查看如何取出数据。

篇三:MySQL的命名规则

MySQL的命名规则

几乎每条SQL 语句都在某种程度上涉及一个数据库或其组成成分。本节介绍引用数据库、表、列、索引和别名的语法规则。名称是区分大小写的,这里也对其进行了介绍。

1、引用数据库的成分

在用名称引用数据库的成分时,受到可使用的字符以及名称可具有的长度的限制。名称的形式还依赖于使用它们的上下文环境:

■ 名称中可用的字符。名称可由服务器所采用的字符集中任意字母、数字、“_”和“ $”组成。名称可按上述任意字符包括数字起头。但是名称不能单独由数字组成,因为那样会使其与数值相混。MySQL所提供的名称用一个数起始的能力是很不寻常的。如果使用了这样的一个名称,要特别注意包含“ E”和“ e”的名称,因为这两个字符可能会导致与表达式的混淆。23e + 14 表示列23e 加14,但是23e+14 又表示什么?它表示一个科学表示法表示的数吗?

■ 名称的长度。数据库、表、列和索引的名称最多可由6 4个字符组成。别名最多可长达256个字符。

■ 名称限定词。为了引用一个数据库,只要指定其名称即可,如:

其中db_name 为所要引用的数据库名。要想引用一个表,可有两种选择。一种选择是使用由数据库名和表名组成的完全限定的表名,例如:

其中,tbl_name 为要引用的表名。另一种选择是由表名自身来引用缺省(当前)数据库中的一个表。如果samp_db 为缺省数据库中的一个表,下面的两个语句是等价的:

其中member 为数据库samp_db 中的一个表。要引用一个列,有三种选择,它们分别为:完全限定、部分限定和非限定。完全限定名(如db _ name . tbl _ name . col _ name)是完全地指定。部分限定名(如tbl_name. col _ name)引用指定表中的列。非限定名(如col _ name)引用由环境上下文给出的表中的列。下面两

个查询使用了相同的列名,但是FROM 子句提供的上下文指定了从哪个表中选择列:

虽然愿意的话,提供完全限定名也是合法的,但是一般不需要提供完全限定名,如果用USE 语句选择了一个数据库,则该数据库将成为缺省数据库并在每一个非限定表引用中都隐含指向它。如果正使用一条SELECT 语句,此语句只引用了一个表,那么该语句中的每个列引用都隐含指向这个表。只在所引用的表或数据库不能从上下文中确定时,才需要对名称进行限定。下面是一些会出现混淆的情形:

■ 从多个数据库中引用表的查询。任何不在缺省数据库中的表都必须用“数据库名表名”的形式引用,以便让MySQL知道在哪个数据库中找到该表。

■ 从多个表中选择一列的查询,其中不止一个表含有具有该名称的列。

2、SQL 语句中的大小写规则

SQL 中的大小写规则在语句的不同部分是不同的,而且还取决于所引用的东西以及运行的操作系统。下面给出相应的说明:

■ SQL 关键字和函数名。关键字与函数名是不区分大小写的。可按任意的大小写字符给出。下面的三条语句是等价的:

■ 数据库与表名。MySQL中数据库和表名对应于服务器主机上的基本文件系统中的目录和文件。因此,数据库与表名是否区分大小写取决于主机上的操作系统处理文件名的方式。运行在UNIX 上的服务器处理数据库名和表名是区分大小写的,因为UNIX 的文件名是区分大小写的。而Windows 文件名是不区分大小写的,所以运行在Windows上的服务器处理数据库名和表名也是不区分大小写的。如果在UNIX 服务器上创建一个某天可能会移到Windows 服务器上的数据库,应该意识到这个特性:如果现在创建了两个分别名为abc 和ABC 的表,它们在Windows 机器上将是没有区别的。避免这种情况发生的一种方法是选择一种字符(如小写),总是以这种字符创建数据库和表名。这样,在将数据库移到不同的服务器时,名称的大小写便不会产生问题。

■ 列与索引名。MySQL中列和索引名是不区分大小写的。下面的查询都是等价的:

■ 别名。别名是区分大小写的。可按任意的大小写字符说明一个别名(大写、小写或大小写混合),但是必须在任何查询中都以相同的大小写对其进行引用。不管数据库、表或别名是否是区分大小写的,在同一个查询中的任何地方引用同一个名称都必须使用相同的大小写。对于SQL 关键字、函数名或列名和索引名没有这个要求。可在同一个查询中多个地方用不同的大小写对它们进行引用。当然,如果使用一致的大小写而不是“胡乱写”的风格(如SelECt NamE FrOm ...),相应的查询可读性要强得多。

相关热词搜索:字段 命名 规范 mysql mysql字段取名规范 mysql建表字段规范 mysql字段改名

热点文章阅读

版权所有 小龙文挡网 www.xltkwj.com