私は、ソース、メモ、および場所を無制限にイベントに追加できるようにしたい、独自の系図ソフトウェアに取り組んでいます。しかし、ソース テーブルに関して問題があります。すべての種類のソースに適合する 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 人あたりのデータベース リクエスト数が少なくて済むようにしたいと考えています。そして、人は無制限の量のイベントを実行できることを覚えておいてください.....