chapter04_聪明的表设计
简短的查询优于较长的查询
原子性数据:
(1) 定义:它已经被分割至最小块,不能或不应该再被分割
对于同样的信息,不同的表对于原子性数据的需求不同
示例
地址包括街道 + 门牌号,对于外卖来说,它们应该合在一列存储;对于房地产中介来说,应该分成两列存储
(2) 规则一
具有原子性数据的列不会有多个类型相同的值
示例
food_name | ingredient------------------------------bread | flour, milk, egg------------------------------salad | lettuce, tomato------------------------------在这张表中,flour,milk,egg等都是类型相同的值,它们放在同一列存储,意味着想在bread中找到某个具体的成分很困难
(3) 规则二
具有原子性数据的表中不会有多个存储同类数据的列
示例
teacher_name | student1 | student2 | student3 |-----------------------------------------------Martini | Joe | Ron | Kelly |-----------------------------------------------Howard | Sanjaya | Tim | Julie |-----------------------------------------------student1,student2,student3都是存储同类数据的列
第一范式 1NF
(1) 每个数据行必须包含具有原子性的值
(2) 每个数据行都要有主键
主键
(1) 表中某一列,可以保证记录的唯一性
(2) 主键不可以为NULL
(3) 最佳主键是新的主键--id列
AUTO_INCREMENT设置的自增从1开始(和SQL的习惯一样)
示例
CREATE TABLE my_contacts (id INT(4) NOT NULL AUTO_INCREMENT,name VARCHAR(10) NOT NULL,PRIMARY KEY (id));
AUTO INCREMENT每个表只能有一列可以使用
chapter04_聪明的表设计相关推荐
- 美多商城之商品(商品数据库表设计)
一.商品数据库表设计 1.1 SPU和SKU 在电商中对于商品,有两个重要的概念:SPU和SKU 1. SPU介绍 [即为商品的一个概述,一种商品的统称] SPU = Standard Pr ...
- 万亿级企业MySQL海量存储分库分表设计实践
互联网业务往往使用MySQL数据库作为后台存储,存储引擎使用InnoDB.我们针对互联网自身业务特点及MySQL数据库特性,讲述在具体业务场景中如何设计表和分表.本文从介绍MySQL相关基础架构设计入 ...
- 数据库 mysql 表设计,数据删除
文章目录 视频 表设计 一对一 一对一,附加表加外键,外键唯一. 一对多 一对多,两张表,多的表加外键 多对多 多对多,三张表,关系表两个外键 表删除数据 先删除子表(外键),再删除父表(主键) 视频 ...
- mysql datetime 对于hbm_MySQL库表设计小技巧
前言: 在我们项目开发中,数据库及表的设计可以说是非常重要,我遇到过很多库表设计比较杂乱的项目,像表名.字段名命名混乱.字段类型设计混乱等等,此类数据库后续极难维护与拓展.我一直相信只有优秀的库表设计 ...
- HBase概念学习(八)开发一个类twitter系统之表设计
这边文章先将可能的需求分析一下,设计出HBase表,下一步再開始编写client代码. TwiBase系统 1.背景 为了加深HBase基本概念的学习,參考HBase实战这本书实际动手做了这个样例. ...
- Oracle数据库表设计时的注意事项
Oracle数据库表设计时的注意事项 表是Oracle数据库中最基本的对象之一.万丈高楼从平地起,这个基础对象对于数据库来说,非常重要.因为其设计是否合理,直接跟数据库的性能相关.从Oracle数据 ...
- 数据库表设计的随笔(分库分表)
笔者目前就职的是一家创业型的互联网公司,既然算是互联网公司,那么就会设计到无论是应用系统还是数据库的分布式.下面简单介绍下有关数据库方面的一些设计. 数据库表的设计,根据自己的业务所需可以拆分成多库. ...
- 关于用户表设计及多用户登入限制
1.数据表设计 用户通用信息表 CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`nickname` varchar(32) NOT ...
- mysql栏目表设计_MySQL表设计
文章摘自: https://mp.weixin.qq.com/s?__biz=MzI2NDU3OTg5Nw==&mid=2247483799&idx=1&sn=4d1f45ab ...
最新文章
- JMeter压力测试入门教程[图文]
- libevent简介和使用【转】
- ASP.NET之纠错
- java传入一个字符串 将它分割成大写字符为首的字符串数组
- thinkphp中__construct与_initialize()的区别
- 解决ubuntu下eclipse 经常崩溃的问题
- 使用计算机时 开关机顺序会,电脑如何正确开关机
- AE进度条读取动画插件 LoadUP 1.71
- python怎样填充颜色_python中如何给图形填充颜色
- 根据在同一时间使用计算机,3.根据在同一时间使用计算机用户的多少,操作系统可以分为单用户操作系统和多用户操作系统。...
- linux es数据库 head,centos7安装Elasticsearch及Es-head插件详细教程(图文)
- 软件工程项目____搜查令
- binwalk、foremost、dd隐藏文件分离
- 双机流水作业调度问题——Johnson算法
- mysql如何导出数据脚本_MySQL 导出数据
- 苹果手机人脸识别不了是什么原因_苹果:iPhone人脸识别能秒了所有安卓手机!...
- 引流脚本有没有效果,引流脚本是什么
- 创建学生表,课程表,班级表,班级课程表
- Linux实战教学笔记15:磁盘原理
- beaglebone black下接nrf24l01与RFID标签的通信(基于EZSDK linux平台)