階層データモデルの活用

SQL Server における階層型クエリと再帰クエリ

Jasmin Ludolf

Content Developer

階層データモデル

階層データモデルの特性:

  • 木構造で表現
  • ルート要素が1つ
  • 各子レコードに親レコードが1つ

木としての階層データの一例

長所:

  • 分かりやすい
  • 選択が高速

短所:

  • 構造が硬直的
  • 構造変更が複雑
SQL Server における階層型クエリと再帰クエリ

階層データモデルの例

顧客-請求-商品の関係:

1人の顧客に複数の請求があり、各請求に複数の商品がある

CREATE TABLE Customer (   
    ID INT NOT NULL);
CREATE TABLE Bill (   
    BillID INT NOT NULL,  
      CustomerID INT);
CREATE TABLE Article (   
    ArticleID INT NOT NULL,  
      BillID INT);

顧客-請求-商品の関係の階層表現

SQL Server における階層型クエリと再帰クエリ

ネットワーク型データモデル

ネットワーク型データモデルの特性:

  • 階層モデルに類似
  • 多対多関係
  • 多数の探索経路が存在

木としてのネットワークデータの一例

長所:

  • 厳密な階層なし
  • 解法経路が多い
  • 実例が多い

短所:

  • 大規模モデルで可読性が低下
SQL Server における階層型クエリと再帰クエリ

ネットワーク型データモデルの例

顧客-注文-商品の関係:

多くの顧客が複数の注文を持ち、各注文に複数の商品がある。

CREATE TABLE Customer (   
    ID INT NOT NULL);
CREATE TABLE Order (   
    OrderID INT NOT NULL,  
      CustomerID INT);
CREATE TABLE Article (   
    ArticleID INT NOT NULL,  
      OrderID INT);

顧客-注文-商品の関係のネットワーク表現

SQL Server における階層型クエリと再帰クエリ

演習に進みましょう!

SQL Server における階層型クエリと再帰クエリ

Preparing Video For Download...