关于MySQL表设计应该注意的问题(做了点修改)

来源:互联网 发布:什么驱动软件最好 编辑:程序博客网 时间:2024/05/17 01:25
  1. 关于MySQL表设计应该注意的问题(做了点修改)  
  2.   
  3. 关于设计表时应该注意的问题  
  4.   
  5. 如有错误欢迎大家指出。这段时间在家里,做了点修正。  
  6.   
  7. 1、慎重选择表名。  
  8.   
  9. 有两种选择:  
  10.   
  11. 按照多数开发语言的命名规则。比如(myCustomer)。  
  12.   
  13. 按照多数开源思想命名规则。比如(my_customer)。  
  14.   
  15. 按照咱们中国人的思想。比如(我的客户)。  
  16.   
  17. 第一种有个缺点,很容易忘掉大写的字母。  
  18.   
  19. 第二种则比较好,每个WORD间用下划线连接,避免遗忘。  
  20.   
  21. 第三种建议不要用,虽然很好记。不觉得解析这个表的时候还需要编码转化吗?我个人理解,大家可以补充。  
  22.   
  23. 2.  关于编码的设定。  
  24.   
  25. A.             GBK/GB2312.(适用于纯中文存储)。  
  26.   
  27. B.           UTF8.(适用于中英文混合存储)。  
  28.   
  29. C.            LATIN1。(适用于纯英文存储)。  
  30.   
  31. D.     其他的。  
  32.   
  33. 3. 关于表引擎的选择。  
  34.   
  35. A.                 MYISAM.(很多人说她的表级锁定会带来好多问题,其实只要设计好对应的表以及写好对应的SQL查询就没有那么大的问题。)  
  36.   
  37. B.                  INNODB. (如果要用到事务,选择她不会错。至于多数人讲的MASTER/SLAVE结构上用INNODB在MASTER的选择是否正确,就要看你怎么用了。不能一味的疯狂使用INNODB。除非你想要确保非常高可用性,  
  38.   
  39. )  
  40.   
  41. C.                  CSV. (以前我写过文章,关于这个引擎。个人觉得最主要的是来存储少量数据以及从EXCEL到MYSQL的转换方面会很有用。当然只要涉及到规则数据的导入,她就可以办到。)  
  42.   
  43. D.                  BLACKHOLE. (觉得最完美的用处在于MASETR/SLAVE上面,并且MASTER是一个临时的专门负责写的机器。不过缺点也很多,会与MYISAM或者INNODB或者其他的引擎有所冲突,这点自己要做个权衡)。  
  44.   
  45. E.                   MEMORY. (应该说是MYISAM的兄弟了。不过在读内存总比读磁盘的速度要快。不过要注意,它不支持动态数据类型)。  
  46.   
  47. F.                   FEDERATED. (典型的分布式引擎。我以前文章中有介绍。)  
  48.   
  49. G.    NDB。(网络版存储引擎。因为Replication 总是有延迟,所以如果系统容不得任何延迟,就用这个吧。)  
  50.    H.    FOLCON。(6.0后用来代替INNODB的引擎。)  
  51.   
  52. I.                  其他旧的以及新开发的引擎具体介绍:http://dev.mysql.com/doc/refman/6.0/en/storage-engines.html)。  
  53.   
  54. 4. 关于属性数据类型的选择。  
  55.   
  56. A.                  INT(一个字节的TINYINT,两个字节的SMALLINT,三个字节的MEDIUMINT,四个字节的INT,8个字节的BIGINT。记住:UNSIGNED不管你定义或者不定义,都不影响内部的存储字节大小)  
  57.   
  58. B.                   少于10个字符用CHAR是在合适不过了。(不过要记住在MEMORY引擎里面会自动把VARCHAR转化为CHAR)  
  59.   
  60. C.                   我一般用DECIMAL或者NUMERIC来代替FLOAT 或者DOUBLE。因为老板要求精确的数字。如果不要求精确的,那就用FLOAT吧。速度快,占空间小。(DECIMA、FLOAT(P)是动态存储。比如:DECIMAL(10,2)占用5个字节。FLOAT占4个字节,)  
  61.   
  62. D.                 BLOB,TEXT,VARCHAR(一般存放文章内容,特别是新闻网站。需要的字节数是所存储的字符长度+1。记住BLOB和VARCHAR是TEXT和CHAR的BINARY类型)  
  63.   
  64. E.                   ENUM(在一定范围内绝佳的代替VARCHAR和CHAR的工具,因为她只占一到两个字节。)  
  65.   
  66. F.                   时间和日期类型(占3个字节的DATE,8个字节的DATETIME,4个字节的TIMESTAMP,3个字节的TIME,1个字节的YEAR。)。如果要存储比如‘1983’这样的年份,用YEAR明显比VARCHAR或者CHAR要节省空间。因为后者要占5个字节。  
  67.   
  68. G.                  BOOLEAN(用来存储YES或者NO之类的值,占用一个字节。)  
  69.   
  70. H.                  关于自增字段。目前我们的项目中涉及到好多ORDER BY RAND()操作。此类语句在数据库并发大的时候会造成CPU严重阻塞,持续产生数据库死锁!解决此类问题最好的办法就是利用自增字段,用程序随即生成数字序列,或者在数据库端随即生成数字序列。  
  71.   
  72. I.                    关于ZEROFILL。非常好用的前置填补0的存储,而不是用用对应个数的空串来代替。在需要前置补零的操作中INT ZEROFILL可以用来代替CHAR或者VARCHR。  
  73.   
  74. 5.  关于默认值。  
  75.   
  76. A.                  在5.0之后,只要设定字段为NOT NULL,系统自动给出默认值。对应CHAR->’’,INT->0,BOOLEAN->0等等。  
  77.   
  78. B.                   在5.0之前的版本,需要手动指定默认值,否则会出现一定的异常。到时候查都不好查了。  
  79.   
  80. 6.  关于多数据库建立。  
  81.   
  82. A.                  应该把对应的业务放在各自不同的数据库里,而不是所有业务放到一个库里面。  
  83.   
  84. B.                   数据库的命名和表命名一样。  
  85.   
  86. 7.  关于索引。  
  87.   
  88. A.                  设计表初期尽量考虑到应该建立的索引。所有建立的索引一定要测试一下,看是否有必要,否则会翻倍的减少写数据的性能。  
  89.   
  90. B.                   对于只有存储0或者1的列,尽量干掉索引,单独分出两个表。一个代替0,另外一个代替1。或者在一个字段里面用EMUM或者CHAR(0)或者CHAR(1)来代替。  
  91.    PS: 最后一个要值得注意的,就是尽量所有的字段用NOT NULL。虽然MYSQL可以对NULL列进行索引,不过我不建议。 
  92. 如果通过语句:select max(length(`test`)) from table得到的是5000,那么可以设计为varchar(6000)。注意,在mysql中表的空间设计,和物理的存储没有关系,尽管一个utf8编码的中文,占据3个字节,但是在设计的时候,设置为varchar(1)就可以了。

 

 

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子鼻窦炎鼻子堵有白色鼻涕怎么办 家里阳台上老是有蝙蝠趴着怎么办 空调太冷在空调房里该怎么办 分手了怎么办不要挽回要重新吸引 过敏体质没打疫苗的孩子入学怎么办 遇到不认识的小姐姐问我问题怎么办 小孩孑脖子洛忱了痛怎么办 挤奶把乳腺挤肿了不出奶怎么办 遇到好兄弟在背后捅刀子怎么办 面对出轨还不想离婚的老公怎么办 法院执行局把案划错了不承认怎么办 手机nfc功能被手机壳挡住怎么办 飞信短信登录验证码达到上限怎么办 手机自带短信软件没了怎么办 老婆出轨孩子又3个不知道怎么办 骑电动车摔跤小脚趾疼有点肿怎么办 第一次太疼了有心理阴影了怎么办 天梭机械表调了时间忽然慢怎么办 支付宝信用住到酒店没房间怎么办 拳头打在硬上骨头肿了怎么办 领导决策出现了失误你该怎么办 我的直销团队走到瓶颈了怎么办 孕妇8个月便秘大便带血怎么办 爱他美金装冲泡有泡沫怎么办 做雅思听力时理解不了原文怎么办 英国读语言班不想读研了怎么办 英国读研本科学位不够分怎么办 英国华威大学读研没分到宿舍怎么办 英国留学申请大学成绩没通过怎么办 很想上专升本但是专科挂科怎么办 英国学校申请的gpa太低了怎么办 博士面试通过后导师不签名怎么办 资助出国留学协议书写错了怎么办 人生最低谷运气最差的时候怎么办 孩子出国留学一年后想回国怎么办 领导给我娃的钱我怎么办 在西浦大三成绩不好影响申研怎么办 日本国想在中国开分公司要怎么办 美国生完孩子做飞机婴儿怎么办 会计专硕复试英语面试不好怎么办 被打过狂犬疫苗的狗咬了怎么办