【发布时间】:2016-06-23 20:17:27
【问题描述】:
我有一张旧表,设置如下
电子邮件
[IdEmail]
[电子邮件地址]
[城市]
最多有 5 个不同的City's,并且与EmailAddress 存在一些重复数据。
我的新设置有这两个表(为了举例,我已对其进行了简化)。
电子邮件地址列表表
[IdEmailAddress]
[电子邮件地址]
电子邮件订阅
[IdEmail订阅]
[电子邮件地址 ID] (FK)
[MailingListID] (城市)
如何在不复制重复的电子邮件地址的情况下插入新数据?还是用简单的插入插入所有记录然后删除重复项并更改链接表中的相应ID更容易?不过,我有点不知道该怎么做。
更新
只是为了澄清,例如说旧表有记录:
ID Email City
1 email@domain.com 1
2 email@domain.com 4
3 email@domain.com 5
4 NEWemail@Newdomain.com 1
我想像这样将它转移到新表中
电子邮件地址列表表
Id Email
1 email@domain.com
2 NEWemail@NEWdomain.com
电子邮件订阅
ID EmailID MailingListID
1 1 1
2 1 4
3 1 5
4 2 1
【问题讨论】:
-
重复邮件是什么意思,只有mailaddress列是重复的?或整列
-
旧表中的
EmailAddress列有重复的地址以覆盖各个城市,我想在新表中规范化这一点,只有一个电子邮件地址条目和多个链接 ID 的 EmailSubscription 条目 -
1) 创建新表 2) 向其中插入数据 3) 修改 EmailSubscriptions(添加新列) 4) 将数据插入新列 5) 删除具有字符串地址的列 EmailSubscriptions 6) 删除重复项
-
@progpow 感谢您的回复,但我不确定该方法是否可行 - 电子邮件的 ID 需要匹配,简单地删除重复项不会使用正确的电子邮件更新订阅链接记录ID(并且很可能导致外键限制异常)。
EmailAddressListTable与EmailSubscritions具有一对多关系。 -
@GJKH 如果在第二阶段你有没有重复的桌子,它可以解决任务吗?
标签: sql sql-server tsql normalization