Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS34311 The Relational Model. cs34312 Why Relational Model? Currently the most widely used Vendors: Oracle, Microsoft, IBM Older models still used IBM’s.

Similar presentations


Presentation on theme: "CS34311 The Relational Model. cs34312 Why Relational Model? Currently the most widely used Vendors: Oracle, Microsoft, IBM Older models still used IBM’s."— Presentation transcript:

1 CS34311 The Relational Model

2 cs34312 Why Relational Model? Currently the most widely used Vendors: Oracle, Microsoft, IBM Older models still used IBM’s IMS (hierarchical model) Recent competitions Object Oriented Model: ObjectStore, Oracle?

3 cs3431 Relational Query Languages (SQL Standard) Developed by IBM (system R) in the 1970s Need for a standard since it is used by many vendors (portable) SQL (Structured Query Language) Standards: SQL-86 SQL-89 (minor revision) SQL-92 (major revision) SQL-99 (major extensions in OO, current standard)

4 cs34314 Relational Model Structures: Relations (also called Tables) Attributes (also called Columns or Fields) Note: Every attribute is simple (not composite or multi-valued) Instance : a table with rows (tuples) and columns (attributes) #Rows = cardinality, #attributes = degree / arity.

5 cs34315 Relational Model Eg: Student Relation Are 2 relations equivalent? Think of a relation as a set of tuples i.e., all rows are distinct (not required by commercial database) sNumbersName 1Dave 2Greg Student sNumbersName 2Greg 1Dave Student Cardinality = 2 Arity/Degree = 2

6 cs34316 Relational Model Schema for a relation E.g.: Student (sNumber:INTEGER, sName:CHAR(20)) Schema for a database Schemas for all relations in the database Tuples (Rows) Set of rows in a relation are tuples of that relation Note: Attribute values may be null

7 cs34317 Attribute Types / Domain Set of allowed values for each column is called domain of column Domain specifies that values of column must be drawn from domain associated with column – domain constraint Column values are (normally) required to be atomic, i.e., indivisible The special value null is a member of every domain

8 cs34318 Datatypes in SQL INT (or) INTEGER FLOAT (or) REAL DECIMAL (n, m) CHAR (n) VARCHAR (n) DATE, TIME

9 cs34319 SQL DDL DDL = Data Definition Language Create tables, columns of tables, types of columns, primary key constraints, unique constraints, foreign key constraints Drop tables, add/drop columns, add/drop constraints – primary key, unique, foreign key

10 cs343110 Creating Tables CREATE TABLE (, …, [CONSTRAINT ] PRIMARY KEY (…), [CONSTRAINT ] UNIQUE (…), [CONSTRAINT ] FOREIGN KEY (…) REFERENCES (…) );

11 cs3431 DDL ---- Creating Relations Creates Students relation. Observe that type (domain) of each field is specified, and enforced by DBMS whenever tuples are added or modified. As another example, Enrolled table holds information about courses that students take. CREATE TABLE Students (sid: CHAR(20), name: CHAR(20), login: CHAR(10), age: INTEGER, gpa: REAL ) CREATE TABLE Enrolled (sid: CHAR(20), cid: CHAR(20), grade: CHAR (2))

12 cs343112 Dropping tables DROP TABLE

13 cs343113 Adding/Dropping Columns ALTER TABLE ADD ; ALTER TABLE DROP COLUMN ;

14 cs343114 Adding/Dropping Constraints ALTER TABLE ADD [CONSTRAINT ] … ALTER TABLE DROP CONSTRAINT

15 cs343115 SQL DML: Basic DML = Data Manipulation Language Consists of Queries and Modification Modification: Inserting/Deleting values from table Insert a value into a table INSERT INTO VALUES (…) eg: INSERT INTO Student VALUES (1, ‘Dave’); Delete all values from a table DELETE FROM

16 cs3431 Integrity Constraints (ICs) IC: condition that must be true for any instance of the database ICs are specified when schema is defined. ICs are checked when relations are modified. A legal instance of a relation is one that satisfies all specified ICs. DBMS should not allow illegal instances.

17 cs343117 Constraints in Relational Model Key constraints Foreign Key constraints (More constraints later)

18 cs343118 Key Constraints A set of attributes is a key for a relation if: Unique: No two distinct tuples can have the same values in all key fields Minimal: A proper subset of the key attributes is not a key. INTUITION : Minimal subset of columns of the relation that uniquely identify the tuple.

19 cs343119 Keys: Example sNumbersNameaddress 1Dave144FL 2Greg320FL Student Is a key ?

20 cs343120 Primary Key Constraints If multiple keys, one of them is chosen to be the Primary Key. E.g.: PRIMARY KEY (Student) = Restriction: Primary key attributes cannot take null values

21 cs343121 Candidate Keys (SQL: Unique) Keys that are not primary keys are Candidate Keys. Specified in SQL using UNIQUE E.g.: Student (sNumber, sName) PRIMARY KEY (Student) = CANDIDATE KEY (Student) = Note: Attribute of unique key may have null values !

22 cs343122 More on Key Constraints Superkey K: if values for K are sufficient to identify a unique tuple of relation r(R) REMINDER: A set of attributes is a key if: No two distinct tuples can have the same values in all key fields A proper subset of the key attributes is not a key. Superkey: Contains some key in its attribute set A proper subset of a superkey may be a superkey again ?

23 cs343123 Violation of key constraints A relation violates a primary key constraint if: There is a row with null values for any attribute of primary key, or, There are 2 rows with same values for all attributes of primary key A relation violates the unique constraint if: 2 rows in R have the same non-null values for any unique attribute R.a

24 cs343124 Keys: Example sNumbersNameaddress 1Dave144FL 2Greg320FL Student Primary Key: Candidate key: Some superkeys: {,, }

25 cs3431 Primary & Candidate Keys in SQL Possibly many candidate keys (specified using UNIQUE ), one chosen as primary key. CREATE TABLE Student (sid CHAR(20), ssn INTEGER, cid CHAR(20), PRIMARY KEY (sid,cid) UNIQUE (cid )

26 cs3431 Primary and Candidate Keys in SQL CREATE TABLE Enrolled (sid CHAR(20) cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid,cid) ) “For a given student and course, there is a single grade.” “Students can take only one course, and receive a single grade for that course; further, no two students in a course receive the same grade.” CREATE TABLE Enrolled (sid CHAR(20) cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid), UNIQUE (cid, grade) ) Used carelessly, an IC can prevent the storage of database instances that arise in practice!

27 cs3431 Foreign Keys, Referential Integrity Foreign key : Set of fields in one relation that is used to "refer" to a tuple in another relation. - Like a `logical pointer’. Foreign key : FK in referencing relation must match PK of referenced relation. Match = same number of columns, compatible data types (column names can be different). Enrolled (referencing relation) Students (referenced relation) Foreign Key Primary Key

28 cs3431 Foreign Keys in SQL Only students listed in Students relation should be allowed to enroll for courses. CREATE TABLE Enrolled (sid CHAR(20), cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid,cid), FOREIGN KEY (sid) REFERENCES Students (sid))  If all foreign key constraints are enforced, referential integrity is achieved, i.e., no dangling references.

29 cs343129 Foreign Keys: More Examples Dept (dNumber, dName) Person (pNumber, pName, dept) PRIMARY KEY (Dept) = PRIMARY KEY (Person) = FOREIGN KEY Person (dept) REFERENCES Dept (dNumber) Persons working for Depts Person and his/her father Person (pNumber, pName, father) PRIMARY KEY (Person) = FOREIGN KEY Person (father) REFERENCES Person (pNumber)

30 cs343130 Violation of Foreign Key Constraints Suppose we have: FOREIGN KEY R1 (S1) REFERENCES R2 (S2) This constraint is violated if Consider a row in R1 with non-null values for all attributes of S1 If there is no row in R2 which have these values for S2, then the FK constraint is violated.

31 cs3431 Enforcing Referential Integrity Consider Students and Enrolled; sid in Enrolled is a foreign key that references Students. Insertion: What if a new Student tuple is inserted? Insertion: What should be done if an Enrolled tuple with a non-existent student id is inserted? Reject it Enrolled (referencing relation) Students (referenced relation) Foreign Key Primary Key

32 cs3431 Enforcing Referential Integrity Deletion: What if an Enrolled tuple is deleted? Enrolled (referencing relation) Students (referenced relation) Foreign Key Primary Key

33 cs3431 Enforcing Referential Integrity Deletion: What if a Students tuple is deleted? Cascading -- Also delete all Enrolled tuples that refer to it. No Action -- Disallow deletion of a Students tuple that is referred to. Set Default -- Set sid in Enrolled tuples that refer to it to a default sid. Set Null -- Set sid in Enrolled tuples that refer to it to a special value null, denoting `unknown’ (Not always applicable) Similar if primary key of Students tuple is updated. Enrolled (referencing relation) Students (referenced relation) Foreign Key Primary Key

34 cs3431 Enforcing Referential Integrity Consider Students and Enrolled; sid in Enrolled is a foreign key that references Students. Insertion: What should be done if an Enrolled tuple with a non-existent student id is inserted? (Reject it!) Deletion: What should be done if a Students tuple is deleted? Cascading -- Also delete all Enrolled tuples that refer to it. No Action -- Disallow deletion of a Students tuple that is referred to. Set Default -- Set sid in Enrolled tuples that refer to it to a default sid. Set Null -- Set sid in Enrolled tuples that refer to it to a special value null, denoting `unknown’ or `inapplicable’. (Not always applicable) Similar if primary key of Students tuple is updated.

35 cs3431 Referential Integrity in SQL SQL/99 supports all 4 options on deletes & updates: Default is NO ACTION (delete/update is rejected) CASCADE (also delete all tuples that refer to deleted tuple) SET NULL / SET DEFAULT (sets foreign key value of referencing tuple) CREATE TABLE Enrolled (sid CHAR(20), cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid,cid), FOREIGN KEY (sid) REFERENCES Students ON DELETE CASCADE ON UPDATE SET DEFAULT )

36 cs3431 Constraint Violation What if cyclic dependencies between two tables? Solution: 1. Group both insertions into one trasaction 2. Tell DBMS not to check the constraints until after the whole transaction has finished and is committed How: Follow declaration of constraint by “DEFERRABLE” Plus “INITIALLY DEFERRED” defer just before transaction commits Or plus “INITIALLY IMMEDIATE” check made immediately after each statement

37 cs3431 Where do ICs Come From? ICs are based upon semantics of real-world enterprise being described in database relations. We can check a database instance to see if an IC is violated ? We can infer that an IC is true by looking at an instance ? No, NEVER ! An IC is a statement about all possible instances! From example, we know name is not a key, but the assertion that sid is a key is given to us.

38 cs343138 Relational Model: Summary Structures Relations (Tables) Attributes (Columns, Fields) Constraints + Constraint Enforcement Domain Constraint Key Primary key, candidate key (unique) Super Key Foreign Key


Download ppt "CS34311 The Relational Model. cs34312 Why Relational Model? Currently the most widely used Vendors: Oracle, Microsoft, IBM Older models still used IBM’s."

Similar presentations


Ads by Google