我的数据库中有三个表: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
表中输入名字、姓氏和电子邮件,在Users
表中输入用户名和密码。同时,我必须检查Contacts
表中是否已存在名字,姓氏和电子邮件,因为可能以前已为Staff
记录输入了此Contact
记录。
我不确定如何防止重复,但同时可能有同名的用户或员工。如果联系人表中已经存在电子邮件,我是否应该通过电子邮件限制/过滤,并且不让他们输入记录?还是有更好的方法来解决这个问题?
拥有三个表的全部意义在于防止冗余数据,因为User
可能是Staff
,但如果有意义,Staff
可能不是一个User
。如果有人可以帮助我选择最佳方法,请告诉我。谢谢
您必须首先使用 SELECT 查询和要测试的任何业务规则来决定是执行 INSERT 还是改为更新现有记录。
然后,如果您要插入,则必须首先插入到联系人中,获取新插入的ID,然后插入到其他两个表中。