-
数据库优良设计: A、减少数据冗余 B、避免数据维护异常 C、节约存储空间 D、高效的访问查看全部
-
1NF:列不可分就满足1NF了。 2NF:不存在部分依赖,比如 (A,B)C。(消除非主属性对主属性的传递依赖,即完全依赖于主键) 3NF:不存在传递依赖,比如ABC。(在2NF基础上消除了传递依赖)查看全部
-
感觉,二、三、BC范式都在讲一个东西,就是属性之间不能有依赖关系。查看全部
-
如何维护表结构 注意事项 1. 使用在线变更表结构的工具 MySQL5.5之前可以使用pt-online-schema-change MySQL5.6之后本身支持在线表结构的变更 2. 同时对数据库字典进行维护 3. 控制表的宽度和大小 数据库中适合的操作 1. 批量操作VS逐条操作 2. 禁止使用Select * 这样的查询 3. 控制使用用户自定义函数 4. 不要使用数据库中的全文索引查看全部
-
数据库如何维护索引 如何选择合适的列建立索引 1. 出现在WHERE从句,GROUP BY从句,ORDER BY从句中的列 2. 可选性高的列要放到索引的前面 3. 索引中不要包括太长的数据库类型 注意事项 1. 索引并不是越多越好,过多的索引不但会降低写效率,而且会降低读的效率 2. 定期维护索引碎片 3. 在SQL 语句中不要使用强制索引关键字查看全部
-
数据库如何维护数据库字典 1. 使用第三方工具对数据库字典进行维护 2. 利用数据库本身的备注字段来维护数据库字典。 以MySQL为例: CREATE TABEL customer( cust_id INT AUTO_INCREMENT NOT NULL COMMENT '自增ID', cust_name VARCHAR(10) NOT NULL COMMENT '客户姓名', PRIMARY KEY (cust_id) )COMMENT '客户表' 3. 导出数据库字典 SELECT a.table_name,b.TABLE_COMMENT,a.COLUMN_NAME, a.COLUMN_TYPE,a.COLUMN_COMMENTFROM information_schema.COLUMNS a JOID information_schema. TABLES b ON a.table_schema=b.table_schema AND a.table_name=b.table_name WHERE a.table_name='customer'查看全部
-
数据库维护和优化要做什么 1. 维护数据字典 2. 维护索引 3. 维护表结构 4. 在适当的时候对表进行水平拆分或垂直拆分查看全部
-
反范式化表设计 什么是反范式化:反范式化是针对范式化而言的,在前面介绍了数据库设计的第三范式,所谓的反范式化就是为了性能和读取效率的考虑而适当的对第三范式的要求进行违反,而允许存在少量的数据冗余,换句话来说反范式化就是使用空间来换取时间。 为什么反范式化 1. 减少表的关联数量 2. 增加数据的读取效率 3. 反范式化一定要适度查看全部
-
数据库设计其他注意事项 如何选择主键 1. 区分业务主键和数据库主键 a. 业务主键用于标识业务数据,进行表与表之间的关联 b. 数据库主键为了优化数据库存储(Innodb会生成6个字节的隐含主键) 2. 根据数据库的类型,考虑主键是否要顺序增长 a. 有些数据库是按主键的顺序逻辑存储的 3. 主键的字段类型所占空间要尽可能的小 a. 对于使用聚集索引方式存储的表,每个索引后都会附加主键信息 避免使用外键约束 原因: 1. 降低数据导入的效率 2. 增加维护成本 3. 虽然不建议使用外键约束,但是相关关联的列上一定要建立索引 避免使用触发器 原因: 1. 降低数据导入的效率 2. 可能会出现意想不到的数据异常 3. 使业务逻辑变的复杂 关于预留字段 原因: 1. 无法准确的知道预留字段的类型 2. 无法准确的知道预留字段中所存储的内容 3. 后期维护预留字段所要的成本,同增加一个字段所需要的成本是相同的 4. 严禁使用预留字段查看全部
-
char与varchar如何选择 1. 如果列中要存储的数据长度差不多是一致的,则应该考虑用char;否则应该考虑用varchar。 2. 如果列中的最大数据长度小于50Byte,则一般也考虑用char。 3. 一般不宜定义大于50Byte的char类型列。 decimal与float如何选择 1. decimal用于存储精确数据,而float只能用于存储非精确数据。故精确数据知恩能够选择用decilam类型。 2. 有雨float的存储空间开销一般比decimal小(精确到7位小数只需要4个字节,而精确到15位小数只需要8个字节),故非精确数据优先选择float类型。 时间类型如何存储 1. 使用int来存储时间字段的优缺点 优点:字段长度比datetime小 缺点:使用不方便,要进行函数转换 限制:只能存储 2. 需要存储的时间粒度 年 月 日 小时 分 秒 周查看全部
-
3. 字段类型的选择原则 列的数据类型一方面影响数据存储空间的开销,另一方面也会影响数据查询性能。当一个列可以选择多种数据类型时,应该优先考虑数字类型,其次是日期或二进制类型,最后是字符类型。对于相同级别的数据类型,应该优先选择占用空间小的数据类型。 列类型 存储空间 TINYINT 1字节 SMALLINT 2字节 MEDIUMINT 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 以上原则主要是从下面两个角度考虑: 1. 在对数据进行比较(查询条件、JOIN条件及排序)操作时:同样的数据,字符处理往往比数字处理慢。 2. 在数据库中,数据处理以页为单位,列的长度越小,利于性能提升。查看全部
-
表及字段的命名规则 所有对象命名应该遵循下述原则: 1. 可读性原则 使用大写和小写来格式化的库对象名字以获得良好的可读性 2. 表意性原则 对象的名字应该能够描述它所标识的对象查看全部
-
数据插入更新以及删除异常第三范式(3NF) BC范式第三范式的扩展奇葩没递函数依赖主键不定性有不同的作用BCNF存在数据多余就可以分表物理设计要做什么适合的管理系统 mysql定义数据库命名规范Char/verchar反范式设计Oracle、server,pgsqlmysql,系统myaql可用于LINUX常用存储引擎:事务innodb行解锁读写高效锁粒度ARCHIVE 日志 NDBCLUSTER行解锁 高应用型命名规范:可读性原则 大小写DBMS大小写敏感 表一性原则 长命名原则CharVarchar DatetimeInt存储空间优先 INT其次CHAR2037年字段类型的选择类型类型字符比数字慢优先固定的或者小雨50 或者很少用选择CHARUTF8一个字符占3个字节FLOAT优先生日用INT 2038-1-19 11:14:07时间粒度选择主键触发器避免被使用降低数据导入效率预留字段关于严禁使用运用预留字段没有意义反范式化是针对 Select From join查看全部
-
不要使用预留字段,因为当真的要使用预留字段,把他改名成想要的列名时,等同于新创一个列,而不是在原有基础上更名那么简单。所以数据库结构还是会变化的查看全部
-
触发器不要使用,所有业务逻辑在代码中处理。查看全部
举报
0/150
提交
取消