edited by
4,348 views

5 Answers

9 9 votes

Selection (\(\sigma\)): Selection is used to retrieve a subset of rows (tuples) from a relation based on a condition.

Projection (\(\pi\)): Projection is used to retrieve specific columns (attributes) from a relation.

Set Union (\(\cup\)): Set Union is used to combine tuples from two relations that have the same schema. However, dependency loss occurs across different relations.

Join (\(\bowtie\)): Join combines decomposed relations together based on common attributes. If a dependency is lost due to decomposition, Join helps reconstruct the original relation.

5 5 votes

When a relational schema is decomposed into smaller relations, one of the central concerns in database design is whether the decomposition preserves functional dependencies. A decomposition is said to be dependency-preserving if every functional dependency (FD) in the original relation can be enforced by examining the individual decomposed relations without needing to reconstruct the original relation. If this property is not satisfied, then to verify or enforce certain dependencies, the database system must recombine the decomposed relations—typically through join operations. Consequently, joins must be executed more frequently to maintain data integrity.


Example

Consider a relation schema:

$$
R(A, B, C)
$$

with the following set of functional dependencies:

$$
\mathcal{F} = { A \rightarrow B,\ B \rightarrow C }
$$

From these, we can infer by transitivity that $ A \rightarrow C $. The attribute $ A $ is a candidate key, since $ A^+ = {A, B, C} $.

Now, decompose $ R $ into two relations:

  • $ R_1(A, B) $

  • $ R_2(B, C) $

This decomposition is lossless (because $ R_1 \cap R_2 = {B} $ and $ B \rightarrow C \in \mathcal{F} $), and each component is in Boyce-Codd Normal Form (BCNF). However, we now examine whether it is dependency-preserving.

  • $ A \rightarrow B $ is preserved in $ R_1 $.

  • $ B \rightarrow C $ is preserved in $ R_2 $.

  • But the derived dependency $ A \rightarrow C $ does not appear in either $ R_1 $ or $ R_2 $, and cannot be checked without combining both relations.

Thus, $ A \rightarrow C $ is not preserved, and any enforcement of this dependency requires a join.


Illustration

Assume the following valid instance of $ R $:

$$
R = 
\begin{array}{|c|c|c|}
\hline
A & B & C \\
\hline
101 & \text{HR} & \text{London} \\
102 & \text{IT} & \text{Paris} \\
103 & \text{HR} & \text{London} \\
\hline
\end{array}
$$
 

This satisfies:

  • $ A \rightarrow C $: each employee ID maps to exactly one city.

After decomposition, we store:

$$
R_1 = 
\begin{array}{|c|c|}
\hline
A & B \\
\hline
101 & \text{HR} \\
102 & \text{IT} \\
103 & \text{HR} \\
\hline
\end{array}
\qquad
R_2 = 
\begin{array}{|c|c|}
\hline
B & C \\
\hline
\text{HR} & \text{London} \\
\text{IT} & \text{Paris} \\
\hline
\end{array}
$$
 

Now, suppose a new employee is added:

  • Insert $ (104, \text{IT}) $ into $ R_1 $,

  • Insert $ (\text{IT}, \text{Berlin}) $ into $ R_2 $.

Original FD set was simply:

$$
\mathcal{F} = { A \rightarrow C }
$$

and there is no FD involving $ B $. Suppose we decompose $ R(A,B,C) $ into $ R_1(A,B) $ and $ R_2(B,C) $ for normalization (e.g., to eliminate redundancy). Now, $ A \rightarrow C $ is completely lost from both components neither relation contains both $ A $ and $ C $.

To enforce $ A \rightarrow C $ after any update, the DBMS must:

  1. Compute the natural join:
       $$
       R_1 \bowtie R_2 =
       \begin{array}{|c|c|c|}
       \hline
       A & B & C \\
       \hline
       101 & \text{HR} & \text{London} \\
       102 & \text{IT} & \text{Paris} \\
       103 & \text{HR} & \text{London} \\
       104 & \text{IT} & \text{Berlin} \\
       \hline
       \end{array}
       $$
     

  2. Project onto $ (A, C) $ and check whether any $ A $ value appears with more than one $ C $ value.

If such a conflict exists (e.g., employee 102 maps to both Paris and Berlin), the dependency $ A \rightarrow C $ is violated.

Since this check cannot be performed by inspecting $ R_1 $ or $ R_2 $ alone, the join operation becomes mandatory for dependency enforcement.


Looking at the Options

  • Selection ($\sigma$) filters rows but cannot combine attributes from different relations.

  • Projection ($\pi$) reduces columns and cannot recover missing attributes.

  • Set union ($\cup$) combines relations with identical schemas, which is irrelevant here.

Only the join operator can reconstruct the co-occurrence of attributes that were separated during decomposition.

In a decomposition that is not dependency-preserving, certain functional dependencies span multiple relations and cannot be validated locally. To maintain data consistency, the database system must repeatedly join the decomposed relations to reconstruct the necessary attribute combinations. Therefore, the join operator is executed more frequently in such scenarios to enforce the original dependencies.

Hence, the correct answer is: $\boxed{\text{C. Join}} $.

3 3 votes

The relational operator used for reconstructing a relation from its decomposed parts is the Join operation.

Here's why:

  • Dependency Preservation: A decomposition is dependency-preserving if all functional dependencies from the original relation can be enforced by checking constraints only within the individual decomposed relations.
  • Non-Dependency Preserving: If a decomposition is not dependency-preserving, it means there's at least one functional dependency that spans across multiple decomposed relations. To check if this dependency is being violated (e.g., during an update or insertion), you would have to bring the relevant decomposed relations back together.
  • Role of Join: The JOIN operator combines tuples from two or more relations based on a common attribute. If a dependency is not preserved in the individual decomposed tables, you'd need to JOIN those tables to re-form a relation that contains all the attributes involved in the dependency, and then check the dependency.
2 2 votes

Correct option : (C) Join 

Dependency preservation ensures all functional dependencies are maintained in decomposed tables. If not preserved, Join is needed more often to enforce those dependencies.

Hence, JOIN is the correct answer.

0 0 votes

If you decompose the not dependency preserving then before insertion, modification we may have to Join two OR more table to enforce some Functional Dependency.

Answer:
Position:
Show:

Related questions

8 8 votes
6 6 answers
3.8k
3.8k views
Arjun asked Feb 27, 2025
3,837 views
Suppose that insertion sort is applied to the array $[1,3,5,7,9,11, x, 15,13]$ and it takes exactly two swaps to sort the array. Select all possible values of $x$.$10$$12...
8 8 votes
4 4 answers
2.5k
2.5k views
Arjun asked Feb 27, 2025
2,545 views
Consider the following three relations: $\text{Car (model, year, $\underline{\text{serial}}$, color)}$ $\text{Make (maker, $\underline{\text{model}}$)}$ ...
6 6 votes
5 5 answers
3.4k
3.4k views
Arjun asked Feb 27, 2025
3,412 views
Consider the following tables, $\text{Loan}$ and $\text{Borrower},$ of a bank.\[\begin{array}{|c|}\hline\textbf{Loan} \\\hline\begin{array}{c|c|c}\textbf{loan\_number} & ...
5 5 votes
4 4 answers
4.0k
4.0k views
admin asked Feb 28, 2025
3,999 views
​​​​Courage : Bravery :: Yearning : _________.Select the most appropriate option to complete the analogy.LongingYellingYawningGlaring