何百万もの投稿 ID# を保存するデータベースがあります。各投稿 ID # に多数のユーザー ID # (投稿 ID ごとに約 20 ~ 50 のオーダー) を関連付ける必要があります。PHP でセミコロン区切りのリストを作成し、それを投稿 ID 行の DB フィールドに挿入することを考えていました。
これは、これを行うための比較的効率的で良い方法ですか?
ありがとう!
何百万もの投稿 ID# を保存するデータベースがあります。各投稿 ID # に多数のユーザー ID # (投稿 ID ごとに約 20 ~ 50 のオーダー) を関連付ける必要があります。PHP でセミコロン区切りのリストを作成し、それを投稿 ID 行の DB フィールドに挿入することを考えていました。
これは、これを行うための比較的効率的で良い方法ですか?
ありがとう!
これに対する長い答えは、1 対多の関連付けテーブルを作成する必要があるということです。これは、適切なデータベースの正規化の原則によって決まります。
リストをセミコロンで連結されたリストとしてデータベースにシリアル化するというアプローチの問題は、逆シリアル化できない限り、データ自体が事実上役に立たないことです。
この種のフィールド:
JOIN
作戦には使えません。あなたは単純な関連テーブルの作成について話している:
CREATE TABLE user_posts (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
post_id INT
)
重複がないことを確認するために、UNIQUE
インデックスを付けます。user_id,post_id
列を含めるのid
は主に、ユーザーと投稿のペアを指定しなくても特定の行を削除できるようにするためです。