1

私の Web サイトでは、ユーザーが複数の WYSIWYG (TinyMCE) テキスト フィールドにテキストを挿入できるようにします。各フィールドには、ナビゲーションと一般的な識別に使用されるタイトルがあります。

データベースに入力されているもの: 複数: 入力からのテキスト (最大 255 文字) 複数: WYSIWYG エディターからの HTML/テキスト (最大セットなし) (20 ほどのテキストとテキストフィールドになる可能性があります)

私の質問は次のとおりです。ユーザーが生成したコンテンツを処理するようにデータベースを設定する適切な方法は何ですか (テキストまたはその他のために 20 列を作成する必要があります)。そして、どのような形式でデータベースに送信する必要がありますか(すべてを配列にまとめてデータベースに送信するか、何を送信するだけですか)? また、各テキストフィールドに入力できるテキストの量を制限する必要がありますか?

使用: phpMyAdmin の使用 CodeIgniter を php フレームワークとして使用

4

2 に答える 2

3

まず、フレームワークと phpmyadmin の使用は関係ありませんが、確かに、両方を使用しないのはなぜですか? 彼らはあなたの好みであり、CI はかなり大規模なプロジェクトを処理します。

そうは言っても、この場合はリレーショナル データベースを使用することをお勧めします。選択した方法でこれをスケーリングできます。したがって、この例では、記事と、常にテキスト フィールドであるこれらのテキスト フィールドへの多くの関係があるように、関係が特定のものであると仮定します。これは、フォーム要素の種類や、さまざまな長さと値が大量に混在しているわけではないことを意味します。最終的には、リレーショナル システムを使用せずに記事に 20 個のテキスト フィールドを追加するなど、大規模なやり過ぎや悪臭を放つ制限なしに、必要なことを実行できるように設定する必要があります。

このようなシステムをセットアップするのは非常に簡単です。構造について説明しますが、リレーショナル データベース アーキテクチャの概念を理解していることを前提としています。リンクを提供しますが、正直なところ、用語を検索するだけで、混乱を埋めるための膨大な量のリソースが提供されるはずです.

特定の質問がある場合は、この投稿を更新することがあります。

編集

私を信じてください、これは大規模とは見なされません。この詳細だけでパフォーマンスが低下するほど十分な数のリレーショナル フィールドを持つ単一の入力フォームを作成する可能性はほとんどありません。10 個のテキスト フィールドがあるとします。より大きな問題は、tinyMCE または使用している WYSIWYG エディターがその多くのインスタンスをスムーズに処理できるかどうかです。一度に2本以上使ったことがないのでよくわかりません。安全だと思います。

リレーショナル データのフェッチに必要な時間は、クエリの書き方によって大きく異なります。CIにはそれを支援するために使用できるデータベースORMシステムがあると思うので、他のIN選択内にネストされた非常識なIN選択を使用して愚かにクエリを作成しないでください...たとえば。いずれにせよ、適切に作成されたクエリの速度を低下させるだけでも、とんでもない量のリレーションが必要になります。フォームが大きい場合は、ページに分割します。

于 2012-09-29T00:23:50.800 に答える
3

多くの要件が記載されていないため、特定するのは困難です。

しかし、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 の作業では、ほとんどの場合、多数の列を持つ非常に幅の広い行を処理するよりも、複数の同様の行を処理する方が適切です。

于 2012-09-29T00:43:01.463 に答える