1

私はデータベースの専門家ではありません。初心者なので質問させてください。私はデータベースを設計しようとしていますが、データベースの設計において、私が行っていることが正しいか間違っているかわかりません。Web サイトには記事と投稿が含まれている必要があり、各投稿には複数のコメントが含まれる場合があります。すべての記事、投稿、ユーザー プロファイルをノードとして扱うことにしました。そのため、「ノード」というテーブルを作成し、各「ノード」には「コンテンツ」が TEXT として含まれています。現在、コメントを「ノード」として扱うか、「comment_nodes」として別のテーブルを作成するかを考えています。効率的な方法を探しています。

つまり、一言で言えば、コメントを通常のノードとして扱ってもよいのでしょうか?

ありがとう

4

2 に答える 2

0

これはテーブルの継承と呼ばれ、悪い考えではありません。たとえば Drupal では、ほとんどのものは「ノード」です。

主な利点は、(同じ親タイプの) わずかに異なるものを指す外部キーを持つことができることです。

あなたの場合、クラステーブルの継承を使用します。次のようなことができます。

NODE
id

NODE_POST
id pk fk node(id)
title
body

NODE_COMMENT 
id pk fk node(id) 
body 
post_id fk node_post(id) 
parent_comment_id fk node_comment(id)

とにかく、Google で Martin Fowler on Table Inheritance を調べて、その意味を理解していることを確認してください。

PHP を使用している場合は、Doctrine が継承を支援します。

また、Postgres は MySql よりも優れた階層クエリを実行するため、コメントをネストする場合は、MySQL よりも Postgres をお勧めします。

于 2013-05-21T20:57:47.337 に答える
0

MySQL を使用している場合、設計は正しくありません。

基本的に、データはテーブル、列、行の形式で考える必要があります。各テーブルは、抽象的なものではなく、ビジネス エンティティを表す必要があります。列はビジネス エンティティのプロパティを表し、行はアイテム (ビジネス エンティティのインスタンス) です。主キーと外部キーを定義する必要があります。

列に適切な型を指定し、高速検索を可能にするインデックスを定義する必要があります。

例を挙げましょう

=================================
| | ポストテーブル |
=================================
| | ID | タイトル | ボディ |



=================================
| | コメント表 |
=================================
|ID | 投稿ID | テキスト |

MySQL の基本的なチュートリアルから始めます (ただし、お勧めできません)。この答えが基本的すぎる場合はお詫び申し上げます。

于 2013-05-21T17:25:54.223 に答える