Solutions to CS2855-24 Exam
Solutions to CS2855-24 Exam
1. (a) ER Diagram for Innovex IT Company
Entities & Relationships:
- Employee:
Attributes: employee_id (PK), full_name (unique), hire_date.
Multi-valued attribute:email
→ Separate table for emails. - Position:
Attributes: position_id (PK), level, salary. - Bonus:
Weak entity (depends onPosition
). Attributes: bonus_id (partial key), date_granted, amount. - Works_In:
Relationship betweenEmployee
andPosition
. Attributes: start_date (date employee takes up position).
Constraints:
- Cardinalities:
- Employee to Works_In: One-to-Many (1 employee → N positions).
- Position to Bonus: One-to-Many (1 position → N bonuses).
- Weak Entity: Bonus has a partial key
bonus_id
and depends onPosition
via total participation.
ER Diagram Sketch:
1 |
|
1. (b) Relational Model Conversion
Given: Train System ER Diagram (Partial)
Entities:
Company
,Train
,Line
,Destination
,Departure
.Relationships:
belongs
,replaced_by
,goes_to
.
Resulting Tables:
Company (company_id, name, year_founded)
Train (train_id, registration_number, company_id (FK → Company))
Line (line_id, departure_station, arrival_station)
Destination (destination_id, place, arrival_time)
Departure (departure_id, line_id (FK → Line), train_id (FK → Train), schedule_time)
Replacement (old_train_id (FK → Train), new_train_id (FK → Train))
Foreign Keys:
Train.company_id
referencesCompany.company_id
.Departure.line_id
referencesLine.line_id
.Departure.train_id
referencesTrain.train_id
.
2. (a) Relational Algebra for Driver Mileage
Query:π_{DriverID}(σ_{vehiclemileage ≥ 20000}(Vehicle) ⨝ Transport)
Steps:
- Join Vehicle and Transport on Registration.
- Select vehicles with mileage ≥ 20000.
- Project DriverID.
2. (b) SQL Statements
i. Store Driver Phones:ALTER TABLE Driver ADD COLUMN phone_numbers VARCHAR(15)[];
ii. Count Distinct Vehicles per Driver:
1 |
|
iii. Conditional Salary Increase:
1 |
|
iv. Drivers with >3 Trips per Vehicle:
1 |
|
v. Drivers with Salary <15K and Mileage ≤50K (Post-2019):
1 |
|
vi. Vehicles Above Avg Mileage with ≥3 Drivers:
1 |
|
3. (a) Schedule Serializability
Given Schedule:
1 |
|
Conflict Graph:
- T1 → T2 (
W(A)
in T1 conflicts withR(A)
in T2). - T2 → T1 (
W(B)
in T2 conflicts withR(B)
in T1).
Result: Cycle exists → **Not serializable. **
3. (b) Transaction Outcomes
Final Values (After Time 18):
T1: Reads A=10 → A=A-10 (A=0) → Writes A=20 after T2 reads A=0.
T2: Sum starts at 0 → Adds A=0, B=20+20=40, C=40−10=30 → Sum = 0+40+30=70.
A=20, B=40, C=30.
3. (c) Durability (ACID)**
Definition: Once a transaction is committed, its changes persist even after system failures (e.g., power loss). Achieved via logging (e.g., write-ahead logs).
3. (d) BCNF Definition**
A relation is in BCNF if for every non-trivial FD X → Y
, X
is a superkey (i.e., X
uniquely determines all attributes in the relation).
4. (a) Candidate Key for R(A,B,C,D,E)**
FDs:
- AB → C
- BD → A
- DC → E
Closure Calculation:
Start with BD → BD → A (from BD → A), so BD+ = ABD.
Add C via AB → C (ABD+ = ABCD).
Add E via DC → E (ABCD → ABCDE).
Result: BD is a candidate key.
4. (b) Lossless Join Test**
Decomposition: R1(ABC), R2(ABDE).
Common Attributes: AB.
Check: AB → C (holds in R1) and AB → DE (AB → A, BD → A is redundant). Since AB is a key in R1 and R2, the decomposition is lossless.