多くの要件が記載されていないため、特定するのは困難です。
しかし、MySQL で作業しているとしたら、次のようにします。
POST テーブル:
post_id int primary key an id number
field int not null which of the 20 or so text fields this goes with
user_id int not null fk the user making the post
active tinyint 1 = active 2 = invisible to users (deleted)
(other identifying data as needed)
posttime datetime not null when the post was first created
edittime datetime not null when the post was most recently changed
(if never changed, the same as posttime)
title varchar text of the post's title
POSTTEXT テーブル
post_id int part of primary key
posttext_id int part of primary key
posttext text part or all of the post's text
active tinyint 1 = active 2 = invisible to users (deleted)
したがって、各投稿の POST には 1 行、POSTTEXT には 0 行以上が含まれます。ほとんどの投稿では POSTTEXT に 1 行しかありませんが、非常に長い投稿には複数の行が含まれる場合があります。POSTTEXT.post_id は、POST.post_id を指す外部キーです。posttext_id は、個別の投稿ごとにゼロからカウントアップする数値です。
posttext 列を POST テーブルに入れるだけではないのはなぜですか? 非常に長い投稿をユーザーにページに表示させる必要がないと確信している場合は、これを行うことができます。スキーマははるかに単純になります。しかし、システムに 10 万語の投稿が多数あり、ユーザーがテキストの n ページ目を表示する可能性がある場合は、2 テーブル ソリューションの方がうまく機能します。
この種のものは、複数のフィールドに対して複数のテキスト列を持つテーブルよりもはるかに優れたパフォーマンスを発揮します。RDMS の作業では、ほとんどの場合、多数の列を持つ非常に幅の広い行を処理するよりも、複数の同様の行を処理する方が適切です。