Download presentation
Presentation is loading. Please wait.
Published byConstance Jones Modified over 6 years ago
1
Relational Database Schema Designer: CASE tool
Teaching Aid for Bernstein’s Algorithm 02 April 2015 CS4221 project presentation - by Group 03 Liu Wei Ran Lu Nan Wu Long Zhao Yue
2
Agenda Objective Bernstein’s Algorithm and its shortcomings
Implementation New Features Future work Demo
3
Objective Implementation of enhanced Bernstein’s Algorithm
Teaching aid with interactive user interface
4
Bernstein’s Algorithm
Bernstein’s Algorithm was invented by Bernstein Philip in 1976 The algorithm consists of 6 steps Produce 3NF with the fewest number of relations
5
Bernstein’s Algorithm
Given a relational schema R and a set of functional dependencies F Step 1: Eliminate extraneous attributes from the left side of each FD in F to produce G. Step 2: Find a non-redundant covering of G. Step 3: Partition G into groups such that all FDs have identical left side in each group. Step 4: Merge equivalent keys if left sides have the bijection relation to create J. Step 5: Eliminate transitive dependencies. Step 6: Construct relation consisting of all the attributes appearing in each group.
6
Shortcomings It does not guarantee losslessness.
It does not find all the keys. It does not remove all the superfluous attributes. Relations produced depends on the non-redundant covering found. BCNF schema may contain superfluous attributes.
7
Implementation Step 1 [find_minimal_cover] : Step one and two, eliminate extraneous attributes and find covering. INPUT : <__G>, the set of functional dependencies RETURN : <__H>, the minimum cover of the input functional dependencies
8
Implementation Step 2 [partition] : Step three, partition the minimum cover <__H> into groups that has identical left sides INPUT : <__H>, the minimum cover RETURN : <__partitioned_fds_list>, all the groups of partitioned functional dependency list
9
Implementation Step 3 [merge_keys] : Step four, merge equivalent keys.
INPUT : <__partitioned_fds_list> and <__H> RETURN : <__merged_fds_list>, all merged groups of functional dependency list
10
Implementation Step 4 [eliminate_transitive_fds] : Step five, find and remove transitive dependencies for the input. INPUT : <__merged_fds_list> RETURN : <__final_fds_list>, the finalized group of functional dependency list
11
Implementation Step 5 [contruct_relations] : Step six, construct relational schema for each groups. INPUT : <__final_fds_list> RETURN : <__relations>, all the relational schemas
12
New Features Losslessness Checker Superfluous Attribute Checker
Candidate Key Finder
13
Losslessness Checker AB -> CD, A -> CD Schema A C B D
14
Candidate Key Finder AD -> B, B -> C, C -> D, AB -> E, AC -> F Left Middle Right [‘A’] [‘B’, ‘C’, ‘D’] [‘E’, ‘F’] ‘A’, ‘AB’, ‘AC’, ‘AD’, ‘ABC’, ‘ABD’, ‘ACD’
15
Superfluous Attribute Checker
[superfluous_attribute_detection_algorithm] : Check whether a given attribute is a superfluous in a relational schema. INPUT : <relations> : The input relational schemas <G> : The original functional dependency list <test_relation> : A relation that is in the input relational schemas <relations> <test_attribute> : The attribute that need to be tested for <test_relation> RETURN : True if the <test_attribute> is superfluous in <test_relation>, False if it is not
16
Future work UI improvement
Solve shortcoming 4 by using superfluous attribute checker to check every attributes in all possible covers found, to get the best relations results.
17
Demo
18
Q&A Presentation by Zhao Yue Wu Long Liu Wei Ran Lu Nan
19
Thank You! Presentation by Zhao Yue Wu Long Liu Wei Ran Lu Nan
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.