0

このゲーム ポータルを構築していますが、データベースに関する懸念があります。現在、テーブルは 10 個ほどありますが、プログラミングが完了すると 20 個以上になると思います。とにかく、さまざまなテーブル間にある種の関係を作成したいと考えています (WordPress のようなものです)。そのテーブルは、テーブル A の 1 つの行がテーブル B の行に対して持っているすべての関係を保持します。そして、私が思いついたのは次のとおりです。

テーブルの関係

| rs_id | rs_type | rs_alpha | rs_beta |

rs_id -> 単なる ID
rs_type -> リレーションのタイプ
rs_alpha -> 関連テーブル #1 と行 ID
rs_beta -> 関連テーブル #2 と行 ID

例:

| 1 | cover | games:153 | images:318 |
| 2 | tag | news:183 | tags:18 |
| 3 | group_admin | users:918 | group:75 |
...

これで十分かもしれませんが、私の懸念事項は次のとおりです。 1. このテーブルは非常に急速に拡大するため、すぐに 100,000 行を超えてロード時間が遅くなる可能性があります。2.情報を抽出するには、すべての呼び出しを爆発させる必要があり、読み込み時間が遅くなる可能性があります。3. テーブル名を id (rs_alpha、rs_beta) から分割するかもしれませんが、ロード時間が遅くなる可能性もあります。

ありがとうございます。これよりも優れている可能性のある他のソリューションを受け入れます:)

時間があれば、ここから私のデータベース構造をダウンロードして、どのように見えるかを確認できます: demirevdesign.com/public/pcanvil.sql.gz

(addon_ テーブルは関係テーブルになります)

4

1 に答える 1

0

私が理解している限り、関係タイプ自体が関与するテーブルを定義するため、テーブル名を保存する必要はありません。
また、スキーマをリファクタリングし、関係に関与する可能性のあるすべてのエンティティに共通の親テーブルを追加する場合、テーブル名をまったく気にする必要はなく、その新しいテーブルの ID を保存するだけです。

最後に、関係には常に開始日があり、終了日がある場合もあります。この属性をrelationshipsテーブルに追加することをお勧めします。

パフォーマンスに関しては、テーブルをどのようにクエリするかを知らずに答えるのは難しいです。一般的に、関係タイプの列によるパーティション化が有益であると思います

于 2012-11-17T15:10:47.110 に答える