The Relational Data Model zE.F Codd A Relational Data Model for Large Shared Data Banks (1970) zThe basic model used by Access, Oracle, DB2 zAll Relational DBMSs depart from the basic model
Components zThe concepts available to represent the UoD yRelations (tables) of yTuples (rows), of yColumns (fields) containing values drawn from a Domain zBase Relations - facts zDerived Relations - yRelations constructed by extracting, combining base relations
Relation DeptnoDnameLoc 10AccountingNew York 20ResearchDallas 30SalesChicago 40OperationsBoston Relation tuple Column (field) domain string city name general specific integer 0<int<99
Relations There is only one data structure in the relational data model - the relation: Every relation in a database must have a distinct name. Every column in a relation must have a distinct name within the relation. All entries in a column must be of the same kind. The ordering of columns in a relation is not significant. Each row in a relation must be distinct. The ordering of rows is not significant. Each cell or column/row intersection in a relation should contain only a so-called atomic value.
Primary Keys, Foreign Keys and Domains Each relation must have a primary key. This is to enforce the property that duplicate rows are forbidden in a relation. A primary key is one or more columns of a table whose values are used to uniquely identify each of the rows in a table. Foreign keys are the means of interconnecting the data stored in a series of disparate tables. A foreign key is a column or group of columns of some table which draws its values from the same domain as the primary key of some related table in the database. Domains are pools of values from which actual values appearing in the columns of a table are drawn. A special character is used in relational systems to indicate incomplete or unknown information - the character null. This character which is distinct from zero or space is particularly useful in the context of primary-foreign key links
Two approaches to defining a derived relation zRelational Algebra zDefine a new, derived relation as a sequence of operations on Relations zBased on operational algebra z Relational Calculus z Defines a new, derived relation as a proposition which is true for every tuple in the new table z Based on predicate calculus
Algebra?? zAlgebra: x + 6 = 10 - what’s x? zAn Algebra: ya SET of values defined by INTENSION xe.g. whole numbers - 0,1,2,3,.. yOPERATORS which combine values to compute new values xe.g. + * - / - (4+5)*6 = 120 yOperators can only produce values in the original set - ‘closure’
Is it an Algebra?? zWhole numbers and + - * / y5 - 3 = 2 but = -2 y 6/3 = 2 but 6/4 = 1.5 zSo not an algebra ycan redefine / as remainder ye.g 6/4 = 1 - then / OK zIntegers ( +ve and -ve) and + - * y8 - 9 = -1 and = 1 y3 * 4 = 12 and 3 * -4 = -12
More Algebra zOperators act on different number of values y1 unary - y2 - + * / zOrder may matter y2 + 3 = ybut 6/3 not = 3/6 zBrain teazer - make 13 from 2,3,5,7 y( (3 * 7) + 5 ) /2 = 13
Relational Algebra zBase operations yRESTRICT, PROJECT, PRODUCT zConvenience operations yEQUI-JOIN, (Natural) JOIN, Outer Joins zSet operations yUNION, INTERSECTION, DIFFERENCE, DIVISION
The Relational Algebra Restrict Project Join Union Intersect Difference Division
EMP-DEPT example Three relations: Department : DEPT Employee : EMP Salary Grade : SALGRADE
DEPT Table deptnodnamelocation 10AccountingNew York 20ResearchDallas 30SalesChicago 40OperationsBoston
EMP - table ( reduced) EmpnoEnameMgr Sal Deptno 7369SMITH7902 £ ALLEN7698£1, WARD7698£1, JONES7839£2, MARTIN7698£1, BLAKE7839£2, CLARK7839£2, SCOTT7566£3, KING£5, TURNER7698£1, ADAMS7788£1, JAMES7698 £ FORD7566£3, MILLER7782£1,
Salgrade Table GradeLosalHisal 1£700.00£1, £1,201.00£1, £1,401.00£2, £2,001.00£3, £3,001.00£99,999.00
Restrict Subset of the Rows in a Table zRESTRICT EMP WHERE sal > 2000 empnoename mgrsaldeptno 7566JONES7839£2, BLAKE7839£2, CLARK7839£2, SCOTT7566£3, KING£5, FORD7566£3,
Project: subset the Columns in a Table zPROJECT EMP z[EMPNO, SAL,DEPTNO] Empnosal Deptno 7369£ £1, £1, £2, £1, £2, £2, £3, £5, £1, £1, £ £3, £1,
Restrict-Project RESTRICT EMP WHERE SAL >2000 PROJECT EMP[EMPNO, SAL, DEPTNO] Could you reverse these operations - always? ( project then restrict?) call this EMPX empnosaldeptno 7566£2, £2, £2, £3, £5, £3,
Product: Combine each row of one table with each row of the other: PRODUCT DEPT with EMPX empnosal EMPX. DEPT. DnameLoc Deptno Depno 7566£2, AccountingNew York 7698£2, AccountingNew York 7782£2, AccountingNew York 7788£3, AccountingNew York 7839£5, AccountingNew York 7902£3, AccountingNew York 7566£2, ResearchDallas 7698£2, ResearchDallas 7782£2, ResearchDallas 7788£3, ResearchDallas 7839£5, ResearchDallas 7902£3, ResearchDallas
7566£2, SalesChicago 7698£2, SalesChicago 7782£2, SalesChicago 7788£3, SalesChicago 7839£5, SalesChicago 7902£3, SalesChicago 7566£2, OperationsBoston 7698£2, OperationsBoston 7782£2, OperationsBoston 7788£3, OperationsBoston 7839£5, OperationsBoston 7902£3, OperationsBoston
Product : zDEPT has 4 records zEMPX has 6 records zso DEPT x EMPX has 24 records zbut not very useful
Equi-Join : Product restricted to rows which have matching common domain Empno sal EMPX. Dept. Dname Loc DeptnoDeptno 7566£2, ResearchDallas 7698£2, SalesChicago 7782£2, AccountingNew York 7788£3, ResearchDallas 7839£5, AccountingNew York 7902£3, ResearchDallas
Natural Join: Equi-join projected with the duplicate column removed empnosal deptnodnameloc 7566£2, ResearchDallas 7698£2, SalesChicago 7782£2, AccountingNew York 7788£3, ResearchDallas 7839£5, AccountingNew York 7902£3, ResearchDallas
Basic SQL zSELECT * FROM EMP WHERE SAL > 2000; zSELECT ENAME,SAL,DEPTNO FROM EMP; zSELECT ENAME,SAL,DEPTNO FROM EMP WHERE SAL > 2000; zSELECT * FROM EMP, DEPT WHERE SAL > 2000; zSELECT * FROM EMP,DEPT WHERE SAL > 2000 AND EMP.DEPTNO = DEPT.DEPTNO; zSELECT EMPNO, SAL, DEPTNO, DNAME FROM EMP,DEPT WHERE SAL > 2000 AND EMP.DEPTNO = DEPT.DEPTNO;