1

私はいくつかのチュートリアル、mysql、db 構造に関するドキュメントを読みました。また、php 経由で数週間使用しています。問題が発生しました。投稿やコメント用のデータベース構造を形成/整理/作成する方法がわかりません。私はすでにこれに関するいくつかの投稿を読んだことがありますが(ここではstackoverflowで)、役立つものは何も見つかりませんでした. 投稿とコメント用に 2 つのテーブルが必要であることを理解しています。外部キー (または ID) を使用してそれらをページに印刷する必要がある場合は、それらを「マージ」します (SQL ではなくページ上でのみ)。人がページを表示しているとき、投稿とコメントは通常どおり表示されますが、「バックグラウンド」ではすべてが 2 つのテーブルに保存されます。

誰かが新しいコメントや返信を追加するたびに、新しい列を追加する必要がありますか?

私の質問が正しい場合、それは投稿に 100 件以上のコメントがある場合、毎回テーブルを ALTER する必要があることを意味しますか? つまり、投稿「A」に 3 件のコメントがあり、投稿「B」に 150 件のコメントがある場合、テーブル「コメント」には 100 件以上の列がありますか?

例えば:

投稿| 列 1 | 列 2 | ... | 列N

| bla1 | ブラ2 | bla3 | - 空 | - 空 | ... | - 空 - |

| bla1 | バル2 | bla3 | ブラ4 | bla5 | bla6 | ... | ブラ100 |

4

1 に答える 1

6

基本的なレベルでは、アプリケーション内の「モノ」のタイプごとにテーブルを作成します。この場合、投稿用のテーブルとコメント用のテーブルです。これと同じくらい簡単なもの:

Post
--------
Id
Content
User
DatePosted

Comment
--------
Id
PostId
Content
User
DatePosted

これにより、投稿とコメントの間にいわゆる 1 対多 (実際には 0 対多) の関係が作成されます。これにより、各投稿には 0 個以上の関連付けられた Pomments を含めることができますが、各コメントは 1 つの投稿にのみ関連付けることができます。

コード (これはまったく別の主題です) では、投稿とそれに関連付けられたコメントを表示するために、できることがいくつかあります。入力として、必要な投稿の があると仮定すると、Idその投稿とそのコメントを取得できます。

SELECT `Content`, `User`, `DatePosted` FROM `Post` WHERE `Id` = ?Id
SELECT `Id`, `Content`, `User`, `DatePosted` FROM `Comment` WHERE `PostId` = ?Id

その結果のデータをどうするかは、アプリケーションでどのように使用するかによって異なります。2 つのテーブル結果として返されます。前者には 1 つのレコード (Post が存在する場合) があり、後者には 0 個以上のレコードがあります。当然のことながら、それらを使用しようとする前に、それらが存在することを確認する必要があります (したがって、最初のクエリで結果が返されない場合は、投稿を表示し続けないでください。デフォルトの応答またはエラーを表示するだけです)。

于 2012-01-10T18:00:06.103 に答える