質問

基本的にたいするユーザーを指定することができる階層的モデルがありますが、その後択することを許容する必要があるのユーザーのデータ格納、クライアントを定義します。こしょう?での利用ができるしたい場合は、"新規作成ユニットタイプ"を組織階層的方法の決定方法単位で、このような種類が許されています。簡単な例:私の仮想インターフェースのユーザーを作成し三つのユニットの種類、幹、枝、葉が入っています。ユーザのその後を定義する関係します。葉が存在していずれの階層に所ではトランクしています。ユーザーが作成されインスタンスのこれらのユニットタイプ(ユニットとして)主催によって、ルール定義されたモデルで...いい方法はありませんかこのデータベース?

役に立ちましたか?

解決

これは非常に広い質問ですが、これは正しい方向にあなたを指すことがあります。あなただけのデータベースに関係のルールを保存することができるようになるだろうことに注意してください。それらを強制することは、あなたのクライアントコードまでとなります。サイズのためにこれを試着..

unit:
    unit id,
    name,

unit relationship:
    unit id,
    foreign unit id

これで、次のようにあなたのユニットの関係テーブルを使用することができます..

unit idは、それが記述だ装置に関する。 foreign unit idはNULLでなければなりません。

のない関係レコードをunitは、階層構造のルートに存在することができます。 unitnullforeign unit idは、その親として他unitを持つことができます。それ以外の場合は、unitがその親として別のunitを持っている必要があり、それのタイプは、そのリレーションシップ・レコードに定義されたものの一つである必要があります。

のインスタンス自体を格納するためとして、それは簡単です..

instance:
    instance id,
    unit id,
    parent instance_id

私はあなたが(例えば、名前を)必要があると思い、他のフィールドが存在することになると確信しているが、私はあなたがドリフトを取得すると仮定します。

他のヒント

を導入するために必要な三つのコンセプトが発表

  • の"ユニットタイプ"とその可団体
  • の階層
  • 実際の単位

これらの概念に共存することができます以下のモデルでも一緒に働いています。

create table unittype
(
    id int;
    name varchar(20);
)

create table unitrelationship
(
    id int;
    parent_id int;
)

きモデルの階層としての自己参照テーブル:

create table hierarchy
(
    id int;
    parent_id int;
    unit_type_id int;
    unit_id int;
)

そしてユニットインスタンスが一つ以上のテーブルというご説明します。

create table unit
{
    id int;
    ....
}

ただ制約のみの親種類の外観を向上させることができる施行されたユーザーインターフェースは、インスタンスによる摘みの親の一覧から、既存のすべての単位を許可されているタイプです。

私は複数の階層(子の1つのセット、複数の階層ビュー)をサポートする必要がありますが、私は同様の問題に取り組んでいます。便利:私はジョー・セルコの「スマーティーズのためのSQLで木と階層」(1558609202 ISBN)が見つけました。私はまだ問題に取り組んでいるが、それは言及することが適切に思えたことは、このトピックを議論する際には、それほど頻繁にアップしています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top