吉姆·W具有良好的开端,但要进一步规范化,使您的冗余地址元素成单独的表格也是如此。
创建重复地址数据的表(国家/地区,州/省等)拥有数据表后,您需要将诸如StateID,CountryID等列添加到地址表中。
您现在有修复现有数据的选项。您可以快速和肮脏,并使用Update语句将所有新创建的ID字段设置为指向正确的数据表。
UPDATE Addresses SET StateID=1 WHERE STATE='AL'
你可以很快做到这一点作为一个批处理.sql文件,但我建议通过地址表推出,并尝试将当前的“国家”匹配在新的条目更编程解决方案各国表。如果找到,地址表上的StateID将使用来自状态中对应行的ID进行更新。
然后,您可以从地址表中删除旧的状态字段,因为它现在已经标准化并整齐地放入单独的状态表中。
可以对所有冗余数据元素重复该过程。但是,IMO db标准化可能太过分了。例如,如果您有一个常用的查询,在规范化后需要10个连接才能完成,您可能会看到性能下降。这似乎并不是这种情况,因为我认为你在正确的轨道上。
从以上评论: @Lance我想要类似的东西,但这里是问题,我有原始数据以单表的形式进来,我需要改进和发送到两个表我可以添加地址表2,但我不知道如何在表1中插入address_id
您可以使用@@ IDENTITY从地址表中检索新创建的ID,并使用此值更新address_ID。
这正是我所做的,但是在向表1中添加新行时,如何插入地址标识符? – SweetGangster 2009-08-27 23:13:31
您可以在Access中创建一个表单,让用户选择一个现有的地址或输入一个新的地址。你只需要定义一对多关系然后构建一个表单。 – 2009-08-27 23:14:58
首先,你添加表2中的地址(或者如果有的话),然后拉取address_id并将其插入表1中的其余数据中。 – 2009-08-27 23:15:20