扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:Builder.com.cn 2007年2月8日
关键字: SQL Server
第三范式:
这是我对样例表格作的最后一次标准化操作。通过这次操作要达到的目的是消除表格中那些不完全函数依赖主关键字的字段。我们必须确保表格中的字段都是完全依赖于主关键字的。如图4:
|
|
|
|
当实施完第三范式操作后,将会产生四个表(事实理论上还可以得到五个表)。由于在Transactions表格中,顾客姓名字段并不是完全函数依赖于主关键字,所以我将它从Transactions 表中移去,并重新为它建立了一个AutoOwners表。在AutoOwners表中我创建了一个主关键字并通过它与Transactions表产生关联。
我们知道CarType字段与TransactionDetail表中的主关键字没有明确的依赖关系,但是VIN字段却与TransactionDetail表中的主关键字存在着这种依赖关系。由于CarType的依赖关联与VIN 数值,我单独创建了一个Automobiles表格,将VIN作为这个表格的主关键字。同样,CarType作为一项查询数据。事实上,我同样可以为它创建一个单独的表格,这里为了简化操作,就没有考虑。
正规化的一种替代方案
你是否总是按照第三范式的要求处理你的数据库呢?忠实的支持者们认为,按照第三范式的要求对数据库进行处理是十分重要,它将使得数据库从根本上和理论上都是一个合理的结构,并减少空数据和冗余数据,从而节省存储空间。
根据我的经验,依照第三范式建立的数据库并不是非常的实用。依照第三范式建立起的数据表在执行数据恢复操作时常常会失败,而数据库恢复恰恰是我们要经常进行的操作。通过完全规范化方法(大多数的数据库管理员认为通过第三范式建立的数据库是完全规范化的)产生的一个问题就是会得到许多的表格,所以当进行查询操作时就必须要使用更多的连接语句。这就会给开发人员带来更多的不变,并且导致数据查询的时间增多。
我认为最好的解决方法就是采用折中方案。我一般会按照类似第三范式的要求来设计数据库。在这类数据库中,着重于数据库的查询,并且在必要的时候可以反正规化操作。这种所谓的反正规化操作使我们节省了大量宝贵的CPU资源。当然,我们也要为性能的提升付出相应的代价,代价就是你要使用更多的数据空间(数据冗余的存在)。
Tim Chapman先生在一家位于Louisville, KY的银行从事数据库管理员的工作,拥有7年的IT工作经验。他还通过了微软的SQL Server 2000和SQL Server 2005认证。
责任编辑:张琎
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者