360 likes | 377 Views
This comprehensive guide covers the relational model, SQL query languages, data types, constraints, keys, and more. Learn about the importance and structure of relations within a database.
E N D
The Relational Model CS3431
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? 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) cs3431
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. cs3431
Relational Model • Eg: Student Relation • Are 2 relations equivalent? • Think of a relation as a setof tuples i.e., all rows are distinct (not required by commercial database) Student Student Cardinality = 2 Arity/Degree = 2 cs3431
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 cs3431
Datatypes in SQL • INT (or) INTEGER • FLOAT (or) REAL • DECIMAL (n, m) • CHAR (n) • VARCHAR (n) • DATE, TIME cs3431
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 cs3431
Creating Tables CREATE TABLE <tableName> ( <col> <type>, <col> <type>, … <col> <type>, [CONSTRAINT <cName>] PRIMARY KEY (…), [CONSTRAINT <cName>] UNIQUE (…), [CONSTRAINT <cName>] FOREIGN KEY (…) REFERENCES <tableName> (…) ); 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)) cs3431
Dropping tables DROP TABLE <tableName> cs3431
Adding/Dropping Columns ALTER TABLE <tableName> ADD <col> <type>; ALTER TABLE <tableName> DROP COLUMN <col>; cs3431
Adding/Dropping Constraints ALTER TABLE <tableName> ADD [CONSTRAINT <cName>] … ALTER TABLE <tableName> DROP CONSTRAINT <cName> cs3431
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 <tableName> VALUES (…) eg: INSERT INTO Student VALUES (1, ‘Dave’); • Delete all values from a table DELETE FROM <tableName> 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 legalinstance of a relation is one that satisfies all specified ICs. • DBMS should not allow illegal instances. cs3431
Constraints in Relational Model • Key constraints • Foreign Key constraints • (More constraints later) cs3431
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. cs3431
Keys: Example Student Is <sNumber> a key ? cs3431
Primary Key Constraints • If multiple keys, one of them is chosen to be the Primary Key. • E.g.: PRIMARY KEY (Student) = <sNumber> • Restriction: • Primary key attributes cannot take null values cs3431
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) = <sNumber> CANDIDATE KEY (Student) = <sName> • Note: Attribute of unique key may have null values ! cs3431
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 ? cs3431
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 cs3431
Keys: Example Student Primary Key: <sNumber> Candidate key: <sName> Some superkeys: {<sNumber, address>, <sName>, <sNumber>, <sNumber, sName> <sNumber, sName, address>} 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) 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! cs3431
Enrolled (referencing relation) Students (referenced relation) Primary Key Foreign Key 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). 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. cs3431
Foreign Keys: More Examples Dept (dNumber, dName) Person (pNumber, pName, dept) PRIMARY KEY (Dept) = <dNumber> PRIMARY KEY (Person) = <pNumber> FOREIGN KEY Person (dept) REFERENCES Dept (dNumber) Persons working for Depts Person (pNumber, pName, father) PRIMARY KEY (Person) = <pNumber> FOREIGN KEY Person (father) REFERENCES Person (pNumber) Person and his/her father cs3431
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. 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) Primary Key Foreign Key cs3431
Enforcing Referential Integrity Enrolled (referencing relation) Students (referenced relation) Deletion: What if an Enrolled tuple is deleted? Primary Key Foreign Key cs3431
Enforcing Referential Integrity Enrolled (referencing relation) Students (referenced relation) 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. Primary Key Foreign Key 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 ) 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 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. cs3431
Relational Model: Summary • Structures • Relations (Tables) • Attributes (Columns, Fields) • Constraints + Constraint Enforcement • Domain Constraint • Key • Primary key, candidate key (unique) • Super Key • Foreign Key cs3431