数据库设计方法总结
2015-10-16 09:50
363 查看
1. 三范式
a. 字段不可分
b. 非主键直接倚赖于主键(确定主键)
c. 非主键不能有传递信赖(多个实体要拆表)
范式的优点:减少数据冗余
范式的缺点:表多,操作难,性能差。
以空间换时间。
2. 要用多少个表存储哪些信息,再考虑每个表要用哪些字段,最后考虑每个字段要用什么类型存储,还有就是考虑表的主键以及表与表之间的关联。最后,要考虑后期系统表的扩展。
3. 主键、外键和索引的区别(primary key \ foregner key \index)
unique key: 主要是用来防止数据插入的时候重复的。
index/key: 作用相同,都是创建索引
DROP TABLE IF EXISTS `S64`.`T6412`;
CREATE TABLE `S64`.`T6412` (
`F01` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`F02` int(10) unsigned NOT NULL COMMENT '优选理财计划ID,参考T6410.F01',
`F03` int(10) unsigned NOT NULL COMMENT '付款用户ID,参考T6110.F01',
`F04` int(10) unsigned NOT NULL COMMENT '收款用户ID,参考T6110.F01',
`F05` int(10) unsigned NOT NULL COMMENT '交易类型ID,参考T5122.F01',
`F06` int(10) unsigned NOT NULL COMMENT '期号',
`F07` decimal(20,2) unsigned NOT NULL COMMENT '金额',
`F08` date NOT NULL COMMENT '应还日期',
`F09` enum('WH','YH') NOT NULL COMMENT '状态,WH:未还;YH:已还;',
`F10` datetime DEFAULT NULL COMMENT '实际还款时间',
PRIMARY KEY (`F01`), // 主键
UNIQUE KEY `F02_UNIQUE` (`F02`,`F03`,`F04`,`F05`,`F06`), //唯一性索引
KEY `F05` (`F05`), // 创建索引
KEY `F03` (`F03`),
KEY `F04` (`F04`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='优选理财还款记录';
a. 字段不可分
b. 非主键直接倚赖于主键(确定主键)
c. 非主键不能有传递信赖(多个实体要拆表)
范式的优点:减少数据冗余
范式的缺点:表多,操作难,性能差。
以空间换时间。
2. 要用多少个表存储哪些信息,再考虑每个表要用哪些字段,最后考虑每个字段要用什么类型存储,还有就是考虑表的主键以及表与表之间的关联。最后,要考虑后期系统表的扩展。
3. 主键、外键和索引的区别(primary key \ foregner key \index)
unique key: 主要是用来防止数据插入的时候重复的。
index/key: 作用相同,都是创建索引
DROP TABLE IF EXISTS `S64`.`T6412`;
CREATE TABLE `S64`.`T6412` (
`F01` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`F02` int(10) unsigned NOT NULL COMMENT '优选理财计划ID,参考T6410.F01',
`F03` int(10) unsigned NOT NULL COMMENT '付款用户ID,参考T6110.F01',
`F04` int(10) unsigned NOT NULL COMMENT '收款用户ID,参考T6110.F01',
`F05` int(10) unsigned NOT NULL COMMENT '交易类型ID,参考T5122.F01',
`F06` int(10) unsigned NOT NULL COMMENT '期号',
`F07` decimal(20,2) unsigned NOT NULL COMMENT '金额',
`F08` date NOT NULL COMMENT '应还日期',
`F09` enum('WH','YH') NOT NULL COMMENT '状态,WH:未还;YH:已还;',
`F10` datetime DEFAULT NULL COMMENT '实际还款时间',
PRIMARY KEY (`F01`), // 主键
UNIQUE KEY `F02_UNIQUE` (`F02`,`F03`,`F04`,`F05`,`F06`), //唯一性索引
KEY `F05` (`F05`), // 创建索引
KEY `F03` (`F03`),
KEY `F04` (`F04`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='优选理财还款记录';
相关文章推荐
- 深入剖析MongoDB架构
- oracle开启闪回
- Amoeba搞定mysql主从读写分离
- 站内信设计(群发)实现
- IIS不定期Crash和Oracle“未处理的内部错误(-2)”的问题分析
- 性能优化之数据库优化
- mysql windows 系统服务
- oracle mysql 重复主键的处理测试
- Oracle中创建dblink的方法
- Oracle 9i/10g Oracle越权修改SYS密码
- MySQL存储引擎--MyISAM与InnoDB区别
- MySQL proxy读写分离
- 简化SQL计算之按记录条数汇总数据
- MISCONF Redis is configured to save RDB snapshots
- 数据库表被锁
- oracle使用with as提高查询效率
- Nginx+Php-fpm+MySQL+Redis源码编译安装指南
- mysql5.6源码编译安装
- Redis 缓存 + Spring 的集成示例(转)
- oracle数据库之解锁