数据库类型 | 成本 | 开发语言 | 支持系统 | 业务场景 |
oracle |
商业型 | php,java,python等 | windows/liunx系统 | 企业级 |
sqlserver | 商业型 | .net,c#等 | 只支持windows系统 | 企业级 |
mysql | 开源型 | php,java,python等 | windows/liunx系统 | 中小型 |
pgsql | 开源型 | php,java,python等 | windows/liunx系统 | 中小型 |
2.定义数据库,表及字段,要符合命名规范。
存储引擎 | 索引 | 事务 | 锁粒度 | 主要应用 | 忌用 |
myisam | 支持 | 不支持 | 支持并发插入的表级锁 | select,insert高负载 | 读写并用 |
innodb | 支持 | 支持 | 支持mvcc的行级锁 | 事务处理 | 无 |
memory | 支持 | 不支持 | 表锁 | 中间计算,静态数据 | 大型数据集,持久性存储 |
archive | 不支持 | 不支持 | 行级锁 | 日志记录,聚合分析,只支持select,insert操作 | 随机读取,删除 |
ndb cluster | 支持 | 支持 | 行级锁 | 高可用集群 | 典型引用 |
3.根据选择的数据库管理系统选择合适的数据类型
列类型 | 存储空间 |
tinyint | 1个字节 |
smallint | 2个字节 |
mediuminy | 3个字节 |
int | 4个字节 |
bingint | 8个字节 |
date | 3个字节 |
datetime | 8个字节 |
timestamp | 4个字节 |
char(m) | m字节,1<= m <=255 |
varchar(m) | l+1字节,在此 l < = m 和 1 <=m <= 255 |
float | 4字节 |
double | 8字节 |
decimal | 对decimal(m,d) ,如果m>d,为m+2否则为d+2 |
例如:使用数据库创建外键约束:
create table `m_user` ( `id` int(11) not null auto_increment comment '主键', `user_name` varchar(50) not null default '' comment '用户名', primary key (`id`) ) engine=innodb default charset=utf8; create table `m_order` ( `id` int(11) not null auto_increment comment '主键', `total_price` decimal(10,2) not null default '0.00', `user_id` int(11) not null default '0', primary key (`id`), constraint `for_indx_user_id` foreign key (`user_id`) references `user` (`id`) ) engine=innodb default charset=utf8;
不使用数据库创建外键约束:
create table `m_user` ( `id` int(11) not null auto_increment comment '主键', `user_name` varchar(50) not null default '' comment '用户名', primary key (`id`) ) engine=innodb default charset=utf8; create table `m_order` ( `id` int(11) not null auto_increment comment '主键', `total_price` decimal(10,2) not null default '0.00', `user_id` int(11) not null default '0', primary key (`id`), key `idx_user_id` (`user_id`), ) engine=innodb default charset=utf8;
3.避免使用触发器
4.谨慎使用预留字段
建议:
4.反范式化设计。
以上仅为本人学习过程中的知识总结,若有错误,还请诸位不吝赐教。
如对本文有疑问, 点击进行留言回复!!
网友评论