私のデータベースには、、、などのさまざまなエンティティがありtodos
ます。それぞれに、、、、およびその他の関連アイテムを含めることができます。events
discussions
tags
comments
files
次に、これらのテーブル間の関係を設計する必要があります。次の 2 つの可能な解決策から選択する必要があると思います。
1. 分離された関係テーブル
todos_tags
、events_tags
、discussions_tags
、todos_comments
、events_comments
、discussions_comments
などのテーブルを作成します。
2. 共通関係表
これらのテーブルのみを作成します: related_tags
、related_comments
、related_files
など。次のような構造を持ちます。
関連タグ
entity
(event|discussion|todo|etc. - enum または tinyint (1|2|3|etc.) として)entity_id
tag_id
どのデザインを使用すればよいですか?
おそらくあなたはこう言うでしょう:それは状況次第ですが、私はこれが正しいと思います。
私の場合、ほとんどの場合 (おそらく 70% 以上)、エンティティ (イベント、ディスカッション、または Todos) の 1 つだけを照会する必要がありますが、場合によっては、それらすべてを同じクエリ (イベント、ディスカッション、Todos の両方) で必要とします。たとえば、指定されたタグを持つ)。この場合、別の関係テーブルを使用する場合は、3 つ以上のテーブル (私の場合は 5 つ以上のテーブル) でユニオンを実行する必要があります。
各テーブル (イベント、ディスカッション、仕事) に 1000 ~ 2000 行を超える行はありません。
正しい方法は何ですか?これについての個人的な経験は何ですか?