1

craigslist に似た、クラシファイド広告の Web サイトを構築しています。

サイトはいくつかのセクションに分かれています。すなわち、フォーラム、販売、提供されるサービスなど。

各セクションの下には、いくつかの [カテゴリ]、つまり、フォーラム[ペット]、フォーラム[書籍]、販売用[物々交換]、サービス[物々交換] などがあります (一部のカテゴリは、セクションによってのみ一意に識別されることに注意してください。 「販売用」と「サービス」の 2 つのセクションからのバーターとバーターの場合)。

ユーザーは、各セクション内の投稿リンクからカテゴリに投稿します。ユーザーは、該当する場合、写真をアップロードして、製品の特定のアメニティを選択できます。フォーラムの投稿には amenity 属性は必要ありませんが、Vehicle Ad には必要です。設備には次のものが含まれます: 車両広告用のオート トランスミッション、または住宅賃貸用の家具。

データベース スキーマの最適な論理設定を理解しようとしています。

現在、基本的な入力/クエリ用にこのタイプの論理構造があります。

SECTIONS TABLE- section_id, section
CATEGORIES TABLE- cat-id, category, section_id(foreign key)
AMENITIES TABLE- amen_id, amenity
PHOTOS TABLE- photos-id, file

POST TABLE- post_id, category, timestamp, description

SECTION_POST TABLE- section_id, post_id
POST_AMENITY TABLE- post_id, amenity_id
POST_PHOTO TABLE- post_id, photo_id

[POST] のカテゴリはセクションに関連している必要があるため、[SECTION_POST] をメインの多対多にしました。カテゴリ テーブルで CATEGORY を SECTION に関連付けました。これは、カテゴリ属性が追加された M 対 M のように見えます。これでよろしいですか?

また、このスキーマについてどのように考えるべきかについて、他に何か提案はありますか? 私が抱えている問題は、ほとんどが組織力の欠如ではなく、無知に関係していると思います. たぶん、あなたの誰かが私を教育するか、私の一般的な問題に取り組む適切なリンクを紹介してくれるでしょう.

4

1 に答える 1

0

あなたのデザインはかなり標準的です。いくつかのコメントと、考慮すべき点を次に示します。

  • 暗黙の依存関係 (SECTION_POST など) があるキーの場合、多くの ORM ライブラリには、
    依存関係とその結果の連結キーに関する問題があります。キー割り当ての問題もあります。これらの両方の理由から、
    代わりに多くの人がそのテーブルに独自の独立したキー (
    便利に AUTO_INCREMENT にすることができます) を与え、元の PK を外部キーに移動します。

  • SECTION/CATEGORY に関して、SECTION が概念/実体のどれだけ重要かを言えるのはあなただけです。自己参照する「PARENT_CATEGORY_ID」列を持つ CATEGORY のみを使用することで、同じ構造をさらに柔軟に使用できます。これにより、カテゴリのツリー構造を定義できると同時に、PARENT_CATEGORY_ID で IS NULL を使用して最上位のカテゴリを簡単に取得できます。

  • 写真を POST に関連付ける方法についてはよくわかりませんが、デザインの観点から MM 関係をサポートして、1 つの投稿に複数の写真を含めることができるとよいでしょう。

それ以外の場合は、リレーショナル デザインの基本をよく理解しているようです。私は多くのデータベース設計を行っており、商用の erd 設計ツールを使用することを好みますが、設計を視覚化し、すべての SQL DDLは正しいです。また、プロジェクトの開発段階に関するドキュメントがあると便利です。

于 2012-12-23T21:29:05.983 に答える