SQL两个表的关系

时间:2013-12-31 06:30:37

标签: c# sql dataset designer

我遇到了两个表的问题,我认为这是直截了当的,事实证明并非如此。 表1(Word):

WordID - key
WordValue string
...

表2(句子):

SentenceID - key
SentenceValue String
WordKey int

我需要一个单词有几个句子。所以我在VS C#DataSet Designer中设置关系。在我启动程序后,我得到带有感叹号的红色圆圈的子表和消息ForeignKeyConstraint WordSentence要求子键值(30)存在于父表中。但我有几个WordKey = 30和一个WordId = 30.所以据我所知,我有一个孩子有一个键,父母也有这个值在ID字段= 30和1,但在父表中没有任何东西,虽然我的结构看起来像Northwind数据库。

2 个答案:

答案 0 :(得分:1)

虽然没有直接解决你的问题,因为我不确定我是否正确理解了这个问题,但鉴于问题陈述,恕我直言,对此更好的设计可能是这样的:

表1(Word)

WordID - Primary Key
WordValue - String
...

表2(句子)

SentenceID - Primary Key
SentenceValue - String
...

表3(WordSentenceMap)

WordID (Foreign Key to Word)
SentenceID (Foreign Key to Sentence)

这样,一个单词可用于多个句子,同时一个句子可用作多个单词的例子。

答案 1 :(得分:0)

感谢您的回答。我的问题有点傻了,因为我需要最简单的方法来处理数据库中的两个表,并希望用标准的C#和VS方式呈现它们(只需将表格传送到表格并附加导航器)。所以在我的情况下我有两个表,关系是1到多个并且需要这样,当焦点在父表的记录N上时,只能在子表中看到一些记录集。而是我在父表和子表中看到了所有这些表。当我通过“使用Designer编辑数据集”设置关系时,我收到了一个错误。

现在解决了这个问题:,如“Beginning Microsoft Visual C#2008”一书和许多其他在线资源中所述,您可以创建与数据库的数据连接并创建数据集。然后将表格所需的表格拖到表格中。 但是如果你想要一个正确的依赖,所以在子表中只看到特定的记录集,但不是所有记录都需要在VS的DataSource窗口中拖动一个子表!喜欢

enter image description here