2

ユーザーが必要な数のネストされた「ノード」を作成できるカスタム CMS ツール (はい、別の CMS) を構築しようとしています。

「ノード」の例: レストラン、人、靴、大陸など。各ノード内には、必要な数のサブノードを含めることができます。

Wordpress や Drupal などを見ていると、「分類法」や「用語」などの表が表示され続けます。

これは「普通の」ことのように思えますが、どのように行うべきか、または彼らがどのように行っているかについて頭を悩ませることはできません. これらのテーブルは全体的な構造とテーブルの関係に関連していると思いますが...オンラインで検索しても、実際に何が起こっているのか、この種の構造のためにデータベースを設計するのにどのように最善を尽くすのかを説明するのが恥ずかしがり屋です。


私がこれまでに持っていたアイデア(明らかに洗い流されていないか、ここで尋ねるつもりはありません):

1) 既知のデータ型と bindModel() の保存: のようなテーブルを作成data_locationsdata_texts、それぞれのデータのフィールドを持ちます。つまり、data_locations表にはcity、 、longitude、および がありaddressます。そして、data_texts テーブルには、、、、がtitleあります。subtitlecontentauthor

次に、彼らが新しい「ノード」を作成するたびに、彼らはそれが持つべきデータ型の種類を選択することができ、私はそれを使用bindModel()して関連付けを作成しました (推測しますか?)。

これはそれほど柔軟ではありませんが、管理が簡単で、クエリの実行が高速になる可能性があります...など? わからない。

2) 単一の「データ」テーブル を持つ各ノードのカスタム フィールド:dataテーブルがあり、fieldsテーブルがあります...各ノードには多くの種類がfieldsあります-それぞれにタイプと maxLength...などがあります。次に、管理者でそれらのフィールドをリストします。データの各チャンクtitleshoe_size...などはdata、ノードとフィールドに関連するテーブル内の行を持ちます。

これは、私が考える「分類法」に似ているように思えますが、繰り返しになりますが、私にはまったくわかりません。

4

1 に答える 1

1

どのデータベースを検討していますか? 私の意見では、グラフデータベースはこの種のことに対してより自然な傾向があります。

リレーショナル データベースでは、注意が必要です。任意の深さのクエリをネストするのは自然ではありませんが (実行可能ですが)、動的なスキーマも不自然です (Google の「EAV スキーマ」を参照して、その周りの議論を確認してください)、適切にクエリを実行するのは非常に困難です。

neo4jを見てください。ご要望を直接的かつ自然に表現できると思います。

于 2012-09-22T09:49:48.800 に答える