Horizontal vs Vertical Fragmentation in Distributed Database Management Systems (DDBMS)

Suppose you have a relation, Student.

You divide relation Student in two sets (call them set1 and set2) such that half of the attributes of Student are in set1 and half of them are in set2. This is called 'vertical fragmentation', as a relation is fragmented along columns (similar to tearing a page vertically). Original relation is obtained by take the natural join of all the sets. For the natural join we require at least one attribute which is common to all the sets(generally it is the primary key).

But if our relation divided so that a subset of rows (see here all attributes are present in rows) is present with site1 (for example), another subset is present with site2, and so on, this is called 'horizontal fragmentation', and original relation is obtained by taking the union of all the sets. It's like tearing a page horizontally.

As is clear, this is in the context of Distributed DBMS.


Say we have this relation

customer_id | Name | Area       | Payment Type  | Sex
      1     | Bob  | London     | Credit card   | Male
      2     | Mike | Manchester | Cash          | Male
      3     | Ruby | London     | Cash          | Female

Horizontal Fragmentation are subsets of tuples (rows)

Fragment 1

customer_id | Name | Area       | Payment Type  | Sex
      1     | Bob  | London     | Credit card   | Male
      2     | Mike | Manchester | Cash          | Male

Fragment 2

customer_id | Name | Area       | Payment Type  | Sex
      3     | Ruby | London     | Cash          | Female

Vertical fragmentation are subset of attributes

Fragment 1

customer_id | Name | Area       | Sex
      1     | Bob  | London     | Male
      2     | Mike | Manchester | Male
      3     | Ruby | London     Female

Fragment 2

customer_id | Payment Type
      1     | Credit card 
      2     | Cash        
      3     | Cash        

Vertical fragmentation is required only for distributed databases. Say one of relation R has several attributes. Some of these attribute is consist in R1 and other is R2. Then we are joining page vertically. This is called vertical fragmentation.