Oracle数据库设计要做到五戒
2008-12-12 13:01:52 来源:WEB开发网为什么要这么设计呢?这就是笔者今天要谈的第二个戒条,不要用用户的键。通常情况下,不要选择用户可编辑的字段作为外键或者主键。因为这会增加我们额外的工作量。
如果我们把销售订单号作为外键的话,则在创建销售订单纪录后还要对用户编辑字段的行为施加限制,如判断是否违反外键的强制性规则等等。有些系统把销售订单号设置为外键的话,则往往是把这个字段设置为系统自动编号,并且用户不可更改。可是,在实际工作中,企业员工往往需要编辑这个字段。员工需要编辑这些不可编辑的字段时系统缺乏灵活性的缺陷就体现出来了。而且,当用户输入完数据保存的时候再提示纪录不符合要求,则也不是很人性化的设计。
另外,我们还必须为此设计一些检测和纠正键冲突的方法。如考虑这个外键的直是否在其他数据表中存在等等。虽然这通常只需要我们花点时间就可以搞定。但是从数据库性能上来说,这个代价就比较大了。再则,如此的话,就不能够很好的把系统的基本数据跟企业员工的数据实现很好的隔离。
所以,笔者认为,不要用用户的键来作为我们数据库设计的主键或则外键。或者说,数据库设计时用到的键要让数据库系统进行自动维护,用户不得更改这个维护规则。
三戒:不要用商务规则来实现数据的完整性。
数据的完整性有好几种实现方法。如可以通过数据库约束实现数据完整性;也可以通过前台系统的商务规则来实现数据的完整性。不过,笔者这里要建议的是,在一些大型的数据库中,不要试图通过商务规则来实现数据的完整性,而尽可能的通过数据库的约束来实现。因为若通过商务规则来实现完整性,往往会出现一些莫名其妙的错误。
如笔者就遇到过这一个案例。在数据库设计的时候,把某个字符型字段长度限制为最长50位。而在前台应用程序中,却限制了60位。在员工数据数据的时候,在前台应用程序中,可以输入55个字符。但是,下次用户查询的时候,却发现后面几个字符没有了,只剩下前面那些内容。这主要是因为在数据保存的时候,超过了数据库的最长位数限制。数据库就会自动把后面几个字符去掉然后保存。如此,用户在前台输入数据的时候,以为可以保存。但是,实际上数据库中存储的数据是不全的。
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
更多精彩
赞助商链接