我试图在 Visual Studio 服务器 Pane 中创建 2 个表,但在创建外键时遇到问题。
当我尝试在关系页面中创建它们时,在我将它们设为主键之前,它不会让我创建外键。
我不明白为什么我的表中不能有一个不同的成员,它是主键,而另一个成员是外键。
我的表格是这样的:
餐 table 上的人:
Primary key: ID int Name nvarchar Age int City nvarchar Foreign key: AccountNumber int --> when I make him primary key everything works.
表格银行账户:
Primary key and Foreign Key: AccountNumber int Money float
附言。 我在 CMD 中使用了一些 mysql,我记得我可以做到这一点,但是因为我在 visual studio 中没有这个控件,所以我迷路了。
更新: Rup 提出了一个很好的观点,我只在回答了他问我的问题后才感到高兴 我刚刚为银行账户表做了关系(外键),现在我得到了 我想要什么谢谢!
最佳答案
为什么 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。
这模拟了“一个帐户有 1 个且只有一个所有者”的关系,并允许“一个人可以有多个帐户”的关系。
看起来您要做的是创建反向引用。如果您选择这样做,那么对所有者的反向引用应该在 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。此技术类似于维护您可以查询的所有帐户和所有者的列表。
关于sql - 在 Visual Studio 2010 中创建外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8259026/