sql - 在 Visual Studio 2010 中创建外键

标签 sql visual-studio

我试图在 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/

相关文章:

sql - 如何从字符串中获取数字

mysql - 使用连接和嵌套查询计算数量

mysql - 如果字段尚不存在则更改表

sql - 需要一些有关 Sql Server 和简单触发器的帮助

MySQL 为每条已经存在的记录插入一条记录

visual-studio - 如何使用 Visual Studio 网站项目进行 Web.config 转换?

visual-studio - 使用 Visual Studio Docker 组合支持运行测试

c# - Visual Studio 查找代码路径/执行路径

javascript - 在 SharePoint 工作流中暂停直至日期

c# - 检测文本框中的小数