ユーザーが必要な数のネストされた「ノード」を作成できるカスタム CMS ツール (はい、別の CMS) を構築しようとしています。
「ノード」の例: レストラン、人、靴、大陸など。各ノード内には、必要な数のサブノードを含めることができます。
Wordpress や Drupal などを見ていると、「分類法」や「用語」などの表が表示され続けます。
これは「普通の」ことのように思えますが、どのように行うべきか、または彼らがどのように行っているかについて頭を悩ませることはできません. これらのテーブルは全体的な構造とテーブルの関係に関連していると思いますが...オンラインで検索しても、実際に何が起こっているのか、この種の構造のためにデータベースを設計するのにどのように最善を尽くすのかを説明するのが恥ずかしがり屋です。
私がこれまでに持っていたアイデア(明らかに洗い流されていないか、ここで尋ねるつもりはありません):
1) 既知のデータ型と bindModel() の保存:
のようなテーブルを作成data_locations
しdata_texts
、それぞれのデータのフィールドを持ちます。つまり、data_locations
表にはcity
、 、longitude
、および がありaddress
ます。そして、data_texts テーブルには、、、、がtitle
あります。subtitle
content
author
次に、彼らが新しい「ノード」を作成するたびに、彼らはそれが持つべきデータ型の種類を選択することができ、私はそれを使用bindModel()
して関連付けを作成しました (推測しますか?)。
これはそれほど柔軟ではありませんが、管理が簡単で、クエリの実行が高速になる可能性があります...など? わからない。
2) 単一の「データ」テーブル を持つ各ノードのカスタム フィールド:data
テーブルがあり、fields
テーブルがあります...各ノードには多くの種類がfields
あります-それぞれにタイプと maxLength...などがあります。次に、管理者でそれらのフィールドをリストします。データの各チャンクtitle
、shoe_size
...などはdata
、ノードとフィールドに関連するテーブル内の行を持ちます。
これは、私が考える「分類法」に似ているように思えますが、繰り返しになりますが、私にはまったくわかりません。