もちろんそれは拡大縮小します。これは問題なく機能します。これは一般的に使用される構造です。
level_no
を含める 。これはコードに役立ちますが、さらに重要なのは、重複を除外する必要があることです。
非常にタイトな構造が必要な場合は、Unixのinodeの概念のようなものが必要です。
product
など、階層を生成するために必要なコードに頭を悩ませるのは難しいかもしれません。 、しかしそれは別の問題です。
そして変更してください
- (
product_category
))id
product_category_id
へ - (
product
id
product_id
へ -
parent_id
parent_product_category_id
へ
コメントへの回答
-
level_no
。このデータモデルを見てください。これはディレクトリツリー構造(FlieManager Explorerウィンドウなど)用です:それを理解できるかどうかを確認してください。それがUnixのiノードの概念です。 FileNamesはノード内で一意である必要があるため、2番目のインデックスです。これは実際には完了していますが、最近の一部の開発者は、階層、レベルをナビゲートするために必要なコードを書くのに苦労するでしょう。これらの開発者には
level_no
が必要です 階層のどのレベルを扱っているかを特定します。 -
推奨される変更。はい、それはグッドネーミングコンベンションと呼ばれています。私はそれについて厳格であり、それを公開しているので、それはネーミングスタンダードです。これには理由があります。これは、3レベルまたは4レベルの結合を使用してSQLを作成するときに明らかになります。特にあなたが同じ1人の親に2つの異なる方法で行くとき。 SOを検索すると、これに関する多くの質問が見つかります。常に同じ答え。次のモデルでもハイライトされます。