Articles

カラスの足の記法

Posted on

カラスの足の記法

今日、数多くのデータモデリング技術が使用されています。 その中でも最も一般的なものの一つがERD(EntityRelationship Diagram)です。 ERDにはいくつかの記法があります。 CS270では、Crow’s Foot Notationを使用します。

ERDの作成に使用されるコンポーネントです。

エンティティ – データの複数のインスタンスを収集して保存したい人、場所、または物のこと。 名詞である名前と、保存したいデータを記述する属性を持っています。 また、エンティティの1つのインスタンスを一意に識別する識別子を持っています。 識別子の役割を果たす属性にはアスタリスクが付いています。

relationship – 2つのエンティティ間の関連性を示します。 動詞である名前を持っています。 また、カーディナリティとモダリティを持っています。

CardinalityとModalityは、リレーションシップに関するビジネスルールの指標です。 カーディナリティとは、あるエンティティのインスタンスが、関連するエンティティのインスタンスと関連づけられる最大の回数を指します。

カーディナリティは1または多で、シンボルは関係線の外側の端、つまりエンティティーに最も近いところに置かれ、モダリティは1または0で、シンボルは内側のカーディナリティシンボルの隣に置かれます。 カージナリティが1の場合、直線が引かれる。 枢機卿性が1の場合、直線が描かれ、枢機卿性が多の場合、3本の指を持つ足が描かれる。 統数が1の場合、直線が引かれる。 倍率が0の場合は、円が描かれます。

0以上

1個以上

1つだけ(actely1)

0または1

カーディナリティとモダリティは、リレーションシップラインの両端に表示されます。 これにより、関係は1対1(1:1)、1対多(1:M)、または多対多(M:M)として読み取られます。

1:1

1:M

M:M

1.M

典型的な例です。 通常、ERDはこれよりもはるかに複雑で、かなりの数のエンティティと関係を含みます。 上記の関係をすべて結合し、いくつかの属性を追加すると、小さなデータの集まりは、Crow’sFoot Notationを使用して次のように描かれます。

患者予約システムのビジネスルールを以下のように考えます。

医師は多くの予約を取ることができますが、全く予約を取らないこともあります。 各予約はちょうど1人の医師とスケジュールされます。 1つのアポイントメントはちょうど1人の患者と予定されます。 1つのアポイントメントは、ちょうど1つの請求書を生成しなければならず、1つの請求書は1つのアポイントメントによってのみ生成される。 1つの支払いはちょうど1つの請求書に適用され、1つの請求書は複数の支払いによって時間をかけて返済することができます。 請求書は、まだ何も支払われていない未払いの状態になることがある。 1人の患者は多くの支払いを行うことができますが、1回の支払いは1人の患者によってのみ行われます。一部の患者は保険会社によって保険に加入しています。 保険に加入している場合は、1つの会社の保険にしか加入できません。 保険会社は、複数の患者にその保険を持たせることができる。 保険に加入している患者の場合、保険会社が支払いを行いますが、各1回の支払いはちょうど1つの保険会社によって行われます。

上記の情報を考慮すると、次のようなERDを描くことができます。

交差点。 エンティティ

インターセクションのエンティティは、多対多の関係を解決するために使用されます。 この解決は、M:M関係のどちらかのエンティティの属性リストに収まらない追加情報を格納するために行われます。 例えば、先ほどのインストラクターとコースの例では、コースとセクションの間にM:M関係があります。コースには多くのセクションがあり、セクションには多くのコースがあります。 特定のクラスに登録されている学生の数を知りたい場合、どちらのエンティティにも情報を保存することはできません。 特定のコースのすべてのセクションに登録されている学生の合計数をコースエンティティに格納することができます。例えば、CS270には300人の学生が登録されており、すべてのセクションが含まれています。 例えば、CS270には300人の学生が登録しており、すべてのセクションが含まれています。また、セクションエンティティには、特定のセクション番号を持つすべてのコースに登録されている学生の総数を格納することができます。 CS270のセクション002に登録されている学生の数など、より実用的な情報が必要な場合は、情報を保存するための別のエンティティが必要です。 そこで、インターセクション・エンティティを作成し、属性を追加した関連エンティティの間に配置します。 M:Mのリレーションシップが2つの1:Mのリレーションシップになります。 以下の解決策をご覧ください。

独立したエンティティ

独立したエンティティとは、他のエンティティがなくても存在することができるものです。 学生、座席、講師などが独立した実体の例です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です