Links - NETLAB - University of Kentucky
Download
Report
Transcript Links - NETLAB - University of Kentucky
CS 405G: Introduction to
Database Systems
Instructor: Jinze Liu
Fall 2009
Review
A data model is
What are the two terms used by ER model to
describe a miniworld?
a group of concepts for describing data.
Entity
Relationship
Student (sid: string, name:
string, login: string, age: integer,
gpa:real)
What makes a good database design
4/13/2015
10101
11101
2
Topics Next
More case study
Conversion of ER models to Schemas
4/13/2015
3
ER Case study
Design a database representing cities, counties, and states
For states, record name and capital (city)
For counties, record name, area, and location (state)
For cities, record name, population, and location (county and
state)
Assume the following:
4
4/13/2015
Names of states are unique
Names of counties are only unique within a state
Names of cities are only unique within a county
A city is always located in a single county
A county is always located in a single state
4/13/2015
4
Case study : first design
County area information is repeated for every city in
the county
Redundancy is bad.
What else?
State capital should really be a city
Should “reference” entities through explicit relationships
name
name
Cities
population
In
States
capital
county_name
county_area
4/13/2015
5
Case study : second design
Technically, nothing in this design could prevent a city in
state X from being the capital of another state Y, but oh
well…
name
Cities
population
In
IsCapitalOf
name
Counties
In
States
name
area
4/13/2015
6
Database Design
4/13/2015
7
A Relation is a Table
Attributes
(column
headers)
Tuples
(rows)
8
name
Winterbrew
Bud Lite
manf
Pete’s
Anheuser-Busch Beers
Schemas
Relation schema = relation name + attributes, in order
(+ types of attributes).
Example: Beers(name, manf) or Beers(name: string, manf:
string)
Database = collection of relations.
Database schema = set of all relation schemas in the
database.
9
Why Relations?
Very simple model.
Often matches how we think about data.
Abstract model that underlies SQL, the most important
database language today.
10
But SQL uses bags, while the relational model is a set-based
model.
From E/R Diagrams to Relations
Entity sets become relations with the same set of
attributes.
Relationships become relations whose attributes are only:
11
The keys of the connected entity sets.
Attributes of the relationship itself.
Entity Set -> Relation
name
manf
Beers
Relation: Beers(name, manf)
12
Relationship -> Relation
name
husband
addr
Drinkers
1
name
Likes
manf
Beers
2
Buddies
Favorite
wife
Married
Likes(drinker, beer)
Favorite(drinker, beer)
Buddies(name1, name2)
Married(husband, wife)
13
Combining Relations
It is OK to combine the relation for an entity-set E with
the relation R for a many-one relationship from E to
another entity set.
Example: Drinkers(name, addr) and Favorite(drinker, beer)
combine to make Drinker1(name, addr, favBeer).
14
Risk with Many-Many Relationships
Combining Drinkers with Likes would be a mistake. It
leads to redundancy, as:
name
addr
beer
Sally 123 Maple Bud
Sally 123 Maple Miller
Redundancy
15
Handling Weak Entity Sets
Relation for a weak entity set must include attributes for
its complete key (including those belonging to other
entity sets), as well as its own, nonkey attributes.
A supporting (double-diamond) relationship is redundant
and yields no relation.
16
Example
name
time
17
Logins
name
At
Hosts
Example
name
time
Logins
name
At
Hosts
Hosts(hostName)
Logins(loginName, hostName, time)
At(loginName, hostName, hostName2)
At becomes part of
Logins
18
Must be the same
A (Slightly) Formal Definition
A database is a collection of relations (or tables)
Each relation is identified by a name and a list of
attributes (or columns)
Each attribute has a name and a domain (or type)
Set-valued attributes not allowed
19
Schema versus instance
Schema (metadata)
Specification of how data is to be structured logically
Defined at set-up
Rarely changes
Instance
Content
Changes rapidly, but always conforms to the schema
Compare
to type and objects of type in a programming
language
4/13/2015
20
Example
Schema
Student (SID integer, name string, age integer, GPA float)
Course (CID string, title string)
Enroll (SID integer, CID integer)
Instance
4/13/2015
{ h142, Bart, 10, 2.3i, h123, Milhouse, 10, 3.1i, ...}
{ hCPS116, Intro. to Database Systemsi, ...}
{ h142, CPS116i, h142, CPS114i, ...}
21
Relational Integrity Constraints
Constraints are conditions that must hold on all valid
relation instances. There are four main types of
constraints:
1.
Domain constraints
1.
2.
3.
4.
4/13/2015
The value of an attribute must come from its domain
Key constraints
Entity integrity constraints
Referential integrity constraints
22
Primary Key Constraints
A set of fields is a candidate key for a relation if :
1. No two distinct tuples can have same values in all key fields,
and
2. This is not true for any subset of the key.
Part 2 false? A superkey.
If there’s >1 key for a relation, one of the keys is chosen (by
DBA) to be the primary key.
E.g., given a schema Student(sid: string, name: string, gpa:
float) we have:
4/13/2015
sid is a key for Students. (What about name?) The set {sid,
gpa} is a superkey.
Jinze Liu @ University of Kentucky
23
Key Example
CAR (licence_num: string, Engine_serial_num: string,
make: string, model: string, year: integer)
4/13/2015
What is the candidate key(s)
Which one you may use as a primary key
What are the super keys
24
Entity Integrity
Entity Integrity: The primary key attributes PK of each
relation schema R in S cannot have null values in any tuple
of r(R).
4/13/2015
Other attributes of R may be similarly constrained to
disallow null values, even though they are not members of the
primary key.
25
Foreign Keys, Referential Integrity
Foreign key : Set of fields in one relation that is used to
`refer’ to a tuple in another relation. (Must correspond
to primary key of the second relation.) Like a `logical
pointer’.
E.g. sid is a foreign key referring to Students:
Student(sid: string, name: string, gpa: float)
Enrolled(sid: string, cid: string, grade: string)
If all foreign key constraints are enforced, referential
integrity is achieved, i.e., no dangling references.
Can you name a data model w/o referential integrity?
4/13/2015
Links in HTML!
Jinze Liu @ University of Kentucky
26
Foreign Keys
Only students listed in the Students relation should be
allowed to enroll for courses.
Enrolled
sid
53666
53666
53650
53666
cid
Carnatic101
Reggae203
Topology112
History105
grade
C
B
A
B
Students
sid
53666
53688
53650
name
login
Jones jones@cs
Smith smith@eecs
Smith smith@math
age
18
18
19
gpa
3.4
3.2
3.8
Or, use NULL as the value for the foreign key in the
referencing tuple when the referenced tuple does not
exist
4/13/2015
Jinze Liu @ University of Kentucky
27
In-Class Exercise
(Taken from Exercise 5.16)
Consider the following relations for a database that keeps track of student
enrollment in courses and the books adopted for each course:
STUDENT(SSN, Name, Major, Bdate)
COURSE(Course#, Cname, Dept)
ENROLL(SSN, Course#, Quarter, Grade)
BOOK_ADOPTION(Course#, Quarter, Book_ISBN)
TEXT(Book_ISBN, Book_Title, Publisher, Author)
Draw a relational schema diagram specifying the foreign keys for this schema.
4/13/2015
28
In-Class Exercise
(Taken from Exercise 5.16)
Consider the following relations for a database that keeps track of
student enrollment in courses and the books adopted for each
course:
STUDENT(SSN, Name, Major, Bdate)
COURSE(Course#, Cname, Dept)
ENROLL(SSN, Course#, Quarter, Grade)
BOOK_ADOPTION(Course#, Quarter, Book_ISBN)
TEXT(Book_ISBN, Book_Title, Publisher, Author)
Draw a relational schema diagram specifying the foreign keys
for
29 this schema.
Jinze Liu @ University of Kentucky 4/13/2015
Other Types of Constraints
Semantic Integrity Constraints:
4/13/2015
based on application semantics and cannot be expressed by
the model per se
e.g., “the max. no. of hours per employee for all projects he
or she works on is 56 hrs per week”
A constraint specification language may have to be used to
express these
SQL-99 allows triggers and ASSERTIONS to allow for some
of these
30
Update Operations on Relations
Update operations
31
INSERT a tuple.
DELETE a tuple.
MODIFY a tuple.
Constraints should not be violated in updates
Jinze Liu @ University of Kentucky
4/13/2015
Example
We have the following relational schemas
Student(sid: string, name: string, gpa: float)
Course(cid: string, department: string)
Enrolled(sid: string, cid: string, grade: character)
We have the following sequence of database update
operations. (assume all tables are empty before we apply
any operations)
INSERT<‘1234’, ‘John Smith’, ‘3.5> into Student
sid
1234
32
name
John Smith
gpa
3.5
Jinze Liu @ University of Kentucky
4/13/2015
Example (Cont.)
INSERT<‘647’, ‘EECS’>
into Courses
INSERT<‘1234’, ‘647’,
‘B’> into Enrolled
UPDATE the grade in
the Enrolled tuple with
sid = 1234 and cid =
647 to ‘A’.
DELETE the Enrolled
tuple with sid 1234 and
cid 647
33
sid
1234
name
John Smith
cid
647
department
EECS
sid
cid
grade
1234
647
A
B
Jinze Liu @ University of Kentucky
4/13/2015
gpa
3.5
Exercise
INSERT<‘108’,
‘MATH’> into Courses
INSERT<‘1234’, ‘108’,
‘B’> into Enrolled
INSERT<‘1123’, ‘Mary
Carter’, ‘3.8’> into
Student
34
sid
1234
name
John Smith
gpa
3.5
1123
Mary Carter
3.8
cid
647
108
department
EECS
MATH
sid
1234
cid
108
Jinze Liu @ University of Kentucky
grade
B
4/13/2015
Exercise (cont.)
A little bit tricky
INSERT<‘1125’, ‘Bob
Lee’, ‘good’> into
Student
INSERT<‘1123’, NULL,
‘B’> into Enrolled
Fail due to domain
constraint
Fail due to entity
integrity
INSERT <‘1233’,’647’,
‘A’> into Enrolled
Failed due to
referential integrity
35
sid
1234
name
John Smith
gpa
3.5
1123
Mary Carter
3.8
cid
647
department
EECS
108
MATH
sid
1234
cid
108
Jinze Liu @ University of Kentucky
grade
B
4/13/2015
Exercise (cont.)
A more tricky one
UPDATE the cid in the
tuple from Course
where cid = 108 to
109
36
sid
1234
name
John Smith
gpa
3.5
1123
Mary Carter
3.8
cid
647
department
EECS
108
109
MATH
sid
1234
cid
108
109
Jinze Liu @ University of Kentucky
grade
B
4/13/2015
Update Operations on Relations
In case of integrity violation, several actions can be
taken:
37
Cancel the operation that causes the violation (REJECT
option)
Perform the operation but inform the user of the violation
Trigger additional updates so the violation is corrected
(CASCADE option, SET NULL option)
Execute a user-specified error-correction routine
Jinze Liu @ University of Kentucky
4/13/2015