数据库三范式

l 第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列。

如电话列可进行拆分—家庭电话、公司电话

l 第二范式(2NF):首先是 1NF,另外包含两部分内容,一是表必须有主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。
l 第三范式(3NF):首先是 2NF,另外非主键列必须直接依赖于主键,不能存在传递依赖。

比如Student表(学号,姓名,年龄,性别,所在院校,院校地址,院校电话)

这样一个表结构,就存在上述关系。 学号–> 所在院校 --> (院校地址,院校电话)

这样的表结构,我们应该拆开来,如下。

(学号,姓名,年龄,性别,所在院校)–(所在院校,院校地址,院校电话)

满足这些规范的数据库是简洁的、结构明晰的;同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。

2)数据类型选择
l 数字类型

Float和double选择(尽量选择float)

区分开TINYINT / INT / BIGINT,能确定不会使用负数的字段,建议添加 unsigned定义

能够用数字类型的字段尽量选择数字类型而不用字符串类型的

l 字符类型

char,varchar,TEXT的选择:非万不得已不要使用 TEXT 数据类型,定长字段,建议使用 CHAR 类型(填空格),不定长字段尽量使用 VARCHAR(自动适应长度,超过阶段),且仅仅设定适当的最大长度

l 时间类型

按选择优先级排序DATE(精确到天)、TIMESTAMP、DATETIME(精确到时间)
设置默认当前时间:CURRENT_TIMESTAMP

l ENUM

对于状态字段,可以尝试使用 ENUM 来存放

l 避免使用NULL字段,很难查询优化且占用额外索引空间

钱:decimal

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值