sql >> データベース >  >> RDS >> Mysql

データベースモデリング:Amazonのような製品を分類する方法は?

    もちろんそれは拡大縮小します。これは問題なく機能します。これは一般的に使用される構造です。

    level_noを含める 。これはコードに役立ちますが、さらに重要なのは、重複を除外する必要があることです。

    非常にタイトな構造が必要な場合は、Unixのinodeの概念のようなものが必要です。

    productなど、階層を生成するために必要なコードに頭を悩ませるのは難しいかもしれません。 、しかしそれは別の問題です。

    そして変更してください

    • product_category ))id product_category_id
    • product id product_id
    • parent_id parent_product_category_id

    コメントへの回答

    1. level_no 。このデータモデルを見てください。これはディレクトリツリー構造(FlieManager Explorerウィンドウなど)用です:

      ディレクトリデータモデル

      それを理解できるかどうかを確認してください。それがUnixのiノードの概念です。 FileNamesはノード内で一意である必要があるため、2番目のインデックスです。これは実際には完了していますが、最近の一部の開発者は、階層、レベルをナビゲートするために必要なコードを書くのに苦労するでしょう。これらの開発者にはlevel_noが必要です 階層のどのレベルを扱っているかを特定します。

    2. 推奨される変更。はい、それはグッドネーミングコンベンションと呼ばれています。私はそれについて厳格であり、それを公開しているので、それはネーミングスタンダードです。これには理由があります。これは、3レベルまたは4レベルの結合を使用してSQLを作成するときに明らかになります。特にあなたが同じ1人の親に2つの異なる方法で行くとき。 SOを検索すると、これに関する多くの質問が見つかります。常に同じ答え。次のモデルでもハイライトされます。



    1. MySQLで適切にGROUPBYする方法は?

    2. mysql_query()の結果を反復処理する方法

    3. mysqlのSERIALとAUTO_INCREMENTの違いは何ですか

    4. Linux上のSQLServer2016