mysql 命名规范_MYSQL 数据库命名与设计规范

2024-03-14 06:50

本文主要是介绍mysql 命名规范_MYSQL 数据库命名与设计规范,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MYSQL 数据库命名与设计规范

更新时间:2008年12月24日 23:50:43   作者:

对于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.数据库设计文档规范

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

‘——————————————-

‘ 表名: web_user

‘ 作者: Aeolus(傻鱼)

‘ 日期: 2007-04-11

‘ 版本: 1.0

‘ 描述: 保存用户资料

‘ 具体内容:

‘ UserID int,自动增量 用户代码

‘ UserName char(12) 用户名字

‘ ……

‘——————————————–

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) 检查设计

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

相关文章

1a1b05c64693fbf380aa1344a7812747.png

最近在Win2003上的MySQL出现过多次正常运行时无法连接数据库故障,根本原因就是因为安全设置以后容易出现的问题,其实很简单的解决2012-03-03

4f55910a645b073bc4fc65dc10dc14bd.png

这篇文章主要介绍了mysql根据汉字首字母排序sql语句,需要的朋友可以参考下2014-03-03

0ea3c7666119d5615e582f823fb3fad6.png

以下是对修改MYSQL密码的几种常用方法进行了总结介绍,需要的朋友可以过来参考下2013-08-08

4f96a78db829b1556ff16de21e013c7a.png

下面小编就为大家带来一篇mysql连接数设置操作方法(Too many connections)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-03-03

8cc1031babc6aff2319f1c6af8544aa0.png

之前在使用MySQL 5.5 Command Line Client时,无论输入什么密码,都出现闪退的情况,纠结了半天才找到原因,下面小编给大家分享我的解决方法,感兴趣的朋友一起看看吧2016-11-11

0c932a99bb7b6f23c937db507070cc7b.png

本文给大家详细介绍了如何在Mac上安装mysql数据库的方法,非常的细致,有需要的小伙伴可以参考下2018-05-05

cca732bf65a93ed2ec0ac80c638460fe.png

这篇文章主要介绍了如何在Mysql上创建数据表,需要的朋友可以参考下2014-03-03

2d9f31f2af7b675a3d153d2b7f1035a7.png

经常在执行sql语句时,会发现这个问题,一般就是连接mysql数据库不稳定2008-06-06

b452cee8ec5cd9e58ab98eba17281e59.png

最近一直在研究mysql的主从同步问题,现在网上也有很多资料,现在感觉写的都很好(当初感觉写的很差,是因为自己的领悟较差),于是想跟大家分享一下自己配置的整个过程和经验。有需要的朋友欧美可以参考借鉴,感兴趣的朋友们下面来一起学习学习吧。2016-11-11

f4838ec7e2d4da28e0b57d4e852dadd4.png

本文介绍MySQL数据库中执行select查询语句,并对查询的结果使用order by 子句进行排序2016-04-04

最新评论

这篇关于mysql 命名规范_MYSQL 数据库命名与设计规范的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/807557

相关文章

mysql索引四(组合索引)

单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引;组合索引,即一个索引包含多个列。 因为有事,下面内容全部转自:https://www.cnblogs.com/farmer-cabbage/p/5793589.html 为了形象地对比单列索引和组合索引,为表添加多个字段:    CREATE TABLE mytable( ID INT NOT NULL, use

mysql索引三(全文索引)

前面分别介绍了mysql索引一(普通索引)、mysql索引二(唯一索引)。 本文学习mysql全文索引。 全文索引(也称全文检索)是目前搜索引擎使用的一种关键技术。它能够利用【分词技术】等多种算法智能分析出文本文字中关键词的频率和重要性,然后按照一定的算法规则智能地筛选出我们想要的搜索结果。 在MySql中,创建全文索引相对比较简单。例如:我们有一个文章表(article),其中有主键ID(

mysql索引二(唯一索引)

前文中介绍了MySQL中普通索引用法,和没有索引的区别。mysql索引一(普通索引) 下面学习一下唯一索引。 创建唯一索引的目的不是为了提高访问速度,而只是为了避免数据出现重复。唯一索引可以有多个但索引列的值必须唯一,索引列的值允许有空值。如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该使用关键字UNIQUE,把它定义为一个唯一索引。 添加数据库唯一索引的几种

mysql索引一(普通索引)

mysql的索引分为两大类,聚簇索引、非聚簇索引。聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引则不同。聚簇索引能够提高多行检索的速度、非聚簇索引则对单行检索的速度很快。         在这两大类的索引类型下,还可以降索引分为4个小类型:         1,普通索引:最基本的索引,没有任何限制,是我们经常使用到的索引。         2,唯一索引:与普通索引

关于如何更好管理好数据库的一点思考

本文尝试从数据库设计理论、ER图简介、性能优化、避免过度设计及权限管理方面进行思考阐述。 一、数据库范式 以下通过详细的示例说明数据库范式的概念,将逐步规范化一个例子,逐级说明每个范式的要求和变换过程。 示例:学生课程登记系统 初始表格如下: 学生ID学生姓名课程ID课程名称教师教师办公室1张三101数学王老师101室2李四102英语李老师102室3王五101数学王老师101室4赵六103物理陈

数据库期末复习知识点

A卷 1. 选择题(30') 2. 判断范式(10') 判断到第三范式 3. 程序填空(20') 4. 分析填空(15') 5. 写SQL(25') 5'一题 恶性 B卷 1. 单选(30') 2. 填空 (20') 3. 程序填空(20') 4. 写SQL(30') 知识点 第一章 数据库管理系统(DBMS)  主要功能 数据定义功能 (DDL, 数据定义语

【服务器运维】MySQL数据存储至数据盘

查看磁盘及分区 [root@MySQL tmp]# fdisk -lDisk /dev/sda: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical)

给数据库的表添加字段

周五有一个需求是这样的: 原来数据库有一个表B,现在需要添加一个字段C,我把代码中增删改查部分进行了修改, 比如insert中也添入了字段C。 但没有考虑到一个问题,数据库的兼容性。因为之前的版本已经投入使用了,再升级的话,需要进行兼容处理,当时脑子都蒙了,转不过来,后来同事解决了这个问题。 现在想想,思路就是,把数据库的表结构存入文件中,如xxx.sql 实时更新该文件: CREAT

SQL Server中,查询数据库中有多少个表,以及数据库其余类型数据统计查询

sqlserver查询数据库中有多少个表 sql server 数表:select count(1) from sysobjects where xtype='U'数视图:select count(1) from sysobjects where xtype='V'数存储过程select count(1) from sysobjects where xtype='P' SE

SQL Server中,always on服务器的相关操作

在SQL Server中,建立了always on服务,可用于数据库的同步备份,当数据库出现问题后,always on服务会自动切换主从服务器。 例如192.168.1.10为主服务器,12为从服务器,当主服务器出现问题后,always on自动将主服务器切换为12,保证数据库正常访问。 对于always on服务器有如下操作: 1、切换主从服务器:假如需要手动切换主从服务器时(如果两个服务