スターからスノーフレークへのモデル

さまざまなタイプのデータベースの照会に関する情報を確認できます。

正規化されたデータベースには、通常、マスター表とトランザクション表があります。 マスター・テーブル・データは、多くのトランザクション・テーブルによって共用されます。または、特定のトランザクション・テーブルが、同じマスター・テーブルの外部キーとして複数の列を持つ場合があります。 照会では、このタイプのトランザクション表が同じマスター表に結合されると、SQL 照会でマスター表が繰り返されます。 例:


SELECT … FROM YFS_ORGANIZATION O, YFS_PERSON_INFO PI1, YFS_PERSON_INFO PI2,
     YFS_PERSON_INFO PI3 
WHERE O.CORPORATE_ADDRESS_KEY = PI1.PERSON_INFO_KEY (+) AND
     O.CONTACT_ADDRESS_KEY = PI2.PERSON_INFO_KEY (+) AND O.BILLING_ADDRESS_KEY =
     PI3.PERSON_INFO_KEY (+)

この例では、参照列ごとに Person Info マスター・テーブルが繰り返されます。 Organization テーブルが、Person Info テーブルへの参照が多い別のテーブルに結合されている場合は、照会により多くの Person Info テーブルが表示されます。

データ・モデルでは、エンティティー間の関係を表すために、エンティティー間に結合が作成されます。 当然、マスター表に 1 つのエンティティーのみが含まれており、特定の照会でそのエンティティーへの複数の参照が必要な場合、生成される SQL は正しくありません。 例:


SELECT … FROM YFS_ORDER_LINE OL, YFS_SHIP_NODE SN 
WHERE OL.SHIPNODE_KEY = SN.SHIPNODE_KEY AND OL.RECEIVING_NODE =
      SN.SHIPNODE_KEY . 

この照会は正しくありません。 したがって、この場合は、YFS_SHIP_NODE に対応する 2 つのエンティティーがカタログ内に必要です。 これは、エンティティー組織分配ノードを組織受入ノードおよび組織出荷ノードに複製することによって行われます。 これらは、上記のオーダー明細の列に個別に結合されるようになりました。

より多くのエンティティーが同じマスター表のセットを必要とする場合、マスター表をカタログにさらに複製することができます。 例えば、オーダー明細とオーダー・リリースの両方で、組織受入ノードと組織出荷ノードが必要になります。 そのため、カタログ内の各ノード・テーブルには 2 つのインスタンスがあります。

他の表も同様に複製する必要がある場合があります。 このレプリケーションがより多くのマスター・テーブルに対して拡張されるにつれて、データベースのスター・モデルは Snowflake のように見え始めます。 以下のイメージは、この概念を示しています。

星から Snowflake モデル