1

何百万もの投稿 ID# を保存するデータベースがあります。各投稿 ID # に多数のユーザー ID # (投稿 ID ごとに約 20 ~ 50 のオーダー) を関連付ける必要があります。PHP でセミコロン区切りのリストを作成し、それを投稿 ID 行の DB フィールドに挿入することを考えていました。

これは、これを行うための比較的効率的で良い方法ですか?

ありがとう!

4

2 に答える 2

4

これに対する長い答えは、1 対多の関連付けテーブルを作成する必要があるということです。これは、適切なデータベースの正規化の原則によって決まります。

リストをセミコロンで連結されたリストとしてデータベースにシリアル化するというアプローチの問題は、逆シリアル化できない限り、データ自体が事実上役に立たないことです。

この種のフィールド:

  • 効果的に索引付けできません。
  • 列のストレージ容量を超えるまで成長する可能性があります。
  • 適切に利用するにはコンテキストが必要です。
  • 外部キーの整合性チェックを使用できません。
  • 簡単には修正できません。
  • 全体を削除するには、フィールド全体を書き直す必要があります。
  • 直接照会することはできません。
  • JOIN作戦には使えません。

あなたは単純な関連テーブルの作成について話している:

CREATE TABLE user_posts (
  id INT AUTO_INCREMENT PRIMARY KEY,
  user_id INT,
  post_id INT
)

重複がないことを確認するために、UNIQUEインデックスを付けます。user_id,post_id列を含めるのidは主に、ユーザーと投稿のペアを指定しなくても特定の行を削除できるようにするためです。

于 2013-09-30T20:17:14.820 に答える