動的に作成された階層的な部門構造を保存および取得するためのデータベースを開発しようとしています。各部門は、子部門のセットまたは子属性のセットを持つことができますが、両方を持つことはできません。実行時に、ユーザーは部門と部門の子を作成します。部門が子として属性を持つ場合、ユーザーは各属性のタイプ (int/string/bool)、サイズを指定します。ユーザーは、部門の子として任意の数の属性を指定できます。したがって、部門構造は次のようになります。
RootDep
Dep1
Dep2
attribute1(string,12)
attribute2(int,10)
Dep3
Dep31
Dep32
Dep321
Dep4
Dep41
attribute4(bool,size not applicable)
attribute5(string,60)
attribute6(string,10)
attribute19(int, 5)
Dep5
この階層構造をデータベースに保存する必要があります。その後、ユーザーは、子として属性を持つ部門 Dep2 および Dep41 のデータを追加することもできます。したがって、ユーザーがそのような部門に属性を追加したときに、部門のテーブルを動的に生成する必要があると思います。
ユーザーは、構造を変更することもできます。例: 新しい部門/属性の追加、部門/属性の削除、部門名の変更、属性名の変更。ユーザーは、子として属性を持つ部門に入力されたレコードを変更することもできます。
この目的のためにデータベースを設計する最良の方法を教えてください。