将一个SQL表中的行链接到不同表中的多个行,

时间:2015-05-03 16:04:15

标签: php mysql sql sql-server

我正在制作一个基于网络的工具来解析网址。它适用于两个表。一个用于URL,一个用于找到的单词及其解析/出现次数。这是一个简化的例子:

URLs

url-id      url
----------------------------------------------------
1           www.example.net/this-is-a-sentence
2           www.example.org/this-is-another-sentence


Words

word-id  word         category        occurences
----------------------------------------------------
1        this         pronoun         2
2        is           verb            2
3        a            det             1
4        sentence     noun            2
5        another      det             1

我试图想出一种方法将URL表中的每个URL链接到Words表中的每个单词。这样,如果用户决定删除其中一个URL,则可以减少所有适当的发生次数。我对SQL完全不熟悉,所以我不知道它是如何在单元格中存储信息的,但是我希望在URL中有一些动态大小的所有word-id列表。

url-id      url                                         words
---------------------------------------------------------------------------
1           www.example.net/this-is-a-sentence          1,2,3,4
2           www.example.org/this-is-another-sentence    1,2,3,5

我愿意接受在SQL中组织数据的完全不同的方法的建议。

注意 - 删除时我无法再次解析URL,因为在可能的情况下需要用户输入来验证解析。

1 个答案:

答案 0 :(得分:1)

你需要一个像这样的桥接表:

url-id      word-id     (represents, not part of table)
-------------------
1           1           url-id 1 has word-id 1 (this)
1           2           url-id 1 has word-id 2 (is)       
1           3           url-id 1 has word-id 3 (a)
1           4           url-id 1 has word-id 4 (sentence)
2           1           url-id 2 has word-id 1 (this)
2           2           url-id 2 has word-id 2 (is)
2           5           url-id 2 has word-id 5 (another)
2           4           url-id 2 has word-id 4 (sentence)

这被称为多对多关系。 URL可以有很多单词,Word可以属于许多URL。 Here是一篇描述SQL中不同关系的好文章。