Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server Management Studio-是否可能存在多对多关系?_Sql Server - Fatal编程技术网

Sql server SQL Server Management Studio-是否可能存在多对多关系?

Sql server SQL Server Management Studio-是否可能存在多对多关系?,sql-server,Sql Server,多对多非一关系是否可能,如果可能,我将如何实现 为了给你更多的工作,数据库由圣经文本组成。它由包含诗句的章节的书组成,所有这些都非常简单。问题在于搜索索引。我需要创建一个索引表,其中所有单词的长度都超过两个字符,每个单词都指向这个单词出现的所有诗句。但绝对没有必要让经文指向他们。如果他们回过头来看,我需要一个多对多的关系,我目前也不知道该怎么做,但实际上不需要那个冗余数据。它永远不会被使用。我所需要的只是从单词索引指向适当的诗句的指针。不需要来回票 我可以用代码优先的方法很容易地做到这一点,但本

多对多非一关系是否可能,如果可能,我将如何实现

为了给你更多的工作,数据库由圣经文本组成。它由包含诗句的章节的书组成,所有这些都非常简单。问题在于搜索索引。我需要创建一个索引表,其中所有单词的长度都超过两个字符,每个单词都指向这个单词出现的所有诗句。但绝对没有必要让经文指向他们。如果他们回过头来看,我需要一个多对多的关系,我目前也不知道该怎么做,但实际上不需要那个冗余数据。它永远不会被使用。我所需要的只是从单词索引指向适当的诗句的指针。不需要来回票

我可以用代码优先的方法很容易地做到这一点,但本练习的明确目的是熟悉数据库优先建模,因此我一直使用SQL Server Management Studio…

考虑两个表:

CREATE TABLE Verses(ID INT, Text NVARCHAR(200))
CREATE TABLE WordIndex(ID INT, Word NVARCHAR(MAX))
您可以创建第三个表

CREATE TABLE WordIndexVerses(ID INT, WordIndexID INT, VerseID INT)
将索引词与该词所在的不同诗句链接

For example:
Verses(ID, Text)
1, 'My Lord'
2, 'My God'

WordIndex(ID, Word)
1, 'My'
2, 'Lord'
3, 'God'

WordIndexVerses(ID, WordIndexID, VerseID)
1, 1, 1
2, 1, 2
3, 2, 1
4, 3, 2

添加包含以下列的WordVerses表:WordID和VerseID?它是多对多的,因为每一个词都可以用在许多诗句中,每一个诗句都由许多词组成。我不明白为什么不是多对多。当然可以是多对多。。。这看起来像是多余的数据,因为它永远不需要从一首诗链接回一个搜索词。如果是多对多,它不会损害函数,但是如果是多对无,它会更有效。但这主要是我来自一个编程学校,在那里你每浪费一个字节都会受到惩罚……你没有浪费任何东西。如接受的答案所示,WordVerses表中需要WordID和VerseID列。您可能不需要在该表中添加额外的ID,因为无论如何,您应该在两列WordID和VerseID上有一个唯一的约束。这意味着制作由这两列组成的主键是一个好主意。由于您将使用WordID而不是VerseID进行搜索,那么您应该在复合索引中将WordID放在第一位,VerseID放在第二位。另外,在VerseID的模式和索引中添加外键,就完成了。Blyme,我没有看到forrest,因为所有的树!非常感谢!