3

Trying to follow the chase algorithm as I understand it,

  1. If two rows agree in the left side of a functional dependency (FD for brevity), make their right sides agree too.
  2. Always replace a subscripted symbol by the corresponding unsubscripted one, if possible.
  3. If we ever get an unsubscripted row, we know any tuple in the project-join is in the original (the join is lossless).
  4. Otherwise, the final tableau is a counter example

So I tried to perform the chase algorithm on an example schema. Given R (A, B, C, D, E) decomposed into relations {A, B, C}, {B, C, D}, {A, C, E} and FDs, A → D, CD → E and E → D

Beginning the chase test

+-----+-----+---+-----+-----+
| a   | b   | c | d   | e   |
+-----+-----+---+-----+-----+
| a   | b   | c | d_1 | e_1 |
+-----+-----+---+-----+-----+
| a_2 | b   | c | d   | e_2 |
+-----+-----+---+-----+-----+
| a   | b_3 | c | d_3 | e   |
+-----+-----+---+-----+-----+

And ending

+-----+-----+---+-----+-----+
| a   | b   | c | d   | e   |
+-----+-----+---+-----+-----+
| a   | b   | c | d_1 | e   |
+-----+-----+---+-----+-----+
| a_2 | b   | c | d   | e_2 |
+-----+-----+---+-----+-----+
| a   | b_3 | c | d_1 | e   |
+-----+-----+---+-----+-----+

So the final tableau is a counter example and this isn't lossless.

MDCCL
  • 8,530
  • 3
  • 32
  • 63
SS'
  • 155
  • 3
  • 5

0 Answers0