Reset all your exercise progress and start from scratch. This action cannot be undone.
Customize how exercises are displayed.
BDR Exam Trainer - Interactive exercises for database theory and SQL practice.
Total exercises: 33
Notation: X → Y means "X determines Y" or "if you know X, you know Y"
Example: StudentID → StudentName (each student ID uniquely determines a name)
Closure (X⁺): All attributes that can be determined from X using the given FDs
✓ All attributes contain only atomic (indivisible) values
✓ No repeating groups or arrays
Example violation: Student(ID, Name, Phones) where Phones = ["123", "456"]
✓ Must be in 1NF
✓ No partial dependencies (non-key attributes fully depend on the entire primary key)
Example violation: OrderItem(OrderID, ProductID, ProductName, Quantity)
→ ProductName depends only on ProductID, not on the full key (OrderID, ProductID)
✓ Must be in 2NF
✓ No transitive dependencies (non-key attributes don't depend on other non-key attributes)
Example violation: Employee(ID, DeptID, DeptName)
→ DeptName depends on DeptID (transitive: ID → DeptID → DeptName)
✓ Must be in 3NF
✓ For every FD X → Y, X must be a superkey (uniquely identifies all attributes)
Stricter than 3NF: Even key attributes can't have dependencies from non-superkeys
Example violation: CourseSchedule(Student, Course, Instructor)
→ If Instructor → Course (each instructor teaches one course), but Instructor is not a superkey
Goal: Decompose into 3NF while preserving dependencies
Steps:
Goal: Decompose into BCNF (may lose dependency preservation)
Steps:
Candidate Key: Minimal set of attributes that uniquely identifies a tuple
Superkey: Any set of attributes that uniquely identifies a tuple (not necessarily minimal)
Prime Attribute: Part of any candidate key
Minimal Cover (Fmin): Smallest equivalent set of FDs with: