1

デバイスのテーブルとアクションのテーブルを格納するデータベースを作成しようとしています。各デバイスは複数のアクションに関連付けられます。アクション間に多くのオーバーラップがあります。たとえば、iPhone と Android の両方の携帯電話には、「振る」、「スワイプ」などの基本的なアクションがあります。多くの重複したアクションが作成されるのを避けるために、ID を介してデバイスをアクションにマップする 3 つ目のテーブルを導入することを計画していました。セットアップ全体は次のようになります。 ここに画像の説明を入力

これが最善の方法ですか?それとも、アクションを複製する方が効率的ですか? それを行う他の方法の提案はありますか?

4

2 に答える 2

2

それは残りのデータに依存します。

iPhone の「Shake」行が Android の「Shake」行と異なる場合 (残りのデータを見る場合)、Actions テーブルから直接デバイス テーブルへの外部キーを使用することもできます。マッピング テーブルをスキップします。

しかし、アクションとデバイスが本当に多対多になるのであれば、現在のスキーマは理にかなっています。

于 2013-05-25T18:03:33.240 に答える
0

Matt が既に述べたように、関係が多対多の場合、現在のスキーマは理にかなっています。あなたの説明からすると、これが事実であるかのように聞こえます。

私が提案する 1 つの変更は次のとおりです。「詳細情報を含むその他の列」ヘッダーは、アクション テーブルだけでなく、デバイス テーブルとマップ テーブルにも表示されます。デバイスのみに関する情報は、[デバイス] テーブルに表示されます。アクションのみに関連する情報は、アクション テーブルに表示されます。

また、特定のデバイスのコンテキストでのみ特定のアクションに関連する情報は、マップ テーブルに表示されます。

マップは、中央のテーブルに適した名前です。ただし、データベース設計に関する文献を見始めると、リンク テーブル、関連テーブル、ジャンクション テーブル、またはこれらのいずれかのバリエーションと呼ばれることが多いことがわかります。

于 2013-05-28T10:35:59.870 に答える