规范和使用主/外键的SQL Server 2008 R2

问题描述:

注:我以前从来没有做过这样的:规范和使用主/外键的SQL Server 2008 R2

有哪些步骤或文档,以帮助恢复正常数据库中的表/视图?目前,数据库中有多个表和视图不使用主键/外键概念,并且在多个表中重复相同的信息。

我想清理一下,也有点设置一个进程,保持关系更新。例如,如果一个人的邮编变化或记录被删除,那么它会自动更新其与其他表格行的关系。

注意:*我的问题是规范现有的数据库表。这些表格是现场直播的,所以我如何处理标准化?我是否需要创建一个具有我想要的表结构的全新数据库,然后将数据移动到该数据库?数据移动后,我插入存储过程并导入?

+1

您是否认为您的数据库可能因为某种原因而被解除归一化?它是一个数据仓库,你是否试图规范化它,因为你的意思是以不同的方式使用它?关键是规范化可以减少数据量和不一致性,但查询会更加昂贵......顺便提一下,这是一个太宽泛的问题,如果您查找手册可能会更好。当然,你需要了解你的实体和它们之间的关系,可能会更容易从零开始。 –

+0

嗨。从字面上看,许多信息建模和数据库设计教科书在pdf上免费在线,并且有许多学术幻灯片(例如sfu.ca)和课程(例如stanford.edu)。重新规划/流程再次有html&pdfs产品的前奏和参考。在这里要求这些资源是无关紧要的,并要求其内容太广泛。请阅读并执行[问]。 – philipxy

+0

我认为这是一个有效的问题。这是从现有数据库设置的角度出发的。我要求采取步骤或方法来获取现有的数据库表并对它们进行规范化,然后在向这些表插入更多数据时维持规范化。 – NonProgrammer

这个问题有点宽泛,所以我只会解释一下这个概念。

视图是一般用于报告/数据演示目的,因此我不会去尝试标准化它们。你的情况可能会有所不同。

你还需要清楚地了解主/外键的概念:在桌子上的定义并不意味着该表没有列上的逻辑关系实际约束(例如PRIMARY KEYFOREIGN KEY

缺乏。

数据维护可以在Triggers中实现。

如果你真的有地方在没有明显原因的表存在大量的高反规范化的数据的情况,要规范它,然后这个问题可以从两个方面加以处理:

  1. 全重-write - 我会为小型/新应用程序推荐
  2. “渐进式”重构 - 大型/成熟应用程序,其中基础数据关系复杂且/或可能未完全理解。

在“渐进”再保理有几种方法,以及:

2.A.您取1个旧表并将其替换为新表,并同时更改使用旧表的所有代码以使用新表。对于大型系统,这可能会有问题,因为您可能不知道引用此表的所有地方。另一方面,对于表格结构变化不显着和/或依赖关系数量小的情况,这可能会很有用。

2.b.另一种方法是以你想要的形状/形式创建新的表(在同一数据库中)。当前表格应替换为Views,它们返回相同的数据(旧表格),但是来自“新”表格。这种方法可以删除/最小化立即修改所有依赖关系的需要。缺点是替换旧表的视图可能变得相当复杂,特别是如果需要实现View Instead Of Trigger