Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Department of Computer Science and Engineering, HKUST Slide 1 Comp 231 Database Management Systems Comp 231 Database Management Systems 6. Integrity Constraints."— Presentation transcript:

1

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

3 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.

4 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.

5 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 4.00. constraint value-test is optional; useful to indicate which constraint an update violated.

6 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))

7 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.

8 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

9 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

10 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)

11 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

12 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.

13 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))

14 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)

15 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, …)

16 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.

17 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.

18 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

19 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 $1000.00. 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

20 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.

21 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.

22 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

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

24 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.

25 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 D12345631/2/1961 ? P11111131/2/1971 ?

26 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)

27 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

28 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 

29 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.

30 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.

31 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

32 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)

33 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)

34 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

35 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

36 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

37 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

38 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

39 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

40 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

41 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


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

Similar presentations


Ads by Google