Department of Computer Science and Engineering, HKUST Slide 1 Comp 231 Database Management Systems Comp 231 Database Management Systems 6. Integrity Constraints.

Slides:



Advertisements
Similar presentations
Relational Database Design UNIT II 1. 2 Advantages of Using Database Systems Centralized control of a firm’s data Redundancy can be reduced (avoid keeping.
Advertisements

Manipulating Functional Dependencies Zaki Malik September 30, 2008.
Dr. Kalpakis CMSC 461, Database Management Systems URL: Relational Database Design.
Carnegie Mellon Carnegie Mellon Univ. Dept. of Computer Science Database Applications C. Faloutsos Integrity Constraints.
©Silberschatz, Korth and Sudarshan6.1Database System Concepts Chapter 6: Integrity (and Security) Domain Constraints Referential Integrity Assertions Triggers.
C.1 Appendix C: Advanced Relational Database Design Reasoning with MVDs Higher normal forms Join dependencies and PJNF DKNF.
Database System Concepts, 6 th Ed. ©Silberschatz, Korth and Sudarshan See for conditions on re-usewww.db-book.com Appendix B: Advanced.
©Silberschatz, Korth and Sudarshan Relational Database Design First Normal Form Pitfalls in Relational Database Design Functional Dependencies Decomposition.
7.1 Chapter 7: Relational Database Design. 7.2 Chapter 7: Relational Database Design Features of Good Relational Design Atomic Domains and First Normal.
Chapter 7: Relational Database Design. ©Silberschatz, Korth and Sudarshan7.2Database System Concepts Chapter 7: Relational Database Design First Normal.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 3 The Basic (Flat) Relational Model.
Chapter 7: Relational Database Design. ©Silberschatz, Korth and Sudarshan7.2Database System Concepts Chapter 7: Relational Database Design First Normal.
Chapter 7: Relational Database Design. ©Silberschatz, Korth and Sudarshan7.2Database System Concepts Chapter 7: Relational Database Design First Normal.
©Silberschatz, Korth and Sudarshan4.1Database System Concepts Chapter 4: SQL Basic Structure Set Operations Aggregate Functions Null Values Nested Subqueries.
The Relational Model Lecture 3 Book Chapter 3 Relational Data Model Relational Query Language (DDL + DML) Integrity Constraints (IC) From ER to Relational.
1 CMSC424, Spring 2005 CMSC424: Database Design Lecture 9.
1 CMSC424, Spring 2005 CMSC424: Database Design Lecture 8.
Relational Database Design
Slides adapted from A. Silberschatz et al. Database System Concepts, 5th Ed. SQL - part 2 - Database Management Systems I Alex Coman, Winter 2006.
©Silberschatz, Korth and Sudarshan6.1Database System Concepts Chapter 6: Integrity and Security Domain Constraints Referential Integrity Assertions Triggers.
Department of Computer Science and Engineering, HKUST Slide 1 7. Relational Database Design.
Chapter 6: Integrity Objective Key Constraints (Chapter 2) Cardinality Constraints (Chapter 2) Domain Constraints Referential Integrity Assertions Triggers.
Chapter 8: Relational Database Design First Normal Form First Normal Form Functional Dependencies Functional Dependencies Decomposition Decomposition Boyce-Codd.
©Silberschatz, Korth and Sudarshan7.1Database System Concepts Chapter 7: Relational Database Design First Normal Form Pitfalls in Relational Database Design.
Chapter 7: Relational Database Design. 7.2Unite International CollegeDatabase Management Systems Chapter 7: Relational Database Design Features of Good.
Chapter 6: Integrity and Security Thomas Nikl 19 October, 2004 CS157B.
©Silberschatz, Korth and Sudarshan6.1Database System Concepts Chapter 6: Integrity and Security Domain Constraints Referential Integrity Assertions Triggers.
Chapter 5 Integrity Constraints 5.1 Domain ConstraintsDomain Constraints 5.2 Referential IntegrityReferential Integrity 5.3 AssertionsAssertions 5.4 TriggersTriggers.
Chapter 10 Functional Dependencies and Normalization for Relational Databases.
Chapter 7: Relational Database Design. 7.2Unite International CollegeDatabase Management Systems Chapter 7: Relational Database Design Features of Good.
Chapter 4: Advanced SQL. 4.2Unite International CollegeDatabase Management Systems Chapter 4: Advanced SQL SQL Data Types and Schemas Integrity Constraints.
3.1 Chapter 3: SQL Schema used in examples p (omit 3.8.2, , 3.11)
Structured Query Language 2 Presented by: Annisa, M.Kom. Source: Database System Concepts 5 th edition.
SCUHolliday - coen 1789–1 Schedule Today: u Constraints, assertions, triggers u Read Sections , 7.4. Next u Triggers, PL/SQL, embedded SQL, JDBC.
-- Introduction to database principles Maoying Wu March 25, 2013 Chapter 4: Advanced SQL (1)
Chapter 7: Relational Database Design. ©Silberschatz, Korth and Sudarshan7.2Database System Concepts Chapter 7: Relational Database Design Pitfalls in.
Relational Database Design by Relational Database Design by Dr.S.Sridhar, Ph.D.(JNUD), RACI(Paris, NICE), RMR(USA), RZFM(Germany) DIRECTOR ARUNAI ENGINEERING.
Database System Concepts, 5th Ed. ©Silberschatz, Korth and Sudarshan See for conditions on re-usewww.db-book.com Chapter 7: Relational.
International Computer Institute, Izmir, Turkey Integrity and Security Asst.Prof.Dr.İlker Kocabaş UBİ502 at
Computing & Information Sciences Kansas State University Tuesday, 27 Feb 2007CIS 560: Database System Concepts Lecture 18 of 42 Tuesday, 27 February 2007.
Computing & Information Sciences Kansas State University Wednesday, 04 Oct 2006CIS 560: Database System Concepts Lecture 17 of 42 Wednesday, 04 October.
Chapter 7: Relational Database Design. ©Silberschatz, Korth and Sudarshan7.2Database System Concepts Chapter 7: Relational Database Design First Normal.
Triggers. Why Triggers ? Suppose a warehouse wishes to maintain a minimum inventory of each item. Number of items kept in items table Items(name, number,...)
©Silberschatz, Korth and Sudarshan5.1Database System Concepts Chapter 5: Other Relational Query Languages Tuple Relational Calculus Domain Relational Calculus.
Logical Database Design (1 of 3) John Ortiz Lecture 6Logical Database Design (1)2 Introduction  The logical design is a process of refining DB schema.
Chapter 8: SQL. Data Definition Modification of the Database Basic Query Structure Aggregate Functions.
1 Dept. of CIS, Temple Univ. CIS616/661 – Principles of Data Management V. Megalooikonomou Integrity Constraints (based on slides by C. Faloutsos at CMU)
Advanced SQL: Triggers & Assertions
Chapter 7: Relational Database Design. ©Silberschatz, Korth and Sudarshan7.2Database System Concepts Chapter 7: Relational Database Design First Normal.
Chapter 4: SQL Complex Queries Complex Queries Views Views Modification of the Database Modification of the Database Joined Relations Joined Relations.
Database System Concepts, 6 th Ed. ©Silberschatz, Korth and Sudarshan See for conditions on re-usewww.db-book.com Appendix B: Advanced.
CSE314 Database Systems Lecture 3 The Relational Data Model and Relational Database Constraints Doç. Dr. Mehmet Göktürk src: Elmasri & Navanthe 6E Pearson.
Chapter 5 : Integrity And Security  Domain Constraints  Referential Integrity  Security  Triggers  Authorization  Authorization in SQL  Views 
MIS 3053 Database Design And Applications The University Of Tulsa Professor: Akhilesh Bajaj Normal Forms Lecture 1 © Akhilesh Bajaj, 2000, 2002, 2003.
Database System Concepts, 6 th Ed. ©Silberschatz, Korth and Sudarshan See for conditions on re-usewww.db-book.com Chapter 4: Intermediate.
Chapter 8 Relational Database Design. 2 Relational Database Design: Goals n Reduce data redundancy (undesirable replication of data values) n Minimize.
Computing & Information Sciences Kansas State University Friday, 03 Oct 2007CIS 560: Database System Concepts Lecture 16 of 42 Wednesday, 03 October 2007.
SCUHolliday - coen 1789–1 Schedule Today: u Constraints, assertions, triggers u Read Sections , 7.4. Next u Embedded SQL, JDBC. u Read Sections.
©Silberschatz, Korth and Sudarshan6.1Database System Concepts Chapter 6: Integrity Constraints Domain Constraints Referential Integrity Assertions Triggers.
Database Constraints Ashima Wadhwa. Database Constraints Database constraints are restrictions on the contents of the database or on database operations.
Chapter 6: Integrity (and Security)
Relational Model By Dr.S.Sridhar, Ph.D.(JNUD), RACI(Paris, NICE), RMR(USA), RZFM(Germany)
Relational Database Design by Dr. S. Sridhar, Ph. D
Chapter 7: Relational Database Design
Relational Database Design
Relational Database Design
Integrity Constraints
אילוצי שלמות אילוצי תחום מפתחות ומפתחות זרים טריגרים triggers
Relational Database Design
Presentation transcript:

Department of Computer Science and Engineering, HKUST Slide 1 Comp 231 Database Management Systems Comp 231 Database Management Systems 6. Integrity Constraints

Department of Computer Science and Engineering, HKUST Slide 2 Integrity Constraints Domain Constraints Referential Integrity Assertions Triggers Functional Dependencies Integrity constraints guard against accidental damage to the database, by ensuring that authorized changes to the database do not result in a loss of data consistency.

Department of Computer Science and Engineering, HKUST Slide 3 Domain Constraints They define valid values for attributes They are the most elementary form of integrity constraint. They test values inserted in the database, and test queries to ensure that the comparisons make sense.

Department of Computer Science and Engineering, HKUST Slide 4 Domain Constraints condition must be TRUE name of constraint new domain name The check clause in SQL-92 permits domains to be restricted use check clause to ensure that an hourly-wage domain allows only values greater than a specified value. create domain hourly-wage numeric(5,2) constraint value-test check (value>=4.00) The domain hourly-wage is declared to be a decimal number with 5 digits, 2 of which are after the decimal point The domain has a constraint that ensures that the hourly-wage is greater than constraint value-test is optional; useful to indicate which constraint an update violated.

Department of Computer Science and Engineering, HKUST Slide 5 an SQL condition Specifying Constraints Can have complex conditions in domain check create domain AccountType char(10) constraint account-type-test check (value in (‘Checking’, ‘Saving’)) check can be associated with a table definition: create table account … … check (branch-name in (select branch-name from branch))

Department of Computer Science and Engineering, HKUST Slide 6 Referential Integrity Ensures that a value that appears in one relation for a given set of attributes also appears for a certain set of attribute in another relation. –If an account exists in the database with branch name “Perryridge”, then the branch “Perryridge” must actually exist in the database. Primary keys of respective relations Foreign key branch (branch-name, branch-city, asset ) Perryridge Brooklyn 500,000 account ( account-no, branch-name, balance ) A-123 Perryridge 5000 A set of attributes X in R is a foreign key if it is not a primary key of R but it is a primary key of some relation S.

Department of Computer Science and Engineering, HKUST Slide 7 Referential Integrity Formal Definition –Let r 1 (R 1 ) and r 2 (R 2 ) be relations with primary keys K 1 and K 2 respectively. –The subset  of R 2 is a foreign key referencing K 1 in relation r 1, if for every t 2 in r 2 there must be a tuple t 1 in r 1 such that t 1 [K 1 ]=t 2 [  ]. –Referential integrity constraint:   (r 2 )   K1 (r 1 ) R 2 ( K 2, …, , … ) t2t2 R 1 ( K 1, …, … ) t1t1 x x

Department of Computer Science and Engineering, HKUST Slide 8 Primary key of Works-for Foreign keys Primary key of Dependent Foreign key of Dependent since it is a primary key of Employee Referential Integrity in the E-R Model Consider relationship R between entity E 1 and E 2. R is represented as a relation including primary keys K 1 of E 1 and K 2 of E 2. Then K 1 and K 2 form foreign keys on the relational schemas for E 1 and E 2 respectively. Weak entity sets are also a source of referential integrity constraints. For, the relation schema for a weak entity set must include the primary key of the entity set which it depends. Dependent ( employee-no, dependent-name, age, sex ) Works-for ( employee-no, dept-no) works- for EmpDep

Department of Computer Science and Engineering, HKUST Slide 9 Referential Integrity for Insertion and Deletion The following tests must be made in order to preserve the following referential integrity constraint:   (r 2 )   K (r 1 ) Insert. If a tuple t 2 is inserted into r 2. The system must ensure that there is a tuple t1 in r1 such that t 1 [K] = t 2 [  ]. That is t 2 [  ]  K (r 1 ) Delete. If a tuple t 1 is deleted from r 1, the system must compute the set of tuples in r 2 that reference t 1 :   =t1[K] (r 2 ) if this set is not empty, either the delete command is rejected as an error, or the tuples that reference t 1 must themselves be deleted (cascading deletions are possible)

Department of Computer Science and Engineering, HKUST Slide 10 Referential Integrity for Update if a tuple t 2 is updated in relation r 2 and the update modifies values for the foreign key , then a test similar to the insert case is made. Let t 2 ’ denote the new value of tuple t 2. The system must ensure that t 2 ’[  ]   K (r 1 ) if a tuple t 1 is updated in r 1, and the update modifies values for primary key(K), then a test similar to the delete case is made. The system must compute   =t1[K] (r 2 ) using the old value of t 1 (the value before the update is applied). If this set is not empty, the update may be rejected as an error, or the update may be applied to the tuples in the set (cascade update), or the tuples in the set may be deleted. new foreign key value must exist no foreign keys contain the old primary key

Department of Computer Science and Engineering, HKUST Slide 11 Referential Integrity in SQL Primary and candidate keys and foreign keys can be specified as part of the SQL create table statement: –The primary key clause of the create table statement includes a list of the attributes that comprise the primary key. –The unique key clause of the create table statement includes a list of the attributes that comprise a candidate key. –The foreign key clause of the create table statement includes both a list of the attributes that comprise the foreign key and the name of the relation referenced by the foreign key.

Department of Computer Science and Engineering, HKUST Slide 12 Referential Integrity in SQL -example create table customer (customer-name char(20) not null, customer-streetchar(30), customer-citychar(30), primary key (customer-name)) create table branch (branch-namechar(15) not null, branch-citychar(30), assetsinteger, primary key (branch-name))

Department of Computer Science and Engineering, HKUST Slide 13 Referential integrity in SQL- example create table account (branch-namechar(15), account-numberchar(10) not null, balance integer, primary key(account-number), foreign key (branch-name) references branch) create table depositor (customer-namechar(20) not null, account-number char(10) not null, primary key (customer-name, account-number), foreign key (account-number) references account, foreign key (customer-name) references customer)

Department of Computer Science and Engineering, HKUST Slide 14 Cascading Actions in SQL Due to the on delete cascade clauses, if a delete of a tuple in branch results in referential-integrity constraint violation, the delete “cascades” to the account relation, deleting the tuple that refers to the branch that was deleted. Cascading updates are similar. create table account ….. foreign key (branch-name) references branch on delete cascade on update cascade, …)

Department of Computer Science and Engineering, HKUST Slide 15 Cascading Actions in SQL If there is a chain of foreign-key dependencies across multiple relations, with on delete cascade specified for each dependency, a deletion or update at one end of the chain can propagate across the entire chain. If a cascading update or delete causes a constraint violation that cannot be handled by further cascading operation, the system aborts the transaction. As a result, all the changes caused by the transaction and its cascading actions are undone.

Department of Computer Science and Engineering, HKUST Slide 16 Assertions An assertion is predicate expressing a condition that we wish the database always to satisfy. An assertion in SQL-92 takes the form create assertion check When an assertion is made, the system tests it for validity. This testing may introduce a significant amount of overhead; hence assertions should be used with great care. Any predicate allowed in SQL can be used.

Department of Computer Science and Engineering, HKUST Slide 17 The sum of all loan amounts for each branch must be less than the sum of all account balances at the branch. create assertion sum-constraint check (not exists (select * from branch where (select sum(amount) from loan where loan.branch-name=branch.branch-name) >= (select sum(amount) from account where loan.number-name=branch.branch-name) )) Assertion Example 1

Department of Computer Science and Engineering, HKUST Slide 18 Assertion Example 2 loans without such an account Every loan has at least one borrower who maintains an account with a minimum balance of $ create assertion balance-constraint check (not exists (select * from loan where not exists (select * from borrower, depositor, account where loan.loan-number=borrower.loan-number and borrower.customer-name=depositor.customer-name and depositor.account-number=account.account-number and account.balance >=1000) )) must return T or F

Department of Computer Science and Engineering, HKUST Slide 19 Triggers A trigger is a statement that is executed automatically by the system as a side effect of a modification to the database. To design a trigger mechanism, we must: –Specify the conditions under which the trigger is to be executed. –Specify the actions to be taken when the trigger executes. The SQL-92 standard does not include triggers, but many implementations support triggers.

Department of Computer Science and Engineering, HKUST Slide 20 Trigger Example Suppose that instead of allowing negative account balances, the bank deals with overdrafts by –setting the account balance to zero –creating a loan in the amount of the overdraft –giving this loan a loan number which is identical to the account number of the overdrawn account. The condition for executing the trigger is an update to the account relation that results in a negative balance value.

Department of Computer Science and Engineering, HKUST Slide 21 Trigger Example define trigger overdraft on update of account T (if new T.balance < 0 then (insert into loan values (T.branch-name, T.account-number, - new T.balance) insert into borrower (select customer-name, account-number from depositor where T.account-number = depositor.account-number) update account S set S.balance =0 where S.account-number =T.account-number)) The keyword new used before T.balance indicates that the value of T.balance after the update should be used; if it is omitted, the value before the update is used. PL/SQL Trigger Example

Department of Computer Science and Engineering, HKUST Slide 22 Leaving SQL Going into Relation Database Theory

Department of Computer Science and Engineering, HKUST Slide 23 Functional Dependence Existence dependence: The existence of B depends on A Functional dependence: B’s value depends on A’s value –EmpName is functionally dependent on EmpNo –Given the EmpNo, I can one and only one value of EmpName Constraints on the set of legal relation instances Require that the value for a certain set of attributes determines uniquely the value for another set of attributes. Functional dependence is a generalization of the notion of a key.

Department of Computer Science and Engineering, HKUST Slide 24 Functional Dependencies Let R be a relation schema   R,   R The functional dependency    holds on R if and only if for any legal relation r(R), whenever any two tuples t 1 and t 2 of r agree on the attributes , they also agree on the attributes . That is, t 1 [  ] = t 2 [  ]  t 1 [  ] = t 2 [  ] –True for all tuple pairs –True for all instances R = ( A, B, C, D, E )  = A, B, C  = C, D Example: HKID  DoB t1t1 t2t2 t1t1 t2t2 D /2/1961 ? P /2/1971 ?

Department of Computer Science and Engineering, HKUST Slide 25 Alternative Definitions of Keys K is a superkey for relation schema R if and only if K  R –This is the uniqueness property of “key” K is a candidate key for R if and only if –K  R, and –there is no   K,   R  make sure key is shortest possible (minimality)

Department of Computer Science and Engineering, HKUST Slide 26 Functional Dependencies Functional dependencies allow us to express constraints that cannot be expressed using superkeys. Consider the schema: Loan-info = (branch-name, loan-number, customer-name, amount) We expect the following set of functional dependencies to hold: loan-number  amount loan-number  branch-name but would not expect the following to hold: loan-number  customer-name

Department of Computer Science and Engineering, HKUST Slide 27 Examples loan-number  amount loan-number  branch-name loan-number  customer-name Another example: reverse of the fd’s above 

Department of Computer Science and Engineering, HKUST Slide 28 Use of Functional Dependencies We use functional dependencies to: –test relations to see if they are legal under a given set of functional dependencies. If a relation r is legal under a set F of functional dependencies, we say that r satisfies F. –Specify constraints on the set of legal relations; we say that F holds on R if all legal relations on R satisfy the set of functional dependencies F. A specific instance of a relation schema may satisfy a functional dependency even if the functional dependency does not hold on all legal instances. For example, a specific instance of Loan-schema may, by chance, satisfy loan-number  customer-name.

Department of Computer Science and Engineering, HKUST Slide 29 Closure of a Set of Functional Dependencies Given a set of functional dependencies F, there are certain other functional dependencies that are logically implied by F. The set of all functional dependencies logically implied by F is the closure of F. We denote the closure of F by F +. 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.

Department of Computer Science and Engineering, HKUST Slide 30 Examples of Armstrong’s Axioms We can find all of F + by applying Armstrong’s Axioms: –if   , then    (reflexivity) loan-no  loan-no loan-no, amount  loan-no loan-no, amount  amount –if   , then    (augmentation) loan-no  amount(given) loan-no, branch-name  amount, branch-name –if    and  , then    (transitivity) loan-no  branch-name(given) branch-name  branch-city (given) loan-no  branch-city

Department of Computer Science and Engineering, HKUST Slide 31 Closure We can further simplify 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. E.g.,   ,    (given)    (by augmentation)    (by transitivity)

Department of Computer Science and Engineering, HKUST Slide 32 Exercise Given loan-no  amount Does loan-no, branch-name  amount Why??? It is not covered by any of the above axioms, so we must derive it: loan-no, branch-name  loan-no(reflexivity) loan-no  amount(given) loan-no, branch-name  amount(transitivity)

Department of Computer Science and Engineering, HKUST Slide 33 Example A  C; AG  CG; CG  I A  B; B  H R = (A, B, C, G, H, I) F = {A  B A  C CG  H CG  I B  H} some members of F + A  H AG  I CG  HI

Department of Computer Science and Engineering, HKUST Slide 34 Closure of Attribute Sets Define the closure of  under F (denoted by  + ) as the set of attributes that are functionally determined by  under F:    is in F +     + Given loan-no If loan-no  amount then amount is part of loan-no + I.e., loan-no + = loan-no,amount, … If loan-no  branch-name then branch-name is part of loan-no + I.e., loan-no + = loan-no,amount, branch-name … If loan-no  customer-name then continue …. Else stop  is a set of attributes

Department of Computer Science and Engineering, HKUST Slide 35 Algorithm to Compute Closure result is a (growing) set of attributes result   result  a subset of itself 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

Department of Computer Science and Engineering, HKUST Slide 36 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; A  B and A  AG) 3. Result= ABCGH (CG  H and CG  AGBC) 4. Result=ABCGHI (CG  I and CG  AGBCH) Is AG a candidate key? 1. AG  R 2. Does A +  R? 3. Does G +  R? Example Question: What is A + and G + ? result contains all of the attributes of R, so stop

Department of Computer Science and Engineering, HKUST Slide 37 Consider a set F of functional dependencies and the functional dependency    in F. –Attribute A is extraneous in  if A   and if A is removed from , the set of functional dependencies implied by F doesn’t change. Given AB  C and A  C then B is extraneous in AB –Attribute A is extraneous in  if A   and if A is removed from , the set of functional dependencies implied by F doesn’t change. Given A  BC and A  B then B is extraneous in BC A canonical cover F c for F is a set of dependencies such that F logically implies all dependencies in F c and F c logically implies all dependencies in F, and further –No functional dependency in F c contains an extraneous attribute. –Each left side of a functional dependency in F c is unique. Canonical Cover   From A  C I get AB  C

Department of Computer Science and Engineering, HKUST Slide 38 Canonical Cover Compute a canonical over for F: repeat use the union rule to replace any dependencies in F  1   1 and  1   2 replaced 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

Department of Computer Science and Engineering, HKUST Slide 39 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 because B  C logically implies AB  C. C is extraneous in A  BC since A  BC is logically implied by A  B and B  C. The canonical cover is: A  B B  C Example of Computing a Canonical Cover A  BC B  C AB  C A  BC B  C B  C A  BC B  C ABBCABBC

Department of Computer Science and Engineering, HKUST Slide 40 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 –CG  HI from CG  H and CG  I : “union rule” can be inferred from –definition of functional dependencies, or –Augmentation of CG  I to infer CG  CGI, augmentation of CG  H to infer CGI  HI, and then transitivity