合并来自不同表的列的数据设计问题
问题描述:
我有一个2表:一个会员表和邮件列表表。合并来自不同表的列的数据设计问题
[Members]
Username
Password
EmailAddress
MailingListOptIn [bit]
Planes [bit]
Boats [bit]
Cars [bit]
- 果实列是用户的喜好。
和
[MailingList]
EmailAddress
MailingListOptIn
- 一个mailinglist'er可以选择接收简报,但不一定是成员
我想开始储存为mailinglist'ers偏好。我的问题是整合这两个表格数据的最佳方法是什么?
我已经试验过只存储用户名,密码等成员信息的成员表以及存储电子邮件地址和首选项的单独配置文件表。成员和邮件列表首选项都可以存储在此配置文件表中,但无法添加FK约束,因此我无法添加邮件列表器。
所以现在我的选择是:
- 坚持使用2台,但是,从邮件列表表重复介绍“首选项”栏。
- 使用单个型材表和螺纹参考完整性。
或者还有另一种更好的方法?
答
我会做这样的:
I)的“人”表中的电子邮件地址作为关键字
II)一个“成员”表中,只有会员将有创纪录的在这个表中,通过EMAILADDRESS(也键在此表)
ⅲ)“邮件列表”表,具有对邮件列表的描述,也许等领域
ⅳ)“mailingListSubscriber”一个唯一的ID链接到“人”表(一种关系)与pe的电子邮件地址rson和邮件列表的ID。
对不起,添加表格,但我认为这是满足要求的适当标准化的最小设置。
答
CREATE TABLE Profiles (
Username
Password
EmailAddress
MailingListOptIn [bit]
Planes [bit]
Boats [bit]
Cars [bit]
);
CREATE VIEW Members AS
SELECT * FROM Profiles WHERE Username IS NOT NULL
WITH CHECK OPTION;
CREATE VIEW MailingList AS
SELECT EmailAddress, MailingListOptIn, Planes, Boats, Cars
FROM Profiles WHERE Username IS NULL
WITH CHECK OPTION;