SQL关系问题

SQL关系问题,sql,Sql,我正在创建一个应用程序,它将在名为tags的表中搜索带有这些标记的事件。将有两个表:标记和事件,当用户搜索某个内容时,应用程序搜索标记表,然后显示事件表中的相关信息 这是应用程序搜索和显示数据的流程: User searches -> SQL search on tags table -> using tag_ids found, search for relevant events on events table -> display event data 我这样想对

我正在创建一个应用程序,它将在名为
tags
的表中搜索带有这些标记的事件。将有两个表:
标记
事件
,当用户搜索某个内容时,应用程序搜索
标记
表,然后显示
事件
表中的相关信息

这是应用程序搜索和显示数据的流程:

User searches -> 
SQL search on tags table -> 
using tag_ids found, search for relevant events on events table -> 
display event data

我这样想对吗?我有一种感觉,我可能不是。我不想将每个
标记id
存储在
事件
表中名为
标记id_1
标记id_2
的列中,也不想限制用户可以附加到事件的标记数量。但是,我不想依赖我的应用程序来处理SQL,所以我也不想将标记作为
JSON
对象存储在表中。这是可能的,还是我必须改变我的搜索方式?

我想你还需要一张表。您已经有了标记和事件,但是标记不应该包含在事件表中,因此创建一个标记和事件表,每个标记和事件ID对应一行

  • 标签表

    ID | NAME 
    1  | sql 
    2  | oracle
    
  • 事件表

    ID | TYPE 
    1  | Question asked 
    2  | Question asked
    
    EVENT_ID | TAG_ID 
    1        | 1 
    1        | 2
    2        | 2
    
  • 标记事件表

    ID | TYPE 
    1  | Question asked 
    2  | Question asked
    
    EVENT_ID | TAG_ID 
    1        | 1 
    1        | 2
    2        | 2
    
说明:

  • 事件1:使用标记“sql”和“oracle”提问
  • 事件2:带“oracle”标签的问题

    • 我想你还需要一张桌子。您已经有了标记和事件,但是标记不应该包含在事件表中,因此创建一个标记和事件表,每个标记和事件ID对应一行

      • 标签表

        ID | NAME 
        1  | sql 
        2  | oracle
        
      • 事件表

        ID | TYPE 
        1  | Question asked 
        2  | Question asked
        
        EVENT_ID | TAG_ID 
        1        | 1 
        1        | 2
        2        | 2
        
      • 标记事件表

        ID | TYPE 
        1  | Question asked 
        2  | Question asked
        
        EVENT_ID | TAG_ID 
        1        | 1 
        1        | 2
        2        | 2
        
      说明:

      • 事件1:使用标记“sql”和“oracle”提问
      • 事件2:带“oracle”标签的问题

        • 这里有一个N:N关系。有多种类型的标记可以添加到多个不同的事件中。您需要创建另一个表来将它们链接在一起:例如,一个
          tags\u per\u event

          标记
          表中,您仅存储有关标记本身的信息(id、说明..)。在
          events
          表中,您仅描述事件(id、描述、源…)。最后,在
          tags\u per\u event
          表中,每个事件的每个标记都有一行。对于每一行,您将拥有标记的ID和事件的ID。查找信息时,您需要加入3表,以便获得有关哪些标记被分配给哪个事件的所有信息,以及关于这些标记的信息(添加说明等)


          这里有一个N:N关系。有多种类型的标记可以添加到多个不同的事件中。您需要创建另一个表来将它们链接在一起:例如,一个
          tags\u per\u event

          标记
          表中,您仅存储有关标记本身的信息(id、说明..)。在
          events
          表中,您仅描述事件(id、描述、源…)。最后,在
          tags\u per\u event
          表中,每个事件的每个标记都有一行。对于每一行,您将拥有标记的ID和事件的ID。查找信息时,您需要加入3表,以便获得有关哪些标记被分配给哪个事件的所有信息,以及关于这些标记的信息(添加说明等)


          您可以在所有三个表之间执行
          join
          语句,对吗?您可以在所有三个表之间执行
          join
          语句,对吗?