sql – 数据规范化和编写查询
我是个小伙子.开发人员(工作5个月),我对数据规范化有疑问.现在,据我所知,数据规范化背后的一般原则是创建一个RDBMS,将??数据冗余保持在最低限度.在我的项目中,其中一个DB人员创建了一个DB.我们有50个表,DB中的表通常非常分散,即.一个表有两三列,就是这样.现在,在编写SQL查询时,由于每个查询都涉及梳理几个不同的表并将它们连接在一起,因此它已成为一个小麻烦.我想知道这是否是数据规范化的副作用?或者这指向其他什么?
我知道对我来说最简单的事情就是根据我必须编写的查询来编写表.这将创建一个包含大量冗余数据的数据库,但我很好奇是否有一个快乐的媒体? 就像后记一样,我不想碰到我正在抱怨我的工作,但我真的很想知道更多关于这一点.我的工作环境不是最友好的,所以我不愿意和同事们提出这个问题.但是,我会感谢来自更有经验的人的任何想法,书籍,教程或意见. 谢谢. 解决方法
只有部分正确. 规范化不是关于“冗余”. 这是关于“更新异常”. 1NF是“不使用数组”规则.打破1NF意味着一行不是原子的,但集合中的集合和独立更新不会很好.会有锁定和缓慢. 2NF是“一键”规则.每行只有一个键,行中的所有内容都取决于键.密钥的一部分没有依赖关系.有些人喜欢谈论候选键,自然键和外键;它们可能存在,也可能不存在.当所有属性都依赖于一个键时,满足2NF.如果密钥是单列代理键,则通常会满足此正常形式. 如果违反了2NF,则您拥有的列依赖于密钥的一部分,而不是整个密钥.如果您有一个表(部件号,修订号)作为键,以及颜色和重量的属性,其中重量取决于整个键,但颜色仅取决于部件号.你有一个2NF的问题,你可以更新一些部分颜色而不是其他颜色,创建数据异常. 3NF是“唯一的关键”规则.如果将派生数据放在一行中,并更改派生结果,则它与源列不匹配.如果更改源列而不更新派生值,则也会出现问题.是的,触发器是一个糟糕的黑客攻击,允许3NF设计违规.这不是重点.关键在于定义3NF并显示它可以防止更新问题.
它是. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sql-server – 将PostgreSQL数据库迁移到MS SQL 2005的最佳
- sqlserver 时间处理函数
- sql – 在UPDATE查询中使用SELECT
- 如何将SQLServer 2000链接服务器的密码破解为明文
- mssql 高效的分页存储过程分享
- SQL Server 2012 – 此版本中未提供透明数据加密
- sqlserver 的prepare方法使用问题
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC IN
- ms访问 – 是否可以更改Access 2007中SQL编辑窗口中的字体?
- sql-server – 在SQL Server(datetime类型)中存储datetime时