2011-03-03 72 views
0

好的。所以在我的工作地点,我们的sql数据库中有一个产品表,用于保存我们产品的信息(如图)。然而,创建该表的公司(我们以前的Web供应商)显然不相信使用多个表来保存数据。所以,这相当于一个201列表,其中包含几乎所有您可以想到的相关和不相关数据的列。显然,我不希望它再那样。我创建了逻辑表将数据分成包含原始列的数据。我如何使用原始数据填充新表格?我知道这是一个普遍的问题,我正在寻找一个普遍的答案。我不需要具体的东西,我只需要指出正确的方向。谢谢数据库标准化注意事项

+0

如果你可以指出一个这样的样本数据如何存储在产品表中,以及如何存储在其他逻辑表中,人们可以帮助你。 – 2011-03-03 17:01:44

+0

@Sachin Shanbhag这是201列,所以可能有点多张贴样本,但例如有不同的服装类型,每种类型都有不同的测量组合,我需要将它们分开。 – Nick 2011-03-03 17:06:12

+0

是的,那么你想出了什么样的逻辑结构,以及这个服装类型是如何存储在主表中的。只有一列?或者一些相关的列呢? – 2011-03-03 17:10:22

回答

1

查找网络上的数据库重构。

基本上,不要创建任何表或移动任何数据。相反,除了SQL视图之外,还创建执行该作业的SQL脚本,以便虚拟地重新创建原始表格布局。还有一些验证该视图的代码,可能是通过逐行比较原始表。然后运行该脚本,检查数据,并在完全正确时删除怪物表并重命名该视图以取代它。

希望您知道SELECT INTO将数据导入新表格。你会做的事情如SELECT DISTINCT clothingtype FROM bigtable INTO clothingtypes;

+0

谢谢你的提示。我发现了一个名为Sql Prompt的Red Gate产品,它完全符合我的需要,我想我之前并没有在Google上搜索正确的单词;)。但是我知道如何做简单的sql语句我只是需要一些东西来使这个任务不那么令人生畏,我的问题的措辞很糟糕。 – Nick 2011-03-03 18:11:07

0

您可以为原始表中的所有或部分行选择要插入的列,并将此组插入到目标表中。你熟悉SQL UPDATE和INSERT语句吗?编辑:你只想重新定位那些不涉及每列行的列;如果该列仅适用于某些行,那么如果规范化是目标,那么这些行/列就是重定位的候选对象。