DDBMS のコンテキストでは、垂直フラグメンテーションと水平フラグメンテーションの違いは何ですか?
縦の断片化は関係の延長が断片化され、横の断片化は内包の断片化ということでしょうか。
DDBMS のコンテキストでは、垂直フラグメンテーションと水平フラグメンテーションの違いは何ですか?
縦の断片化は関係の延長が断片化され、横の断片化は内包の断片化ということでしょうか。
あなたが関係を持っているとしましょう、学生。
Student の属性の半分が set1 にあり、残りの半分が set2 にあるように、リレーション Student を 2 つのセット (set1 および set2 と呼びます) に分割します。リレーションが列に沿って断片化されるため、これは「垂直断片化」と呼ばれます (ページを垂直に引き裂くのと同様)。元の関係は、すべてのセットの自然な結合を取ることによって取得されます。自然結合には、すべてのセットに共通の属性が少なくとも 1 つ必要です (通常は主キーです)。
しかし、行のサブセット (ここではすべての属性が行に存在することを参照) がサイト 1 に存在し (たとえば)、別のサブセットがサイト 2 に存在するように関係が分割されている場合、これは「水平断片化」と呼ばれます。元の関係は、すべてのセットの結合を取ることによって得られます。ページを横に引き裂くようなものです。
明らかなように、これは分散 DBMS のコンテキストにあります。
この関係があるとしましょう
customer_id | Name | Area | Payment Type | Sex
1 | Bob | London | Credit card | Male
2 | Mike | Manchester | Cash | Male
3 | Ruby | London | Cash | Female
フラグメント 1
customer_id | Name | Area | Payment Type | Sex
1 | Bob | London | Credit card | Male
2 | Mike | Manchester | Cash | Male
フラグメント 2
customer_id | Name | Area | Payment Type | Sex
3 | Ruby | London | Cash | Female
フラグメント 1
customer_id | Name | Area | Sex
1 | Bob | London | Male
2 | Mike | Manchester | Male
3 | Ruby | London Female
フラグメント 2
customer_id | Payment Type
1 | Credit card
2 | Cash
3 | Cash
垂直方向の断片化は、分散データベースにのみ必要です。関係Rの1つにいくつかの属性があるとします。これらの属性の一部はR1で構成され、その他はR2で構成されます。次に、ページを垂直に結合します。これは垂直フラグメンテーションと呼ばれます。
Horizontal Fragmentation は、関係を行と呼ばれるタプルに分割します
垂直断片化は、関係を列と呼ばれる属性に分割します。
アプリケーション ビューの要件に応じて、関係を水平または垂直に分割できます。
アプリケーション ビューに基づく断片化の度合いと正確性ルール
基本的に Horizontal Fragmentation はテーブルを行ごとに分割します。垂直フラグメンテーションの場合、テーブルの列ごとに分割されます。
Horizontal Fragmentation Table では、前と同じままです。行のみが分割されます。Vertical Fragmentation では、1 つのテーブルが 2 つ以上のテーブルに分割されます。
Horizontal Fragmentation は、テーブルを行ごとに分割します。キー列と非キー列の関係が同じままであるという点で、Vertical Fragmentation とは異なります。テーブルの内容はキー値によって異なります。
水平断片化 例: 会社は、各部門が独自のデータを維持することを望んでいます。この例では、各部門の Department テーブルに行が 1 つだけあり、他のテーブルには部門の従業員のデータのみが含まれます。