名前と固有のIDを持つ2つのテーブル、エンティティおよびコンポーネントがあります。これらの2つのIDの間の多対多の関係をマッピングする3番目のテーブルがあり、2つの列、entity_IDとcomponent_IDを含みます。エンティティはいくつかのコンポーネントで構成されています。構成表は次のようになりますので、もし:エンティティ2は2と6から作られている間、クエリの関連テーブルと別の列
+----------+---------------+
|entity_id | component_id |
+----------+---------------+
| 1 | 1 |
| 1 | 2 |
| 2 | 2 |
| 2 | 6 |
+----------+---------------+
エンティティ1は、コンポーネント1,2から作られて、私も働いているアプリケーションは、利用可能なテーブルを持っています使用可能なすべてのコンポーネントのIDを含む。私の質問は、これは、どのように私はどのように使用可能なテーブルのコンポーネントの厳密に構築されたエンティティを返すためにデータベースをクエリするのですか?与えられた例では、1,2および6がすべて使用可能な表にある場合、エンティティー1および2を戻す必要があります。それ以外の場合、2が使用可能なテーブルにない場合(ただし、1と6は)、何も返されません。私はMySQLの初心者ですので、論理を説明することができれば偉大になるでしょう。
参照整合性を強制する場合は、存在しないコンポーネントを持つエンティティを持つことすらできません。そうする場合は、ヌル値をチェックし、それらを破棄します。 –
コンポーネントテーブルが頻繁に変更されます。コンポーネントがテーブルにない場合は、コンポーネントが一時的に使用不可であることを意味し、存在しないことを意味しません。 – caltangelo
利用可能なコンポーネントはどのように知っていますか?それはコンポーネントテーブルIS_IN_STOCKのフラグか、そのリストをクエリに渡しますか? –