Lecture Note 5
- Sturcture of relational databases
- collection of tables with unique name -> RELATION
- row of the table (entry) -> TUPLE
-
column of the table -> ATTRIBUTE
- specific instance of RELATION (set of TUPLEs) -> RELATION INSTANCE
- set of permitted values of each ATTRIBUTEs -> DOMAIN of ATTRIBUTE
-
DOMAINs being indivisible -> ATOMIC DOMAIN
- Logical design of the db -> DATABASE SCHEMA
- Programming language notion of type definition -> RELATION SCHEMA
- Superkey: subset of attributes of the relation which satisfies:
- no two elements have same values on all attributes in the superkey
-
Candidate key: no proper subet is a superkey (minimal superkey)
-
primary key: candidate key chosen by db designer to primarily idenfy tuples within a relation
- foreign key constraints: attribute A from relation r1 => primary key B from relation r2 ; value of A for each tuple in r1 == value of B for some tuple in r2
e.g.
┌───────────────────────────────────────────────────┐ │ instructor(ID, name, dept_name, salary) │ : referencing relation └──────────────────────────────────┬────────────────┘ ┌────────┘ │ ▼ ┌───────────────────────────────────────────────────┐ │ department(dept_name, building, budget) │ : reference relation └───────────────────────────────────────────────────┘
- There could be n to 1 mapping between referencing relation / reference relation
- composite primary key: multiple attributes form one key
e.g. create table instructor ( ID varchar(5), name varchar(20) not null, name varchar(20) not null, name varchar(20) not null, name varchar(20) not null, )
create table section
primary key (course_id, sec_id, semeters, year), foreign key (course_id) referenced relation foreign key (classroom_number)
Relational query language
pure languages - relational algebra - tuple relational calculus - domain relational calculus
relational algebra
- procedural language
composition of relation algebra is also a relation
- consists of six basic operators
- select (unary) $\sigma$
- allow comparison, combination (includes set operation)
- project (unary) $\Pi$
- selecting only some of the attributes
- union $\cup$
- compatible domain: two relations should have save arity (no. of attributes)
- when attributes have associated types, type of ith ittributes of both input relations must be the same - -
- set difference $-$
- compatible domain: two relations should have save arity (no. of attributes)
- cartesian product $\times$
- combine information from any two relation
- for same attibute name appears in two relation, we specify them by adding relation name (e.g. [instructor.ID], [class.ID])
- join (= selection from cartesian product) $\outerjoin$
- getting only tuples that matches the preposition
- select (unary) $\sigma$
- assignment operation : giving a name to a certain query
- rename operation: shortcut of relational algebra expression
- rename the name of the relation + attributes
- only
renameoperation can change the name of attribute
equivalent query: not same query, but gives same result on any database