首页 > 代码库 > Android新项目:第2篇 数据库设计

Android新项目:第2篇 数据库设计

今晚设计了一晚上的数据库,用了一下MyEclipse workbench,感觉小屏幕电脑用的太不爽了,一堆的窗口挤在一起。

整理一下遇到的零碎的东西:

字段约束:

PK:belongs to primary key:主键

NN:not null:不能为空

UQ:unique index:唯一

BIN:is binary column:此列为二进制数据

UN:unsigned data type:无符号数据类型

ZF:fill up values for that column with 0‘s if it is numeric:当存储的数据不够指定宽度时用0填充,例如INT(4)存了个5,则显示为0005

AI:auto incremental:自动增加

Default:默认值,这个默认值现在有了一些牛逼的用处,比如CURRENT_TIMESTAMP相当于插入时执行now()

 

数据范围:

INT占4个字节,有符号范围-2147483648~2147483647,无符号范围0~4294967295

DECIMAL和NUMERIC类型专门用来存储精确数据值,比如money,在MySQL中,NUMERIC是当做DECIMAL实现的,所以DECIMAL的特性完全适用于NUMERIC。MySQL5.5采用二进制格式存储DECIMAL。

DECIMAL的一般格式为DECIMAL(M,N),M为精度(precision),表示有效位数;N为进位(scale),表示小数点后能存储的位数。标准SQL规定DECIMAL(5,2)能够存储任意一个包含2位小数的5位数(不是我们一般意义上的5位数),所以DECIMAL(5,2)的存储范围为-999.99到999.99

在标准SQL中,DECIMAL(M)等价于DECIMAL(M,0),相似的,DECIMAL也等价于DECIMAL(M,0),而各数据库的具体实现可以自己决定M的默认值,MySQL对于这两种语法都支持,同时M的默认值为10。如果N是0,那么DECIMAL值不包含小数点或者分数部分。

 

关于TIMESTAMP:

现在TIMESTAMP可以支持自动初始化和自动更新

DEFAULT CURRENT_TIMESTAMP支持自动初始化

ON UPDATE CURRENT_TIMESTAMP支持自动更新

CURRENT_TIMESTAMP有很多同义词变体:CURRENT_TIMESTAMP(), NOW(), LOCALTIME, LOCALTIME(), LOCALTIMESTAMP, LOCALTIMESTAMP()

 

Android新项目:第2篇 数据库设计