Schema设计原则 :

  1. 更小的数据类型,根据估计选择不会超过范围的最小数据类型。
  2. 简单数据类型的操作通常需要更少的CPU周期。例如整型比字符操作代价更低,因为字符集和校对规则(排序规则)使字符比较比整型比较更复杂。

尽量避免NULL:最好指定列为NOT NULL,除非真的需要存储NULL值。NULL列使得索引、索引统计和值比较都更复杂,使用更多的存储空间。如果计划在列上建索引,就应该尽量避免设计成可为NULL的列

实数类型

  1. FLOAT 和 DOUBLE类型支持使用标准的浮点运算进行近似计算。DECIMAL类型用于存储精确的小数
  2. CPU直接支持原生浮点计算,所以浮点运算明显更快。

因为需要额外的空间和计算开销,所以尽量只在对小数进行精确计算时才使用DECIMAL—例如存储财务数据。但在数据量比较大的时候,可以考虑使用BIGINT代替DECIMAL,将需要存储的数值根据小数的位数乘以相应倍数即可

字符串类型

下面这些情况使用VARCHAR:

  1. 字符串列的最大长度比平均长度大很多;
  2. 列的更新很少,所以碎片不是问题;
  3. 使用了像UTF-8这样复杂的字符集,每个字符都使用不同的字节数进行存储

CAHR的使用场景:

  1. CHAR类型是定长的,适合存储很短的字符串,或所有值接近同一个长度;

枚举类型

  1. 把一些不重复的字符串存储成一个预定义的集合。MySQL在存储枚举时非常紧凑,会根据列表值的数量压缩到一个或者两个字节中。
  2. 枚举最不好的地方是,字符串列表是固定的,添加或删除字符串必须使用ALTER TABLE,因此对于未来可变的字符串,不建议使用枚举

特殊数据类型

IPv4 地址:虽然经常使用VARCHAR(15)列来存储IP地址。然而,它们实际上是32位无符号整数,不是字符串。用小数点将地址分成四段的表示方法只是为了让人们阅读容易。所以应该用无符号整数存储IP地址。MySQL提供INET_ATON() 和 INET_NTOA()函数在这两种表示方法之间转换。varchar存储ip地址的弊端之一是:无法根据指定的ip地址范围进行区间搜索,而转换为32位无符号整数则可以

MySQL之表结构设计相关推荐

  1. mysql 数据库表结构设计与规范

    mysql 数据库表结构设计与规范 DDL(data difinition language)就是数据定义语言. 1.sql语句的界定符 [code]– 默认情况下" ; " 代表 ...

  2. 导出 MySQL 数据库表结构设计文档

    第一种 :利用sql语句查询 需要说明的是该方法应该适用很多工具,博主用的是navicat SELECT TABLE_NAME 表名,COLUMN_NAME 列名, COLUMN_TYPE 数据类型, ...

  3. MySQL——O4. 表结构设计和数据类型优化

    1. 表结构设计 在数据库表设计上有个很重要的设计准则,称为范式设计. 1.1 范式设计 要想设计-个好的关系,必须使关系满足一定的约束条件,此约束已经形成了规范,分成几个等级,一级比一级要求 得严格 ...

  4. 使用PowerDesigner15创建MySQL数据库表结构设计

    1.打开PowerDesigner,依次点击:文件->建立新模型,出现以下画面,然后按照画面中的红色箭头进行操作: 2.然后点击"OK",即可创建MySQL数据库的表结构设计 ...

  5. mysql 用户表结构设计_MySQL数据表结构设计

    1表结构 每个表的内容: image image image image image image image image 2表关系 天蓝色代表表中有唯一索引. image 3数据表索引与时间戳 ima ...

  6. mysql评论表结构设计_文章评论嵌套显示mysql表结构如何设计(形式如网易新闻评论)...

    现在有一张post表 (结构不能改变) tid 主题pid pid 回复id 现在新增了评论嵌套显示功能,即tid=1 a评论了一条 pid为1 b回复了a的评论 pid为2 c回复了b的评论 pid ...

  7. Mysql数据库表结构设计导出

    SELECTCOLUMN_NAME 字段名,COLUMN_TYPE 数据类型(长度), -- DATA_TYPE 字段类型, -- CHARACTER_MAXIMUM_LENGTH 长度,if(IS_ ...

  8. 【Mysql数据库表结构设计导出到Excel表格】

    SELECTCOLUMN_NAME 字段名称,COLUMN_TYPE 数据类型(精度范围), -- DATA_TYPE 字段类型, -- CHARACTER_MAXIMUM_LENGTH 长度,if( ...

  9. MySQL设计工厂管理数据库(Ⅰ)—表结构设计

    MySQL设计工厂管理数据库(Ⅰ)-表结构设计 引言 设计思路 工厂管理E-R图 设计工厂管理逻辑图 实现过程 项目(project)表实现 职工(staff)表设计 零件(components)表设 ...

最新文章

  1. ORACLE初始化参数文件概述
  2. 科大星云诗社动态20210124
  3. 打印Show Atend and Tell编码器的优化器
  4. 【REST】基于RESTful服务端的客户端实现(HttpClient、RestTemplate、HttpURLConnection)
  5. Wannafly挑战赛10F-小H和遗迹【Trie,树状数组】
  6. 怎么知道wx.config执行成功没_作为一个减肥40斤,且10年没反弹的普通人,这份瘦身经验分享给你...
  7. 2016年最值得学习的五大开源项目
  8. javascript ajax调用asp.net后台方法
  9. 【渗透测试】编辑器漏洞
  10. 003-Java技术体系
  11. Hans Berger脑电图之父的人生摘要
  12. 钟汉良日记:2年10个月后第一次坐车回家
  13. 纯蓝ICON_学习教程
  14. [mybatis] sql语句无错误,但是执行多条sql语句时,抛出java.sql.SQLSyntaxErrorException
  15. android 点赞手型,在朋友圈,你是哪种点赞型人格?
  16. S3C2440 音频解码芯片WM8976声卡驱动移植、测试以及madplay播放mp3文件(三十一)
  17. Vue下使用docxtemplater-POI模式导出word
  18. Ubuntu 修改用户名
  19. C2B前还有S2b,阿里携手产学研探索新零售时代的供应链未来
  20. 用Google Analytics监控营销邮件打开率

热门文章

  1. “约见”面试官系列之常见面试题之第四十六篇web标准理解和认识(建议收藏)
  2. 前端学习(1550):$scope和调试工具
  3. 前端学习(1359) :学生档案信息管理1
  4. 前端学习(1032):jquery插件-瀑布流
  5. 前端学习(572):margin无效情形inline水平元素的margin无效
  6. STM32单片机低功耗配置
  7. CSS之Box-sizing
  8. linux 2.6 hash表作用,高性能分布式哈希表FastDHT介绍及安装配置
  9. gd动态曲线 php_php中用GD绘制折线图
  10. 深度学习之数学基础(临时记录)