Download presentation
Presentation is loading. Please wait.
1
Relational Data Model Lecture 3
2
Relational Model Domain – a set of atomic values. Example: set of integers Data Type – Description of a form that domain values can be represented. Each domain has a null value Cartesian Product – D1 x D2 a set of pairs where p1 belongs to D1 and p2 belongs to D2. D1 x D2 x D3 x …x Dk –cartesian product of k domains. Relation – a subset of the cartesian product of one or more domains. Elements of relation are called tuples. The number of domains in the relation is called relation arity Relational Schema – a set of domain names along with theirs types. Database – collection of relations Database Schema – set of all relation schemas in the database
3
A Relation is a Table Relation Relational Scheme: Student(SSN, Name, Year) SSN Name Year 111-222-333 Jim senior 222-111-444 Jane junior 333-222-555 Joe freshman 213-343-565 Kyle junior
4
Relational Operators Projection (R) Natural join of R1 and R2 is a table that contains all attributes from R1 and from R1\R2 and tuples from r1 have the same values on attributes that are in both R1 and R2
5
Reduction of an E-R Schema to Tables Primary keys allow entity sets and relationship sets to be expressed uniformly as tables which represent the contents of the database. A database which conforms to an E-R diagram can be represented by a collection of tables. For each entity set and relationship set there is a unique table which is assigned the name of the corresponding entity set or relationship set. Each table has a number of columns (generally corresponding to attributes), which have unique names.
6
Representing Entity Sets as Tables A strong entity set reduces to a table with the same attributes.
7
Composite and Multivalued Attributes Composite attributes are flattened out by creating a separate attribute for each component attribute –E.g. given entity set customer with composite attribute name with component attributes first-name and last-name the table corresponding to the entity set has two attributes name.first-name and name.last-name A multivalued attribute M of an entity E is represented by a separate table EM –Table EM has attributes corresponding to the primary key of E and an attribute corresponding to multivalued attribute M –E.g. Multivalued attribute dependent-names of employee is represented by a table employee-dependent-names( employee-id, dname) –Each value of the multivalued attribute maps to a separate row of the table EM
8
Representing Relationship Sets as Tables A many-to-many relationship set is represented as a table with columns for the primary keys of the two participating entity sets, and any descriptive attributes of the relationship set. E.g.: table for relationship set borrower
9
Additional Rules for Translating Relationship into Relation If one entity set participates several times in the relationship with different roles, its key attributes must be listed as many times and with different names for each role. Studies(SSN, Name); Favorite(SSN, Name); Friends(SSN1, SSN2) subject friendsfavorite Student studies SSN Name
10
Redundancy of Tables Many-to-one relationship sets that are total on the many- side can be represented by adding an extra attribute to the many side, containing the primary key of the one side Example: We eliminate relation Favorite and we extend relation for Student as follows: Student(SSN, Name, Subject.name) If, however, the relationship is many-to-many we cannot do that since it leads to redundancy For example relation Studies cannot be eliminated since otherwise we may end up with: 111-222-333 John OS 111-222-333 John DBMS
11
Representing Weak Entity Sets A weak entity set becomes a table that includes a column for the primary key of the identifying strong entity set
12
Representing Weak Entity Sets (Additional Rules) The relation for any relationship in which the weak W entity participates must use as a key for W all of its key attributes including those of strong entities that contribute to the W key Weak entity set W participating in the relationship should not be converted into a relation.
13
Representing Specialization as Tables Form a table for the higher level entity Form a table for each lower level entity set, include primary key of higher level entity set and local attributes table table attributes personname, street, city customername, credit-rating employeename, salary –Drawback: getting information about, e.g., employee requires accessing two tables
14
Relations Corresponding to Aggregation To represent aggregation, create a table containing primary key of the aggregated relationship, the primary key of the associated entity set Any descriptive attributes
15
Example ISA passenger person pilot departure flight booked instantof assigned canfly plane date gate F# dtimeatime ssn name age #fhrs man model
16
Relational schema for the ER diagram Passenger(ssn) Passenger(ssn, f#, date) Departure(f#, date, gate) departure(f#,date,gate,man,model,ssn) Booked(f#, ssn) Flight(f#, dtime, atime) Flight(f#, dtime,atime) Assigned(f#, man, model, ssn) Person(ssn, name, age) Person(ssn,name,age) Pilot(ssn, #hrs) Pilot(ssn,#hrs,man,model,f#,date) Plane(man, model) Plane(man,model) Canfly(man, model, ssn)
17
Functional Dependencies Let R(A1, A2, ….Ak) be a relational schema; X and Y are subsets of {A1, A2, …Ak}. We say that X->Y, if any two tuples that agree on X, then they agree on Y. Example: Student(SSN,Name,Addr,subjectTaken,favSubject,Prof) SSN->Name SSN->Addr subjectTaken->Prof Assign(Pilot,Flight,Date,Departs) Pilot,Date,Departs->Flight Flight,Date->Pilot
18
Functional Dependencies No need for FD’s with more than one attribute on right side. But it maybe convenient: SSN->Name SSN->Addr combine into: SSN-> Name,Addr More than one attribute on left is important and we may not be able to eliminate it. Flight,Date->Pilot
19
Functional Dependencies A functional dependency X->Y is trivial if it is satisfied by any relation that includes attributes from X and Y –E.g. customer-name, loan-number customer-name customer-name customer-name –In general, is trivial if
20
Keys of Relations X is a superkey of R if and only if X->R X is a candidate key if X is a superkey and there is no subset of X that is also a superkey for R One of the candidate keys is selected as a primary key Example: SSN is a key for Student(SSN,NAME, ADDR) How to determine keys of a relation: One can assert a key K. Then the only FD on R is K->R One can be given a set of FDs and keys can be found from these dependencies
21
Closure of a Set of Functional Dependencies Given a set F set of functional dependencies, there are certain other functional dependencies that are logically implied by F. –E.g. If A B and B C, then we can infer that A C The set of all functional dependencies logically implied by F is the closure of F. We denote the closure of F by F +.
22
Closure of a Set of Functional Dependencies An inference axiom is a rule that states if a relation satisfies certain FDs, it must also satisfy certain other FDs Set of inference rules is sound if the rules lead only to true conclusions Set of inference rules is complete, if it can be used to conclude every valid FD on R We can find all of F + by applying Armstrong’s Axioms: –if , then (reflexivity) –if , then (augmentation) –if , and , then (transitivity) These rules are –sound and complete
23
Example R = (A, B, C, G, H, I) F = { A B A C CG H CG I B H} some members of F + –A H by transitivity from A B and B H –AG I by augmenting A C with G, to get AG CG and then transitivity with CG I
24
Procedure for Computing F + To compute the closure of a set of functional dependencies F: F + = F repeat for each functional dependency f in F + apply reflexivity and augmentation rules on f add the resulting functional dependencies to F + for each pair of functional dependencies f 1 and f 2 in F + if f 1 and f 2 can be combined using transitivity then add the resulting functional dependency to F + until F + does not change any further
25
Closure of Functional Dependencies We can further simplify manual computation of F + by using the following additional rules. –If holds and holds, then holds (union) –If holds, then holds and holds (decomposition) –If holds and holds, then holds (pseudotransitivity) The above rules can be inferred from Armstrong’s axioms.
26
Closure of Attribute Sets Given a set of attributes define the closure of under F (denoted by + ) as the set of attributes that are functionally determined by under F: is in F + + Algorithm to compute +, the closure of under F result := ; while (changes to result) do for each in F do begin if result then result := result end
27
Uses of Attribute Closure There are several uses of the attribute closure algorithm: Testing for superkey: –To test if is a superkey, we compute +, and check if + contains all attributes of R. Testing functional dependencies –To check if a functional dependency holds (or, in other words, is in F + ), just check if +. –That is, we compute + by using attribute closure, and then check if it contains . –Is a simple and cheap test, and very useful Computing closure of F –For each R, we find the closure +, and for each S +, we output a functional dependency S.
28
Example of Attribute Set Closure R = (A, B, C, G, H, I) F = {A B, A C, CG H, CG I, B H} (AG) + 1.result = AG 2.result = ABCG(A C and A B) 3.result = ABCGH(CG H and CG AGBC) 4.result = ABCGHI(CG I and CG AGBCH) Is AG a key? 1.Is AG a super key? 1.Does AG R? == Is (AG) + R 2.Is any subset of AG a superkey? 1.Does A R? == Is (A) + R 2.Does G R? == Is (G) + R
29
Extraneous Attributes Consider a set F of functional dependencies and the functional dependency in F. –Attribute A is extraneous in if A and (F – { }) {( – A) } logically implies F,or A and the set of functional dependencies (F – { }) { ( – A)} logically implies F. Example: Given F = {A C, AB C } –B is extraneous in AB C because {A C, AB C} logically implies A C (I.e. the result of dropping B from AB C). Example: Given F = {A C, AB CD} –C is extraneous in AB CD since AB C can be inferred even after deleting C
30
Testing if an Attribute is Extraneous Consider a set F of functional dependencies and the functional dependency in F. To test if attribute A is extraneous in 1.compute ({ } – A) + using the dependencies in F 2. check that ({ } – A) + contains A; if it does, A is extraneous To test if attribute A is extraneous in 1.compute + using only the dependencies in F’ = (F – { }) { ( – A)}, 2. check that + contains A; if it does, A is extraneous
31
Canonical Cover Sets of functional dependencies may have redundant dependencies that can be inferred from the others –Eg: A C is redundant in: {A B, B C, A C} –Parts of a functional dependency may be redundant E.g. on RHS: {A B, B C, A CD} can be simplified to {A B, B C, A D} E.g. on LHS: {A B, B C, AC D} can be simplified to {A B, B C, A D} A canonical cover of F is a “minimal” set of functional dependencies equivalent to F, having no redundant dependencies or redundant parts of dependencies
32
Canonical Cover (Formal Definition) A canonical cover for F is a set of dependencies F c such that –F logically implies all dependencies in F c, and –F c logically implies all dependencies in F, and –No functional dependency in F c contains an extraneous attribute, and –Each left side of functional dependency in F c is unique.
33
Canonical Cover Computation To compute a canonical cover for F: repeat Use the union rule to replace any dependencies in F 1 1 and 1 1 with 1 1 2 Find a functional dependency with an extraneous attribute either in or in If an extraneous attribute is found, delete it from until F does not change
34
Example of Computing a Canonical Cover R = (A, B, C) F = {A BC B C A B AB C} Combine A BC and A B into A BC A is extraneous in AB C –Set is now {A BC, B C} C is extraneous in A BC –Check if A C is logically implied by A B and the other dependencies Yes: using transitivity on A B and B C. The canonical cover is: A B B C
35
Foreign Keys Let R1 and R2 be two relational schemas. Let K1 and K2 be primary keys of R1 and R2, respectively. If R1 contains all attributes from K2, then we say that K2 is a foreign key of R1. Integrity Constraints Domain Constraints Key Constraints Interdomain Constraints Database Schema S is a set of relational schemas and constraints defined on them
36
Constraints Insert Constraints: No tuple should be inserted into a relation r1 with foreign keys of r2 that are not listed as primary key in r2 (referential integrity) No tuples should be inserted with duplicate primary key(primary key constraint) No primary key value can contain nulls (primary key constraint) Delete Constraint: Tuple should not be deleted from r2 with foreign key values for r2, if a deletion of this tuple will result in referential integrity constraint violation Update should respect referential and primary key constraints
37
Relational Database Design Problem Problem: Given a set of attributes and a set of FDs, generate a set of relational schemas describing the enterprise. Approach 1: Make one big relational schema that contains all attributes (universal relation approach) –Problems: Repetition of information (name, addr, dep_name): address is repeated for each dependent. –Inability to represent certain information, unless nulls are used (name, position,sal, comission) –Loss of information: referential integrity violations
38
Relational Database Design Problem If one big relational schema is not good, then we need to decompose it into smaller relational schemas so that no loss of information will occur Issue: how to decompose without loosing the information? (person_name, loan#, balance, branch_name) Decompose into: (person_name,loan#) (loan#,balance,branch_name) Information gets lost! Thus, we need to find a lossless decomposition
39
Decomposition All attributes of an original schema (R) must appear in the decomposition (R 1, R 2 ): R = R 1 R 2 Lossless-join decomposition. For all possible relations r on schema R r = R1 (r) R2 (r) A decomposition of R into R 1 and R 2 is lossless join if and only if at least one of the following dependencies is in F + : –R 1 R 2 R 1 –R 1 R 2 R 2
40
Example of Lossy-Join Decomposition Lossy-join decompositions result in information loss. Example: Decomposition of R = (A, B) R 1 = (A)R 2 = (B) AB 121121 A B 1212 r A(r)A(r) B(r) A (r) B (r) AB 12121212
41
Goals of Normalization Decide whether a particular relation R is in “good” form. In the case that a relation R is not in “good” form, decompose it into a set of relations {R 1, R 2,..., R n } such that –each relation satisfies a referential integrity constraints –the decomposition is a lossless-join decomposition –the decomposition preserves the set of functional dependencies Our theory initially is based on: –functional dependencies
42
Normalization Using Functional Dependencies When we decompose a relation schema R with a set of functional dependencies F into R 1, R 2,.., R n we want –Lossless-join decomposition: Otherwise decomposition would result in information loss. –Dependency preservation: Let F i be the set of dependencies F + that include only attributes in R i. (F 1 F 2 … F n ) + = F +.
43
Example R = (A, B, C) F = {A B, B C) –Can be decomposed in two different ways R 1 = (A, B), R 2 = (B, C) –Lossless-join decomposition: R 1 R 2 = {B} and B BC –Dependency preserving R 1 = (A, B), R 2 = (A, C) –Lossless-join decomposition: R 1 R 2 = {A} and A AB –Not dependency preserving (cannot check B C without computing R 1 R 2 )
44
Testing for Dependency Preservation To check if a dependency is preserved in a decomposition of R into R 1, R 2, …, R n we apply the following simplified test (with attribute closure done w.r.t. F) –result = while (changes to result) do for each R i in the decomposition t = (result R i ) + R i result = result t –If result contains all attributes in , then the functional dependency is preserved. We apply the test on all dependencies in F to check if a decomposition is dependency preserving This procedure takes polynomial time, instead of the exponential time required to compute F + and (F 1 F 2 … F n ) +
45
Boyce-Codd Normal Form is trivial (i.e., ) is a superkey for R A relation schema R is in BCNF with respect to a set F of functional dependencies if for all functional dependencies in F + of the form , where R and R, at least one of the following holds:
46
Example R = (A, B, C) F = {A B B C} Key = {A} R is not in BCNF Decomposition R 1 = (A, B), R 2 = (B, C) –R 1 and R 2 in BCNF –Lossless-join decomposition –Dependency preserving
47
Testing for BCNF To check if a non-trivial dependency causes a violation of BCNF 1. compute + (the attribute closure of ), and 2. verify that it includes all attributes of R Using only F is incorrect when testing a relation in a decomposition of R –E.g. Consider R (A, B, C, D), with F = { A B, B C} Decompose R into R 1 (A,B) and R 2 (A,C,D) Neither of the dependencies in F contain only attributes from (A,C,D) so we might be mislead into thinking R 2 satisfies BCNF. In fact, dependency A C in F + shows R 2 is not in BCNF.
48
BCNF Decomposition Algorithm result := {R}; done := false; compute F + ; while (not done) do if (there is a schema R i in result that is not in BCNF) then begin let be a nontrivial functional dependency that holds on R i such that R i is not in F +, and = ; result := (result – R i ) (R i – ) ( , ); end else done := true; Each R i is in BCNF, and decomposition is lossless-join.
49
Example of BCNF Decomposition R = (branch-name, branch-city, assets, customer-name, loan-number, amount) F = {branch-name assets branch-city loan-number amount branch-name} Key = {loan-number, customer-name} Decomposition –R 1 = (branch-name, branch-city, assets) –R 2 = (branch-name, customer-name, loan-number, amount) –R 3 = (branch-name, loan-number, amount) –R 4 = (customer-name, loan-number) Final decomposition R 1, R 3, R 4
50
BCNF and Dependency Preservation R = (A, B, C) F = {AB C C B} Two candidate keys = AB and AC R is not in BCNF Any decomposition of R will fail to preserve AB C It is not always possible to get a BCNF decomposition that is dependency preserving
51
Third Normal Form: Motivation There are some situations where –BCNF is not dependency preserving, and –efficient checking for FD violation on updates is important Solution: define a weaker normal form, called Third Normal Form. – FDs can be checked on individual relations without computing a join. –There is always a lossless-join, dependency-preserving decomposition into 3NF.
52
Third Normal Form A relation schema R is in third normal form (3NF) if for all: in F + at least one of the following holds: – is trivial (i.e., ) – is a superkey for R –Each attribute A in – is contained in a candidate key for R. If a relation is in BCNF it is in 3NF (since in BCNF one of the first two conditions above must hold). Third condition is a minimal relaxation of BCNF to ensure dependency preservation.
53
Third Normal Form Example –R = (A,B,C) F = {AB C, C B} –Two candidate keys: AB and AC –R is in 3NF AB CAB is a superkey C BB is contained in a candidate key n BCNF decomposition has (AC) and (BC) n Testing for AB C requires a join
54
Testing for 3NF Use attribute closure to check for each dependency , if is a superkey. If is not a superkey, we have to verify if each attribute in is contained in a candidate key of R –this test is rather more expensive, since it involve finding candidate keys –testing for 3NF has been shown to be NP-hard –However, decomposition into third normal form can be done in polynomial time
55
3NF Decomposition Algorithm Let F c be a canonical cover for F; i := 0; for each functional dependency in F c do if none of the schemas R j, 1 j i contains then begin i := i + 1; R i := end if none of the schemas R j, 1 j i contains a candidate key for R then begin i := i + 1; R i := any candidate key for R; end return (R 1, R 2,..., R i )
56
3NF Decomposition Algorithm Decomposition algorithm ensures: –each relation schema R i is in 3NF –decomposition is dependency preserving and lossless- join
57
Example Relation schema: R(A, B, C, D) The functional dependencies for this relation schema are: C AD AB C The keys are: {BC}, {AB}
58
Applying 3NF The for loop in the algorithm causes us to include the following schemas in our decomposition: R1(ACD), R2(ABC) Since R2 contains a candidate key for R1, we are done with the decomposition process.
59
Comparison of BCNF and 3NF It is always possible to decompose a relation into relations in 3NF and –the decomposition is lossless –the dependencies are preserved It is always possible to decompose a relation into relations in BCNF and –the decomposition is lossless –it may not be possible to preserve dependencies.
60
Comparison of BCNF and 3NF a 1 a 2 a 3 null c1c1c1c2c1c1c1c2 b1b1b1b2b1b1b1b2 A schema that is in 3NF but not in BCNF has the problems of repetition of information (e.g., the relationship c 1, b 1 ) need to use null values (e.g., to represent the relationship c 2, b 2 where there is no corresponding value for A). Example of problems due to redundancy in 3NF –R = (A, B, C) F = {AB C, C B} A C B
61
Design Goals (revisited) Goal for a relational database design is: –BCNF. –Lossless join. –Dependency preservation. If we cannot achieve this, we accept one of –Lack of dependency preservation –Redundancy due to use of 3NF
62
Universal Relation Approach Dangling tuples – Tuples that “disappear” in computing a join. –Let r 1 (R 1 ), r 2 (R 2 ), …., r n (R n ) be a set of relations –A tuple t of the relation r i is a dangling tuple if t is not in the relation: Ri (r 1 r 2 … r n ) The relation r 1 r 2 … r n is called a universal relation since it involves all the attributes in the “universe” defined by R 1 R 2 … R n If dangling tuples are allowed in the database, instead of decomposing a universal relation, we may prefer to synthesize a collection of normal form schemas from a given set of attributes.
63
Universal Relation Approach Dangling tuples may occur in practical database applications. They represent incomplete information E.g. may want to break up information about loans into: (branch-name, loan-number) (loan-number, amount) (loan-number, customer-name) Universal relation would require null values, and have dangling tuples
64
Universal Relation Approach A particular decomposition defines a restricted form of incomplete information that is acceptable in our database. –Above decomposition requires at least one of customer- name, branch-name or amount in order to enter a loan number without using null values –Rules out storing of customer-name, amount without an appropriate loan-number (since it is a key, it can't be null either!) Universal relation requires unique attribute names unique role assumption –e.g. customer-name, branch-name
65
Multivalued Dependencies There are database schemas in BCNF that do not seem to be sufficiently normalized Consider a database classes(course, teacher, book) such that (c,t,b) classes means that t is qualified to teach c, and b is a required textbook for c The database is supposed to list for each course the set of teachers any one of which can be the course’s instructor, and the set of books, all of which are required for the course (no matter who teaches it).
66
There are no non-trivial functional dependencies and therefore the relation is in BCNF Insertion anomalies – i.e., if Sara is a new teacher that can teach database, two tuples need to be inserted (database, Sara, DB Concepts) (database, Sara, Ullman) courseteacherbook database operating systems Avi Hank Sudarshan Avi Jim DB Concepts Ullman DB Concepts Ullman DB Concepts Ullman OS Concepts Shaw OS Concepts Shaw classes Multivalued Dependencies
67
Therefore, it is better to decompose classes into: courseteacher database operating systems Avi Hank Sudarshan Avi Jim teaches coursebook database operating systems DB Concepts Ullman OS Concepts Shaw text Multivalued Dependencies
68
Multivalued Dependencies (MVDs) Let R be a relation schema and let R and R. The multivalued dependency holds on R if in any legal relation r(R), for all pairs for tuples t 1 and t 2 in r such that t 1 [ ] = t 2 [ ], there exist tuples t 3 and t 4 in r such that: t 1 [ ] = t 2 [ ] = t 3 [ ] = t 4 [ ] t 3 [ ] = t 1 [ ] t 3 [R – ] = t 2 [R – ] t 4 [ ] = t 2 [ ] t 4 [R – ] = t 1 [R – ]
69
MVD (Tabular illustration) Tabular representation of
70
Example Let R be a relation schema with a set of attributes that are partitioned into 3 nonempty subsets. A, B, C We say that A B (A multidetermines B) if and only if for all possible relations r(R) r and r then r and r Note that since the behavior of B and C are identical it follows that A B if A C
71
Example In our example: course teacher course book The above formal definition is supposed to formalize the notion that given a particular value of A(course) it has associated with it a set of values of B(teacher) and a set of values of C (book), and these two sets are in some sense independent of each other. Note: –If A B then A B –Indeed we have (in above notation) B 1 = B 2 The claim follows.
72
Another Example A B C D a1b1c1d2 a2b2c1d1 but a1b1c1d1 a2b2c1d2 are not in the relation Multivalued dependency is a semantic notion A B C D a1 b1 c1 d2 a1 b2 c2 d1 a1 b2 c1 d2 a1 b1 c2 d1 a2 b2 c1 d1 a2 b3 c2 d2 a2 b2 c2 d2
73
One more example SSN EducDeg Age Dept 100 BS 32 CS 200 BS 26 Physics 200 MS 26 Physics 200 PhD 26 Physics SSN EducDeg Every relation with only two attributes has a multivalued dependency between these attributes
74
Derivation Rules for Functional and Multivalued Dependencies If Y is a subset of X, then X Y – reflexivity X Y, then XZ YZ – augmentation X Y and Y Z, then X Z – transitivity If X Y, then X U-X-Y - complementation If X Y and V is a subset of W, then XW VY – augmentation If X Y and Y Z, then X YZ - transitivity If X Y, then X Y If X Y, Z is a subset of Y and intersection of W and Y empty, and W Z, then X Z
75
Use of Multivalued Dependencies We use multivalued dependencies in two ways: 1.To test relations to determine whether they are legal under a given set of functional and multivalued dependencies 2.To specify constraints on the set of legal relations. We shall thus concern ourselves only with relations that satisfy a given set of functional and multivalued dependencies.
76
Theory of MVDs From the definition of multivalued dependency, we can derive the following rule: –If , then That is, every functional dependency is also a multivalued dependency The closure D + of D is the set of all functional and multivalued dependencies logically implied by D. –We can compute D + from D, using the formal definitions of functional dependencies and multivalued dependencies. –We can manage with such reasoning for very simple multivalued dependencies, which seem to be most common in practice –For complex dependencies, it is better to reason about sets of dependencies using a system of inference rules.
77
Fourth Normal Form A relation schema R is in 4NF with respect to a set D of functional and multivalued dependencies if for all multivalued dependencies in D + of the form , where R and R, at least one of the following hold: – is trivial (i.e., or = R) – is a superkey for schema R If a relation is in 4NF it is in BCNF
78
Restriction of Multivalued Dependencies The restriction of D to R i is the set D i consisting of –All functional dependencies in D + that include only attributes of R i –All multivalued dependencies of the form ( R i ) where R i and is in D +
79
4NF Decomposition Algorithm result: = {R}; done := false; compute D + ; Let D i denote the restriction of D + to R i while (not done) if (there is a schema R i in result that is not in 4NF) then begin let be a nontrivial multivalued dependency that holds on R i such that R i is not in D i, and ; result := (result - R i ) (R i - ) ( , ); end else done:= true; Note: each R i is in 4NF, and decomposition is lossless-join
80
Example R =(A, B, C, G, H, I) F ={ A B B HI CG H } R is not in 4NF since A B and A is not a superkey for R Decomposition a) R 1 = (A, B) (R 1 is in 4NF) b) R 2 = (A, C, G, H, I) (R 2 is not in 4NF) c) R 3 = (C, G, H) (R 3 is in 4NF) d) R 4 = (A, C, G, I) (R 4 is not in 4NF) Since A B and B HI, A HI, A I e) R 5 = (A, I) (R 5 is in 4NF) f)R 6 = (A, C, G) (R 6 is in 4NF)
81
Further Normal Forms Join dependencies generalize multivalued dependencies –lead to project-join normal form (PJNF) (also called fifth normal form) A class of even more general constraints, leads to a normal form called domain-key normal form. Problem with these generalized constraints: are hard to reason with, and no set of sound and complete set of inference rules exists. Hence rarely used
82
Overall Database Design Process We have assumed schema R is given –R could have been generated when converting E-R diagram to a set of tables. –Normalization breaks R into smaller relations. –R could have been the result of some ad hoc design of relations, which we then test/convert to normal form.
83
ER Model and Normalization When an E-R diagram is carefully designed, identifying all entities correctly, the tables generated from the E-R diagram should not need further normalization. However, in a real (imperfect) design there can be FDs from non-key attributes of an entity to other attributes of the entity E.g. employee entity with attributes department-number and department-address, and an FD department-number department-address –Good design would have made department an entity FDs from non-key attributes of a relationship set possible, but rare --- most relationships are binary
84
Denormalization for Performance May want to use non-normalized schema for performance E.g. displaying customer-name along with account-number and balance requires join of account with depositor Alternative 1: Use denormalized relation containing attributes of account as well as depositor with all above attributes –faster lookup –Extra space and extra execution time for updates –extra coding work for programmer and possibility of error in extra code Alternative 2: use a materialized view defined as account depositor –Benefits and drawbacks same as above, except no extra coding work for programmer and avoids possible errors
85
Other Design Issues Some aspects of database design are not caught by normalization Examples of bad database design, to be avoided: Instead of earnings(company-id, year, amount), use –earnings-2000, earnings-2001, earnings-2002, etc., all on the schema (company-id, earnings). Above are in BCNF, but make querying across years difficult and needs new table each year –company-year(company-id, earnings-2000, earnings- 2001, earnings-2002) Also in BCNF, but also makes querying across years difficult and requires new attribute each year.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.