Mysql 与无限未知未来表的关系

Mysql 与无限未知未来表的关系,mysql,database-design,Mysql,Database Design,我正在开发我自己的族谱软件,在那里我希望能够为一个活动添加无限量的来源、注释和地点。但是关于源表,我有一个问题。 不可能创建一个适合所有类型源的表 来源示例 资料来源:信 到 从 日期 正文 资料来源:互联网 网站 日期 正文 资料来源:人口普查 年 陈述 郡 地址。。。等等 到目前为止,我的解决方案是为每种源类型创建一个特殊的表,并将它们链接到一个event\u vs\u源表 ID INT eventID VARCHAR sourceID

我正在开发我自己的族谱软件,在那里我希望能够为一个活动添加无限量的来源、注释和地点。但是关于源表,我有一个问题。 不可能创建一个适合所有类型源的表

来源示例

资料来源:信

  • 日期
  • 正文
资料来源:互联网

  • 网站
  • 日期
  • 正文
资料来源:人口普查

  • 陈述
  • 地址。。。等等
到目前为止,我的解决方案是为每种源类型创建一个特殊的表,并将它们链接到一个event\u vs\u源表

ID             INT
eventID        VARCHAR
sourceID       INT
sourceTable    VARCHAR
然后,数据将是:

ID          453
eventID     67
sourceID    345
sourceTable source_letter
来源信

ID        INT
To        VARCHAR
From      VARCHAR
Date      DATE
Text      BLOB
但问题是当我想要获取连接到单个事件的所有源时

SELECT * FROM event_vs_source WHERE event_vs_source.eventID = 67;
这给了我一个数组,其中包含源表的名称,source_letter,但是如何在连接中使用它来选择正确的表并在其中查找源ID? 如果我进行单独的查询,我可以这样做,但是如果我有多个源连接到一个事件,并且它们都在不同的源表上,该怎么办

事件与源

ID          486
eventID     67
sourceID    23
sourceTable source_website
这将导致更多的单独查询

还是我的数据库设计错了? 有更好的方法吗


底线是,我希望能够向单个事件添加尽可能多的源、位置和注释,但也可以添加无限的新的和未知的未来表,但每个人都有一些数据库请求。请记住,一个人可以处理无限量的事件….

在一个源表中保留id、类型和日期等公共信息,在源字段表中保留依赖类型的字段(源id、字段id、值)如何?这是我的最新想法,按照您的建议执行。但最终结果将是多个源文件表,因为一些源文件可能需要不止一个日期,而另一些源文件则需要一两个位置。我希望能够向源添加任何内容,完全没有限制。我一直在考虑在服务器上创建作为文本文件的源,而不是执行多个查询,以减少对数据库的连接/调用数量。如果不能将查询中某个单元格的内容用作另一个表的名称,那就太糟糕了。例如,从sources.sourceTable中选择*其中sources.sourceTable.ID=event.ID