使用SQL Server 2008将数据插入两个不同的表?
我的数据库中有三个表:使用SQL Server 2008将数据插入两个不同的表?,sql,sql-server,database,sql-server-2008,database-design,Sql,Sql Server,Database,Sql Server 2008,Database Design,我的数据库中有三个表:Contacts(主表)、Users和Staff。Contacts表有一个主键,该主键作为Users和Staff表中的外键引用 联系人 ContactID (Primary Key) First Name Last Name Email 用户: ContactID (Foreign Key) Username Password ContactID (Foreign Key) Position Comments 员工: ContactID (Foreign
Contacts
(主表)、Users
和Staff
。Contacts
表有一个主键,该主键作为Users
和Staff
表中的外键引用
联系人
ContactID (Primary Key)
First Name
Last Name
Email
用户:
ContactID (Foreign Key)
Username
Password
ContactID (Foreign Key)
Position
Comments
员工:
ContactID (Foreign Key)
Username
Password
ContactID (Foreign Key)
Position
Comments
使用内部联接
从这些表中提取数据相当简单,这取决于您需要从用户
或员工
表中获取哪些数据。更新和插入新记录是一件我不确定该怎么做的事情
由于联系人
表是我的主表,它拥有唯一的ID,但同时在用户
和员工
之间共享,因此我不确定这种情况
假设我想输入新的用户记录。我需要在联系人
表中输入姓名和电子邮件,在用户
表中输入用户名和密码。同时,我必须检查联系人
表中是否已经存在First、Last name和email,因为可能该联系人
记录之前已输入员工
记录
我不确定如何防止重复,但同时可能有同名的用户或员工。如果联系人表中已经存在电子邮件,我是否应该限制/过滤电子邮件,不让他们输入记录?还是有更好的方法来处理这个问题
拥有三个表的全部目的是防止冗余数据,因为
用户
可能是职员
,但职员
可能不是用户
,如果这有意义的话。如果有人能帮我选择最好的方法,请让我知道。谢谢首先,您必须使用SELECT查询和您想要测试的任何业务规则来决定是执行INSERT,还是更新现有记录
然后,如果要插入,必须先插入联系人,获取新插入的ID,然后插入其他两个表。通过阅读您的帖子,我不能完全确定是否需要3个表。事实上,实际上可能只有一个表可用。联系人、用户和员工之间的关系是否为1:1?如果联系人可以是员工,但不是用户,那么为什么不允许用户特定列为空,反之亦然?(假设工作人员也可以是用户)相关问题:@Larnu如果我理解您的评论,您建议将所有数据存储在一个表中。然后有一个字段来标记用户是否是员工。正确吗?如果我的理解是正确的,这是一个选项。@DaveCullum这是一个相关但不同的主题,因为我问的是设计,这里有更多如何处理Insert/Update语句。