DB3.数据库设计技巧

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
– LONG RAW
• 可变长度的二进制数据 • 最大长度2G
字段设计原则
Oracle常用字段类型
– BLOB
• 二进制数据 • 最大长度4G
– CLOB
• 字符数据 • 最大长度4G
字段设计原则
Oracle常用字段类型
– NUMBER(P,S)
• 数字类型 • P为所有位 • S为小数位
字段设计原则
– 例如:以idx_开头
触发器命名
– 例如:以tr_开头
定义标准的对象命名规范
命名中其他注意事项
– 命名都不得超过数据库系统限制; – 数据对象、变量的命名都采用英文字符,禁止使用中
文命名,绝对不要在对象名的字符之间留空格; – 小心保留词,要保证你的字段名没有和保留词、数据
库系统或者常用访问方法冲突; – 保持字段名和类型的一致性。
索引使用原则
索引是从数据库中获取数据的最高效方式之一。 95%的数据库性能问题都可以采用索引技术得到
解决。
索引使用原则
唯一索引 主键索引 聚集索引 普通索引 函数索引
索引使用原则
唯一索引
– 唯一索引是不允许其中任何两行具有相同索引值的索 引。
– 数据的完整性
主键索引
– 一般关系型数据库中,表的主键,会自动创建主键索 引
特别是大小写问题,会给开发带来不必要的麻烦。 • number(1)存0、1,意义很明显;
字段设计原则
字段的类型和长度
– 一般文字类型
• 在用户需求的基础上,长度再放宽些 • 举例:
– 身份证号,原来15位,后来18位。 – 员工名字,char(20)不够长,因为现在雇员有许多外国人,特别
是阿拉伯人名字很长放不下,需要把该字段拉长。
字段设计原则
Oracle常用字段类型
– CHAR
• 固定长度字符串 • 最大长度2000 bytes
– VARCHAR2
• 可变长度的字符串 • 最大长度4000 bytes
– NCHAR
• 根据字符集而定的固定长度字符串 • 最大长度2000 bytes
字段设计原则
Oracle常用字段类型
– 一个表至多只能有一个聚集索引。
索引使用原则
索引查询是数据库中重要的记录查询方法,要不 要进入索引以及在那些字段上建立索引都要和实 际数据库系统的查询要求结合来考虑。
下面给出实际中的一些通用的原则:
索引使用原则
在经常用作过滤器的字段上建立索引; 在SQL语句中经常进行GROUP BY、ORDER BY
字段设计原则
字段的控制和默认值
– 非空限制
• 在数据插入时,就必须有值的字段,设置成NOT NULL。
– 检查控制Check
• 域的完整性:用Check来实现约束,在数据库设计工具中,对 字段的取值范围进行定义。
– 默认值
• 有些字段需要初始值,但又不需要用户输入的,设置 DEFAULT值。
键选择原则
见文档:
Q&A
表设计原则
按模块划分设计,模块相对独立 对象职责明确单一 关键字:唯一、不参与业务运算、不被更新 易使用性 领域模型中主表与从表 减少数据冗余与允许适当的冗余
表设计原则
按模块划分设计,模块相对独立
– 根据系统模块划分,针对每个模块所处理的业务进行 模块单元的数据库设计;
– 不同模块间所对应的数据库表之间的关联应尽可能减 少;
– 一个对象有且只有一项职责,如果一个对象要负责两 个或两个以上的职责,应进行分拆。
表设计原则
关键字:唯一、不参与业务运算、不被更新
– 根据建立的领域模型进行数据库表的映射,此时应参 考数据库设计第二范式:一个表中的所有非关键字属 性都依赖于整个关键字。
– 关键字可以是一个属性,也可以是多个属性的集合, 不论那种方式,都应确保关键字能够保证唯一性。
表设计原则
减少数据冗余与允许适当的冗余
– 设计出的表要尽可能减少数据冗余,确保数据的准确 性,有效的控制冗余有助于提高数据库的性能。
– 另一方面,对于经常为了提高查询效率,可允许适当 的冗余存在。
字段设计原则
主键/外键 主键的选择 常用字段类型(以Oracle 9.2为例) 字段的类型和长度 字段的控制和默认值
键设计4 原则
– ①所有的键都必须唯一; – ②为关联字段创建外键; – ③避免使用复合键; – ④外键总是关联唯一的键字段。
可选键有时可做主键
键选择原则
不要用用户的键(不让主键具有可更新性)
– 在确定采用什么字段作为表的键的时候,可一定要小 心用户将要编辑的字段。通常的情况下不要选择用户 可编辑的字段作为键。
– NVARCHAR2
• 根据字符集而定的可变长度字符串 • 最大长度4000 bytes
– DATE
• 日期(日-月-年) DD-MM-YY(HH-mm-SS)
– LONG
• 超长字符串 • 最大长度2G
wk.baidu.com
字段设计原则
Oracle常用字段类型
– RAW
• 固定长度的二进制数据 • 最大长度2000 bytes
数据库设计技巧
数据库设计技巧
卢旭攀 2010-9
数据库设计技巧
定义标准的对象命名规范 表设计原则 字段设计原则 键选择原则 索引使用原则 《数据库设计60个技巧》
定义标准的对象命名规范
实体和属性的命名
– 常用单词进行缩写,在命名过程中,根据语义拼凑缩 写,缩写词之间加下划线;
– 举例:
– 在确定关键字时,应保证关键字不会参与业务且不会 出现被更新,一种解决方案为采用一个自增数值型属 性或一个随机字符串作为表的关键字。
表设计原则
易使用性
– 设计出的表要具有较好的使用性,主要体现在查询时 是否需要关联多张表且还需使用复杂的SQL技巧。
领域模型中主表与从表
– 主表与从表是1:n关系 – 从表与其它对象有关系时,采用弱关系
– 主键索引是唯一索引的特定类型。该索引要求主键中 的每个值都唯一。
索引使用原则
聚集索引
– 在聚集索引中,表中行的物理顺序与键值的逻辑(索 引)顺序相同。一个表只能包含一个聚集索引。
– 如果某索引不是聚集索引,则表中行的物理顺序与键 值的逻辑顺序不匹配。
– 与非聚集索引相比,聚集索引通常提供更快的数据访 问速度。
• 定义缩写
– Sales: Sal 销售 – Order: Ord 订单 – Detail: Dtl 明细
• 销售订单明细表:Sal_Ord_Dtl
定义标准的对象命名规范
实体和属性的命名
– 如果表名或字段名仅有一个单词,建议不缩写 – 举例
• 定义缩写
– Material: Ma 物品
• 物品表名: Material • 物品编码: Ma_ID
的字段上建立索引; 常用的小型表(数据量少),不必要建索引;
索引使用原则
在不同值较少的字段上不必要建立索引,如性别 字段;
对于经常存取的列避免建立索引; 用于联接的列(主健/外健)上建立索引; 在经常存取的多个列上建立复合索引,但要注意
复合索引的建立顺序要按照使用的频度来确定;
《数据库设计60个技巧》
– 不同模块间的表需要外键关联也尽量不要创建外键关 联,而只是记录关联表的一个主键;
– 确保模块对应的表之间的独立性,为系统或表结构的 重构提供可能性。
表设计原则
对象职责明确单一
– 采用领域模型驱动的方式和自顶向下的思路进行数据 库设计,首先分析系统业务,根据职责定义对象。
– 对象要符合封装的特性,确保与职责相关的数据项被 定义在一个对象之内,这些数据项能够完整描述该职 责,不会出现职责描述缺失。
字段设计原则
主键/外键
– 主键尽可能是单列的,以便提高连接和筛选操作的效 率。
– 主键应当是对用户没有意义的。 – 主键不应包含动态变化的数据,如时间戳、创建时间
列、修改时间列等。 – 永远也不要更新主键值。 – 主表的主键被从表的外键引用。
字段设计原则
主键的选择
– 业务编号 – 自动编号 – 序列 – 自制编号 – GUID –…
字段的类型和长度
– 字段的类型和长度与具体业务有关,而业务需求又常 常变化。
– 字段类型的选择应考虑业务处理的方便性和兼容性 – 长度应适当比需求宽些
字段设计原则
字段的类型和长度
– 布尔类型
• 对于布尔类型的字段建议number(1) 而不是char(1)。 • char(1)里可以存储0、1;Y/N;y/n等,由于值的不确定,
定义标准的对象命名规范
关联类命名
– 关联类通过用下划线连接两个基本类之后,再加前缀R 的方式命名。
– 举例
• 表Depart和Employee存在多对多关系 • 关联表的命名:R_Dept_Emp
定义标准的对象命名规范
视图命名
– 例如:以vw_开头
存储过程命名
– 例如:以sp_开头
索引命名
相关文档
最新文档