0

私は、ソース、メモ、および場所を無制限にイベントに追加できるようにしたい、独自の系図ソフトウェアに取り組んでいます。しかし、ソース テーブルに関して問題があります。すべての種類のソースに適合する 1 つのテーブルを作成することはできません。

ソースの例

ソース: 手紙

  • から
  • 日にち
  • 文章

出典:インターネット

  • Webサイト
  • 日にち
  • 文章

出典:国勢調査

  • 住所...など。

したがって、これまでの私の解決策は、ソースの種類ごとに特別なテーブルを作成し、それらを event_vs_source テーブルにリンクすることです

ID             INT
eventID        VARCHAR
sourceID       INT
sourceTable    VARCHAR

データは次のようになります。

ID          453
eventID     67
sourceID    345
sourceTable source_letter

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 の配列が得られますが、これを JOIN で使用して正しいテーブルを選択し、その中のソース ID を見つけるにはどうすればよいでしょうか? 個別のクエリを実行すれば可能ですが、複数のソースが 1 つのイベントに接続されていて、それらすべてが異なるソース テーブルにある場合はどうなりますか?

event_vs_source

ID          486
eventID     67
sourceID    23
sourceTable source_website

これにより、さらに個別のクエリが作成されます。

それとも、このデータベースの設計が間違っていますか? それを行うより良い方法はありますか?

要するに、1 つのイベントにできるだけ多くの情報源、場所、およびメモを追加できるようにしたいということですが、無制限の新しい未知の将来のテーブルも、1 人あたりのデータベース リクエスト数が少なくて済むようにしたいと考えています。そして、人は無制限の量のイベントを実行できることを覚えておいてください.....

4

0 に答える 0