我的数据库中有三个表:Contacts
(主表),Users
和Staff
。 Contacts
表有一个主键,它被引用为Users
和Staff
表中的外键。
通讯录
ContactID (Primary Key)
First Name
Last Name
Email
用户:
ContactID (Foreign Key)
Username
Password
员工:
ContactID (Foreign Key)
Position
Comments
使用INNER JOIN
从这些表中提取数据非常简单,并且需要从Users
或Staff
表中获取所需的数据。更新和插入新记录是我不确定采用哪种方式的方法。
由于Contacts
表是我的主表并且包含唯一ID,但同时在Users
和Staff
之间共享,我不确定关于这种情况。
我想说我想输入新的用户记录。我需要在Contacts
表中输入First,Last name和email,在Users
表中输入User Name和Password。同时,我必须检查Contacts
表中是否已存在名字,姓氏和电子邮件,因为之前可能已为Contact
记录输入了此Staff
条记录。
我不确定如何防止重复,但同时可能会有相同名称的用户或员工。我应该通过电子邮件限制/过滤,如果电子邮件已存在于联系人表格中,则不要让他们输入记录吗?或者有更好的方法来处理这个问题吗?
拥有三个表的重点是防止冗余数据,因为User
可能是Staff
,但Staff
可能不是User
,如果这有意义的话。如果有人能帮我挑选最好的方法,请告诉我。感谢
答案 0 :(得分:1)
您必须首先使用SELECT查询和您要测试的任何业务规则来决定是否要执行INSERT,或者更新现有记录。
然后,如果要进行INSERT,则必须先插入Contacts,获取新插入的ID,然后插入其他两个表。