我正在尝试在Visual Studio服务器窗格中创建2个表,但在创建外键时遇到问题。
当我尝试在关系页面中创建它们时,在我将它们作为主键之前,我不会让我创建外键。
我不明白为什么我的表中不能有一个不同的成员,它是主键,另一个是外键。
我的表格是这样的:
表人:
Primary key: ID int Name nvarchar Age int City nvarchar Foreign key: AccountNumber int --> when I make him primary key everything works.
Table BankAccount:
Primary key and Foreign Key: AccountNumber int Money float
PS。 我在CMD上使用了一些mysql,我记得我能做到这一点,但因为我在视觉工作室里没有这个控件,所以我迷失了。
更新: Rup提出了一个很好的观点,我只是放心地回答他问我的问题 我刚刚为银行账户表做了现实(外键),现在我得到了 我想要什么,谢谢你!
答案 0 :(得分:2)
为什么BankAccount.AccountNumber是外键?您是否想要参考拥有它的人?
如果是这种情况,BankAccount应为:
CREATE TABLE BankAccount
(
AccountNumber int PK,
Money float, // bad idea. Use currency or int (i.e. store balance as pennies)
Owner int FK REFERENCES People.ID
)
从人员表中删除帐户ID。
这模拟关系“一个帐户只有一个所有者”并允许关系“一个人可以拥有多个帐户。”
看起来你要做的就是创建一个后向引用。如果您选择这样做,那么对所有者的后向引用应该在People.ID上,而不是在帐户上。 - 虽然这是不必要的,因为你可以简单地查询
SELECT * FROM
BankAccount INNER JOIN People ON BankAccount.Owner = People.ID
获取所有帐户及其所有者。
如果您想为帐户建立多个所有者,并且每个用户需要多个帐户,那么您需要建立第三个表来实现多对多关系。
CREATE TABLE AccountOwners
(
AccOwnID int PK,
AccountID int FK REFERENCES BankAccount.AccountNumber,
PeopleID int FK REFERENCES People.ID
)
删除People.AccountNumber和BankAccount.Owner。此技术类似于维护您可以查询的所有帐户和所有者的列表。