使用SQL Server 2008将数据插入两个不同的表中?

时间:2018-04-06 15:44:37

标签: sql sql-server database sql-server-2008 database-design

我的数据库中有三个表:Contacts(主表),UsersStaffContacts表有一个主键,它被引用为UsersStaff表中的外键。

通讯录

ContactID (Primary Key)
First Name
Last Name 
Email 

用户

ContactID (Foreign Key) 
Username 
Password 

员工

ContactID (Foreign Key) 
Position 
Comments

使用INNER JOIN从这些表中提取数据非常简单,并且需要从UsersStaff表中获取所需的数据。更新和插入新记录是我不确定采用哪种方式的方法。

由于Contacts表是我的主表并且包含唯一ID,但同时在UsersStaff之间共享,我不确定关于这种情况。

我想说我想输入新的用户记录。我需要在Contacts表中输入First,Last name和email,在Users表中输入User Name和Password。同时,我必须检查Contacts表中是否已存在名字,姓氏和电子邮件,因为之前可能已为Contact记录输入了此Staff条记录。

我不确定如何防止重复,但同时可能会有相同名称的用户或员工。我应该通过电子邮件限制/过滤,如果电子邮件已存在于联系人表格中,则不要让他们输入记录吗?或者有更好的方法来处理这个问题吗?

拥有三个表的重点是防止冗余数据,因为User可能是Staff,但Staff可能不是User,如果这有意义的话。如果有人能帮我挑选最好的方法,请告诉我。感谢

1 个答案:

答案 0 :(得分:1)

您必须首先使用SELECT查询和您要测试的任何业务规则来决定是否要执行INSERT,或者更新现有记录。

然后,如果要进行INSERT,则必须先插入Contacts,获取新插入的ID,然后插入其他两个表。