
设计数据库时需遵守的几个原则
•三个范式
•满足当前需求
•分离主体与附属
•适当的冗余
•应对可能出现的新需求
•应对大数据量
三个范式
第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解;
第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;
第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。
参考:http://www.cnblogs.com/knowledgesea/p/3667395.html
满足当前需求
数据结构的设计要能达到应用场景的要求,这是最基本的。举个例子,文章的......

Incorrect integer value: ”for column ‘id’ at row 1
MySQL 1364 错误提示:#1364 – Field “details” doesn’t have a default value
上面两种错误可能是开启mysql中的严格模式
只需关闭即可,关闭方法:
1、在安装mysql的时候去除默认勾选的enable strict SQL mode
2、更改mysql中的配置 my.ini
my.ini中查找sql-mode,
默认为
sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”,
将其修改为
sql-mode=”NO_AUTO_CREATE_USER,NO_EN......
作者: owoer
|
发表于:2017年5月23日
|
栏目:MySQL
|
STRICT_TRANS_TABLES mysql严格模式已关闭评论
阅读全文

在MySQL中,InnoDB存储引擎长期支持表空间的概念,并且MySQL服务器甚至在分区引入之前,就能配置为存储不同的数据库使用不同的物理路径。分区(partion)更进一步,它允许你通过设置各种规则将一个表的各个分区跨文件系统存储。实际上,不同位置的不同表分区是作为一个单独的表来存储的。用户所选择的、实现数据分割的规则被称为分区函数(partioning function),这在MySQL中它可以是模数,或者是简单的匹配一个连续的数值区间或数值列表,或者是一个内部HASH函数,或一个线性HASH函数。
最常见是的水平分区(horizontal partitioning)......

三者的区别介绍
float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位)
double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有效位)
decimal:数字型,128bit,不存在精度损失,常用于银行帐目计算。(28个有效位)
按存储的范围进行排序
float(real)
double
decimal(numeric)
decimal的详细介绍
decimal(a,b)
参数说明
a指定指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38。
b指定小数点右边可以存储的十进制数字的最大个数。小......

假设有两个表,一个存放buy_record用户秒杀记录,一个是产品表goods
通过在buy_record添加uid,goods_id并加唯一索引
开启事务
插入 insert into buy_record
if(唯一索引报错?){
抛异常,用户已经秒过了,回滚
}else{
update goods set goods_num=goods_num-1 where goods_id=$goods_id and goods_num>0 ;//更新库存
if(受影响行数<=0){
抛异常,商品秒完了,回滚
}
}
其他方案:
主要思路:
1、前端三板斧【扩容】【限流】【静态化】
2、后端两条路【内存】+【排队】
解决方案1:
将存库从MySQL......