mysql 数据库设计 doc_程序员的MySQL手册(三):数据库设计

这一篇我们会讲解数据库设计的准则,介绍常见的数据类型,以及数据库范式和反范式,和他们的应用。

数据库设计的准则小即是美:用可以表示要存储的数据的最小的类型。小的类型可以更快,因为它们会占用更少的磁盘、内存、CPU缓存空间,通常也只需要更少的CPU指令来处理

简单:处理简单的数据类型可以使用更少的CPU指令

尽量避免NULL(仅MyISAM适用)

数据类型

MySQL提供这些数据类型:布尔BOOL

数字整数SMALLINT 占用8个bit,表示范围为 -128~127

MEDIUMINT 占用26个bit,表示范围为 -8388608 to 8388607

INT 占用32个bit,表示范围为 -2147483648 to 2147483647

BIGINT 占用64个bit,表示范围为 -9223372036854775808 to 9223372036854775807

浮点数FLOAT 单精度浮点数

DOUBLE 双精度浮点数

DECIMAL DECIMAL一般用来表示金钱

二进制BLOB 以二进制方式存储,如照片等TINYBLOB

SMALLBLOB

BLOB

MEDIUMBLOB

LONGBLOB

字符串VARCHAR 变长的字符串,一般会配合一个最大长度,例如 VARCHAR(32)

CHAR 固定长度的字符串

TEXT 以纯文本方式存储字符串TINYTEXT

SMALLTEXT

TEXT

MEDIUMTEXT

LONGTEXT

时间DATETIME 表示范围是 ‘1000-01-01 00:00:00’ to ‘9999-12-31 23:59:59’

TIMESTAMP 表示范围是 ‘1970-01-01 00:00:01’ UTC to ‘2038-01-19 03:14:07’ UTC

其它如BIT对应的UNSIGNED,就可以把负数可以表示的范围用于表示正数

注意,MySQL中的int往往带有一个数字,例如 INT(11),这不是说INT占11bit,而是表示在交互式命令行中,该列占11个字符长

而日常开发中我们常用的数据类型有这些:INT,比如主键就会用它,更合理的是设置为 UNSIGNED INT

VARCHAR,绝大部分的字符串都会用VARCHAR来存储

BOOL,布尔值

TINYINT,有多个可选值时,会使用TINYINT来存储可选情况

TEXT,存储大篇文章时

DATETIME,存储时间一般都会用这个

范式和反范式

根据数据库范式来设计,我们的数据库表会有如下特征:每一列都是不可切分的最小数据

所有表都有主键,其它字段都依赖于主键

没有重复数据,引用的数据通过外键引用

反范式就是说不遵循这个规定。

实际上日常开发工作中,是反范式和范式结合遵循的,两者都没有完全遵循。为什么呢?因为如果完全遵循范式,大量使用外键之后, 当并发一上去,数据库的负载会迅速上升,所以日常开发中,一般会舍弃第三条,选择冗余一部分数据,例如,如果要在某个表中 引用user id,我们不会使用外键,而是建立一个列,专门存储user_id。另外一个原因就是,数据库的几个范式提出时间都比较古老, 那个时候磁盘什么的还很贵,所以要节省,而现在,磁盘已经很便宜了,相比之下,为了节省磁盘而需要付出的性能代价却更高,因此 就不会选择遵循无冗余的范式了。

系列目录:

参考资料:

更多文章

1 .试述数据、数据库数据库系统、数据库管理系统的概念。 答: ( l )数据( Data ) :描述事物的符号记录称为数据。数据的种类有数字、文字、图形、图像、声音、正文等。数据与其语义是不可分的。解析在现代计算机系统中数据的概念是广义的。早期的计算机系统主要用于科学计算,处理的数据是整数、实数、浮点数等传统数学中的数据。现代计算机能存储和处理的对象十分广泛,表示这些对象的数据也越来越复杂。数据与其语义是不可分的。 500 这个数字可以表示一件物品的价格是 500 元,也可以表示一个学术会议参加的人数有 500 人,还可以表示一袋奶粉重 500 克。 ( 2 )数据库( DataBase ,简称 DB ) :数据库是长期储存在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。 ( 3 )数据库系统( DataBas 。 Sytem ,简称 DBS ) :数据库系统是指在计算机系统中引入数据库后的系统构成,一般由数据库数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。解析数据库系统和数据库是两个概念。数据库系统是一个人一机系统,数据库数据库系统的一个组成部分。但是在日常工作中人们常常把数据库系统简称为数据库。希望读者能够从人们讲话或文章的上下文中区分“数据库系统”和“数据库”,不要引起混淆。 ( 4 )数据库管理系统( DataBase Management sytem ,简称 DBMs ) :数据库管理系统是位于用户与操作系统之间的一层数据管理软件,用于科学地组织和存储数据、高效地获取和维护数据。 DBMS 的主要功能包括数据定义功能、数据操纵功能、数据库的运行管理功能、数据库的建立和维护功能。解析 DBMS 是一个大型的复杂的软件系统,是计算机中的基础软件。目前,专门研制 DBMS 的厂商及其研制的 DBMS 产品很多。著名的有美国 IBM 公司的 DBZ 关系数据库管理系统和 IMS 层次数据库管理系统、美国 Oracle 公司的 orade 关系数据库管理系统、 s 油 ase 公司的 s 油 ase 关系数据库管理系统、美国微软公司的 SQL Serve ,关系数据库管理系统等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值