`
saybody
  • 浏览: 911353 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

关于设计表时应该注意的问题

阅读更多
关于设计表时应该注意的问题<?xml:namespace prefix = o />

如有错误欢迎大家指出。这段时间在家里,做了点修正。
1、慎重选择表名。

有两种选择:
按照多数开发语言的命名规则。比如(myCustomer)。
按照多数开源思想命名规则。比如(my_customer)。
按照咱们中国人的思想。比如(我的客户)。
第一种有个缺点,很容易忘掉大写的字母。
第二种则比较好,每个WORD间用下划线连接,避免遗忘。
第三种建议不要用,虽然很好记。不觉得解析这个表的时候还需要编码转化吗?我个人理解,大家可以补充。
2. 关于编码的设定。

A. GBK/GB2312.(适用于纯中文存储)。
B.UTF8.(适用于中英文混合存储)。
C.LATIN1。(适用于纯英文存储)。
D. 其他的。
3.关于表引擎的选择。

A.MYISAM.(很多人说她的表级锁定会带来好多问题,其实只要设计好对应的表以及写好对应的SQL查询就没有那么大的问题。)
B.INNODB. (如果要用到事务,选择她不会错。至于多数人讲的MASTER/SLAVE结构上用INNODBMASTER的选择是否正确,就要看你怎么用了。不能一味的疯狂使用INNODB。除非你想要确保非常高可用性,
C.CSV. (以前我写过文章,关于这个引擎。个人觉得最主要的是来存储少量数据以及从EXCELMYSQL的转换方面会很有用。当然只要涉及到规则数据的导入,她就可以办到。)
D. BLACKHOLE. (觉得最完美的用处在于MASETR/SLAVE上面,并且MASTER是一个临时的专门负责写的机器。不过缺点也很多,会与MYISAM或者INNODB或者其他的引擎有所冲突,这点自己要做个权衡)。
E. MEMORY. (应该说是MYISAM的兄弟了。不过在读内存总比读磁盘的速度要快。不过要注意,它不支持动态数据类型)。
F. FEDERATED. (典型的分布式引擎。我以前文章中有介绍。)
G. NDB。(网络版存储引擎。因为Replication 总是有延迟,所以如果系统容不得任何延迟,就用这个吧。)
H. FOLCON。(6.0后用来代替INNODB的引擎。)
I. 其他旧的以及新开发的引擎具体介绍:http://dev.mysql.com/doc/refman/6.0/en/storage-engines.html)。
4.关于属性数据类型的选择。

A. INT(一个字节的TINYINT,两个字节的SMALLINT,三个字节的MEDIUMINT,四个字节的INT8个字节的BIGINT。记住:UNSIGNED不管你定义或者不定义,都不影响内部的存储字节大小)
B. 少于10个字符用CHAR是在合适不过了。(不过要记住在MEMORY引擎里面会自动把VARCHAR转化为CHAR)
C. 我一般用DECIMAL或者NUMERIC来代替FLOAT 或者DOUBLE。因为老板要求精确的数字。如果不要求精确的,那就用FLOAT吧。速度快,占空间小。(DECIMAFLOAT(P)是动态存储。比如:DECIMAL(10,2)占用5个字节。FLOAT4个字节,)
D.BLOBTEXT,VARCHAR(一般存放文章内容,特别是新闻网站。需要的字节数是所存储的字符长度+1。记住BLOB和VARCHAR是TEXT和CHAR的BINARY类型)
E. ENUM(在一定范围内绝佳的代替VARCHARCHAR的工具,因为她只占一到两个字节。)
F. 时间和日期类型(占3个字节的DATE8个字节的DATETIME4个字节的TIMESTAMP3个字节的TIME1个字节的YEAR。)。如果要存储比如‘1983’这样的年份,用YEAR明显比VARCHAR或者CHAR要节省空间。因为后者要占5个字节。
G. BOOLEAN(用来存储YES或者NO之类的值,占用一个字节。)
H. 关于自增字段。目前我们的项目中涉及到好多ORDER BY RAND()操作。此类语句在数据库并发大的时候会造成CPU严重阻塞,持续产生数据库死锁!解决此类问题最好的办法就是利用自增字段,用程序随即生成数字序列,或者在数据库端随即生成数字序列。
I.关于ZEROFILL。非常好用的前置填补0的存储,而不是用用对应个数的空串来代替。在需要前置补零的操作中INT ZEROFILL可以用来代替CHAR或者VARCHR
5. 关于默认值。

A. 5.0之后,只要设定字段为NOT NULL,系统自动给出默认值。对应CHAR->’’,INT->0,BOOLEAN->0等等。
B. 5.0之前的版本,需要手动指定默认值,否则会出现一定的异常。到时候查都不好查了。
6. 关于多数据库建立。

A. 应该把对应的业务放在各自不同的数据库里,而不是所有业务放到一个库里面。
B. 数据库的命名和表命名一样。
7. 关于索引。

A. 设计表初期尽量考虑到应该建立的索引。所有建立的索引一定要测试一下,看是否有必要,否则会翻倍的减少写数据的性能。
B. 对于只有存储0或者1的列,尽量干掉索引,单独分出两个表。一个代替0,另外一个代替1。或者在一个字段里面用EMUM或者CHAR(0)或者CHAR(1)来代替。
PS: 最后一个要值得注意的,就是尽量所有的字段用NOT NULL。虽然MYSQL可以对NULL列进行索引,不过我不建议。
分享到:
评论

相关推荐

    数据库设计中值得注意的问题

    此外,合理设计查询语句,避免全表扫描,使用JOIN操作时要慎重,尽量使用索引来提高查询效率。 7. **扩展性**:设计时要考虑未来可能的扩展需求,如数据量增长、新功能添加等。使用微服务架构或者模块化设计,以...

    浅谈仪表自动化设计与施工服务时应注意的问题.pdf

    浅谈仪表自动化设计与施工服务时应注意的问题.pdf

    学生课堂注意力观察记录表.pdf

    学生课堂注意力观察记录表 ...学生课堂注意力观察记录表.pdf 提供了一个记录学生在课堂上的注意力和行为的表格,涵盖了课堂教学设计、教学资源的使用、学生行为观察、课堂观察记录和教学评价等多个方面的知识点。

    FPGA设计注意的问题

    在FPGA(Field-Programmable Gate Array)设计过程中,初学者可能会遇到一系列的问题,这些问题不仅影响设计效率,还可能导致设计失败。以下是一些在FPGA设计中需要注意的关键点,希望能帮助初学者避免常见的错误。 ...

    设计数据库(表结构设计)

    如果发现字段过多而记录较少,或者有很多字段值为空,可能需要重新设计表结构,以减少字段,增加记录。 数据库的创建和基本操作主要包括创建数据库、打开数据库、关闭数据库和删除数据库。CREATE DATABASE命令用于...

    mysql数据库设置外键应该注意的几点

    设置外键时,有几点需要注意,以确保数据库设计的规范性和高效性。以下是对这些关键点的详细阐述: 1. **外键约束定义**: 外键是用来建立两个表之间的关联,通常是主表(父表)的一个或多个字段与从表(子表)的...

    万用表课程设计

    根据评估结果,找出不足并进行优化改进,这有助于提高设计能力,培养解决问题的思维。 总的来说,"万用表课程设计"是一个综合性的实践项目,涵盖了电子电路、测量技术、工程设计等多个领域,对于提升学生的综合素质...

    数据结构课程设计 哈希表设计

    在实际设计中,需要注意的是,哈希函数的选择和冲突解决策略的效率直接影响到哈希表的性能。除留余数法简单易实现,但可能导致聚集现象,而伪随机探测再散列法可以有效缓解冲突,但需要精心设计探测序列以保证平均...

    MYSQL数据库优化与表设计

    5. **表设计注意事项**: - 行长度不超过8020字节,以避免存储碎片和降低查询效率。 - 尽量使用数字类型而非字符串类型,以提高查询性能和减少存储开销。 - 在选择CHAR和VARCHAR类型时,根据字段的实际需求进行...

    数据库表设计

    综上所述,《数据库表设计》这一主题涵盖了数据库设计的基础知识、SQL语言的应用以及实际操作中的注意事项。对于IT行业的从业者而言,掌握这些知识不仅可以提高工作效率,还能确保数据的安全性和可靠性。在设计...

    开关电源设计中PCB板各环节需要注意的问题

    PCB布线设计不仅要满足电气连接的要求,还需要考虑电磁兼容性(EMC)、电磁干扰(EMI)以及信号完整性和电源完整性等问题。以下是对PCB设计过程中需要特别注意的各个方面的详细分析。 1. 建立元件参数:在设计之前...

    颜色表大全 颜色代码 设计配色表 网页配色表

    本文将深入探讨颜色表大全、颜色代码、设计配色表以及它们在网络页面设计中的应用。 颜色表大全是一种集合了各种颜色及其对应信息的资源,它通常包括颜色名称、十六进制颜色代码、RGB值、CMYK值等。颜色表对于设计...

    绝缘电阻表的设计

    在设计一款基于8951单片机和Proteus仿真的绝缘电阻表时,我们需要理解其核心原理、硬件组成部分以及软件设计流程。 首先,8951单片机是Microchip公司生产的8位微处理器,它在电子设备控制中广泛应用。它拥有丰富的...

    软件开发,数据库设计注意事项

    ### 软件开发中的数据库设计注意事项 #### 数据库设计注意事项概述 数据库设计注意事项是许多IT专业人士在长期的数据库分析与设计实践中逐步总结出来的宝贵经验。对于这些经验的应用,我们不能生搬硬套、死记硬背...

    智能热能表的设计

    此外,使用热能系数表时,需要注意一些潜在问题,如温度补偿、流体性质的变化等因素,这些都可能影响到热量计算的准确性。 【数字电压表设计】 数字电压表是一种基于现代电子技术的测量工具,尤其适用于电子产品的...

    实用的网页设计常用颜色表

    在使用这样的颜色表时,设计师可以: 1. **查找配色灵感**:颜色表提供了一系列预设的配色方案,可以作为设计新项目的起点。 2. **测试色彩效果**:在实际设计中尝试颜色表中的颜色组合,看其在不同背景和元素上的...

    数字电子技术 电子秒表 课程设计 实验报告

    设计中需特别注意避免RS触发器进入不定态,确保系统稳定。 在实施设计过程中,学生不仅需要掌握理论知识,还需要熟练运用示波器、信号发生器等实验设备,对电路进行监控和调试。例如,555定时器输出非理想方波的...

    主从表关联问题

    一、使用视图meeting将多表关联整合在一起 二、通过Sql语句筛选数据 三、建立和主从表的关联 四、注意在CrystalReport1表中插入子报表的时候,一定要将主从表的关联字段设置好,否则出乱子

Global site tag (gtag.js) - Google Analytics