CSCI 204 Introduction to Computer Science II

advertisement
CSCI 305 – Fall 2013
The Entity-Relationship Model
Based on Slides by Prof. Brian King
Why model?
• HACKER mentality  BAD!
• THINK before CODING  GOOD!
• Modeling in any software development is an important
discipline
– Forces you to think abstractly about your program
– Most modeling approaches involve graphical views that allow
you to discuss with other teammates, other non-CS folks
– Models are fluid, dynamic, easy to change
• Released software is NOT!
• Database modeling
– Makes it easy to extract database schema that makes sense
– Makes it easy to understand queries to be made
– Learning to model will provide a formal process to take you
from ideas to a database schema
• First, how do we get ideas about a database to
an ER design?
– Our first topic
• Convert an ER diagram to a full relational
schema
– Our next topic
Entity Relationship Model
• The E-R Model
– A very common database modeling method
– An abstract and conceptual representation of data
• Provides mechanism to sketch database schema designs
– Depict structure of data
– Constraints can be depicted, operation cannot
• Use during analysis and design of a database-centric system
– For now, take a step back and forget about relations and tables
• Yields a graphical view of model called Entity-Relationship
Diagram
– ER Diagram
– ERD
ER Diagrams
• Entity:
– An abstract object, or "thing“, similar to OOP concept
of object
• Entity Set:
– A collection of similar entities
• Attributes:
– Properties of the entities in that set
– Simple values (e.g, integers, characters, dates, strings)
• ERD:
– Entity set = rectangle
– Attribute = oval
• Has a line to the rectangle representing its entity set
Examples
SSN
Employee
name
hireDate
• Entity Set: Employee
– Every employee entity in the set has three
attributes
Example
name
manf
Beers
• Entity set Beers has two attributes, name and
manf
• Each Beers entity has values for these two
attributes
– (Railbender,Erie Brewing)
Instance of an Entity Set
• An instance of an entity set stores a specific
set of entities
– Each entity is a tuple containing specific values for
each attribute
– This is conceptual only (database not created yet!)
name
SSN
hireDate
Joe Worker
123456789
2010-04-20
Bob Slacker
987654321
2009-03-19
Jane Busybee
248218341
2009-08-23
Donna Sleeper
579247529
2010-09-01
Relationships
• A relationship connects two or more entity
sets
• In ERD, we use a diamond, with lines to each
of the entity sets involved
Example: Relationships
name
addr
Bars
name
Beers
Sells
license
Frequents
Note:
license =
beer, full,
none
name
Likes
Drinkers
manf
addr
Bars sell some
beers.
Drinkers like
some beers.
Drinkers frequent
some bars.
Example
• Students Take Courses
• Professors Teach Courses
• Professors Advise Students
Relationship Set
• An entity has a "value"
– The value of its attributes
• An entity set has a "value"
– The set of entities that belong to it
– Example:
• The set of all bars
• The set of all beers
– An instance of the entity set is a specific set of values
• A relationship has a "value"
– Called a relationship set
– A set of entities with values for each related entity
Example: Relationship Set
• Relationship Sells
– We might have a relationship set like:
Bar
Beer
Lewisburg Hotel
Bud
Lewisburg Hotel
Railbender
The Chameleon
Bud
The Chameleon
Heineken
Multiplicities in relationships
• Multiplicities specify a constraint between two
entities
– Tell us something about how members are related
• Our multiplicity constraints:
– Many-many
– Many-one
– One-one
Visual Example
Many-One Relationships
• R is a many-one relationship between E and F
if each entity in E can be connected to at most
one entity in F by R
• Example:
– Favorite, from Drinkers to Beers
– A drinker can have at most one favorite beer
– A beer can be the favorite of any number of
drinkers, including none
One-One Relationships
• R is a one-one relationship between E and F if
R is many-one between E and F and many-one
between F and E
• Example:
– Relationship BestSeller between entity sets Manfs
and Beers
– A beer cannot be made by more than one
manufacturer, and no manufacturer can have
more than one best-seller (assuming no ties)
Many-Many Relationships
• R is a many-many relationship between E and
F if R is neither one-one or many-one
• Example:
– A relationship Sells between beers and bars
• a bar sells many beers
• a beer is sold by many bars
Representing "Multiplicity"
• many-one relationship
– arrow entering the "one" side
• one-one relationship
– arrow entering both sides
• many-many relationship
– no arrows
Example
Example:
President
Runs
Country
Multiway Relationships
• Sometimes, we need a relationship that
connects more than two entity sets
– Not often. Occasionally three entity sets are
related, very rarely more
• Suppose that drinkers will only drink certain
beers at certain bars
– Our three binary relationships Likes, Sells, and
Frequents do not allow us to make this distinction
– But a 3-way relationship would
Example: Multiway Relationship
name
license
addr
name
Bars
manf
Beers
Preferences
Drinkers
name
addr
Relationships as roles
• No restriction on quantity of relationships between entity
sets
• When you have more than one distinct relationship path
between entity sets, useful to consider the "roles" between
entity sets
– The same entity sets can have different roles
– Called Parallel Relationships
EnrolledIn
Student
Course
TA
Relationships as roles
• Sometimes a single entity set will appear more
than once in a relationship
– Label the lines with the role of the entity for clarity
• Example:
– A course can have other courses as a prerequisite
Requirement
Course
Prereq
Requires
Requirer
Requirement
CSCI 204
CSCI 203
Attributes on Relationships
• Sometimes it is convenient to attach an
attribute to a relationship
– The value of the attribute depends on the value of
the related entities in the relationship set
price
name
address
Bar
name
Sells
Beer
manf
Multiway to Binary
• Some data models often limit relationships to be binary
• ER does not restrict this; yet it is good to know how to
convert to binary
– Solution: Create connecting entity sets whose entities are the
tuples in the relationship set
• Example:
Person
Bar
Sales
Date
Beer
Multiway to Binary
Person
Person
-Of
Date
Sale
Bar-Of
Bar
BeerOf
Beer
Better… rethink your strategy
Person
Purchases
Visits
Bar
Date
Sells
Beer
Subclasses
• Subclass
– A special case of an entity set
– F is a subclass of E if each entity in F is an entity of E
– F must have at least one attribute or participate in at
least one relationship that E does not
– (OOP idea of a subclass)
• Example:
– Ales are a kind of beer
– Comedy is a kind of movie type
– Dogs are a kind of Animal
Subclass in an ERD
• In ERD, use isa relationship with a triangle
• Isa triangles indicate the subclass relationship
between entities
– Points to the superclass
• Example
name
Beers
isa
color
Ales
manf
E/R vs. OO subclasses
• IN OO, objects are in one class only
– Subclasses inherit from superclasses
• E/R entities have representatives in all subclasses
to which they belong
– Rule: if entity e is represented in a subclass, then e is
represented in the superclass (and recursively up the
tree)
• Example (from book):
– Movie: Who Framed Roger Rabbit
• Movie isa Cartoon
• Movie isa Murder-Mystery
• Will have attributes for all the above
Exercise 4.1.3
Section 4.2
• Section 4.2 – What makes a good design for
an ER model?
– READ IT
– Summary:
• KISS
– Avoid redundancy, unnecessary entities and relationships
• Stick to the spec
• Choose the right design elements
– Know when to use an attribute vs. an entity
Sec. 4.3
Constraints in the E/R model
Key
• Key
– Consistent with what we have learned
– A key is a set of attributes for one entity set s.t. no
two entities in this set agree on all attributes in
the key
• Every entity set must have a key
• In your ERD:
– Underline the key attributes(s)
– In an isa hierarchy, only the root entity set has a
key (and serves as key for all subclasses)
Example:
name
Beers
isa
color
Ales
manf
Example: Multi-attribute Key
dept
number
Courses
hours
room
Referential Integrity
• Referential integrity – says a value in one context must
appear in another.
– In terms of cardinality, it's a "one-and-only-one" constraint
• IN E/R diagram, enforced with a "rounded" arrow.
– Rounded arrow end indicates one and only one entity
must exist in relationship
• Example
• We'll introduce "crow's foot notation" shortly, which
provides a common means for representing cardinality
Degree Constraints
• Attach a bounding number to an edge
connecting an entity to limit the number of
entities in a relationship
Weak Entity Sets
• With a specified relationship, sometimes the key
for an entity is not enough to enforce uniqueness
• Example: Consider a Plays-On relationship
between Players and Team
– Players have two attributes: name and number; Team
has one: name
– A name is a possible key for a player
• but there might be two players out there with the same
name
– A number for a player is not a key
• Different teams can use the same player numbers
– However, we could use number with the team name
• We say that Players is a weak entity set
Weak Entity Set
• Entities of a weak entity set can not be
determined alone
• Entity set E is said to be weak if, in order to
identify entities of E uniquely, we need to:
– follow one or more many-one relationships from E
– include the key of those related entities
• These many-one relationships are called
supporting relationships for E
– The corresponding entity sets reached from E are
supporting entity sets.
IN E/R Diagrams
number
name
Players
Plays-On
name
Teams
Double rectangle for the
weak entity set
Double diamond for
supporting many-one
relationship
Rounded arrow –
because each player
needs a team (this
assists with the key)
Weak Entity Set Rules
• Requirement for Weak Entity Sets:
– Its key consists of zero or more of its own attributes AND
keys from supporting entities sets
• Formally stated requirements for Supporting
Relationship R between weak set E and Supporting Set
F
– R must be a binary, many-one from E to F
– R must have referential integrity from E to F
• each E must have exactly one F
• (i.e, must have one_and_only_one end (i.e. rounded arrow)
– The attributes that F supplies for E must be the key
attributes of F
– If F is weak, then there must exist another supporting set G
to which F is connected by a supporting relationship
Don't Overuse Weak Entity Sets!
• Beginners often doubt that anything could be a key by
itself
– Often end up with many weak entity sets
• In reality, we usually create unique identifiers for entity
sets
– SSN
– Driver's license number
– Student ID
• Weak entity sets are used when there is no "global
authority" capable of creating unique IDs
– Example: It is unlikely to ever have a global mechanism for
assigning unique player numbers across all teams in the
world!
Entity Sets Vs. Attributes
• An entity set should satisfy at least one of the
following conditions:
– It is more than the name of something; it has at least
one non-key attribute
– It is the "many" in a many-one or many-many
relationship.
• An attribute should not be introduced if it is
redundant
– You should not have to change the same information
in two or more places!
– We will deal with this when we explore FDs next
chapter
Example: GOOD
name
Beers
BrewedBy
name
Manf
addr
• Manfs deserves to be an entity because of the non-key
attribute addr
• Beers deserves to be an entity set because it is the "many" of
the many-one relationship.
Example: BAD
name
Beers
manf
BrewedBy
name
Manf
addr
Manufacturer of the beer is stated twice: as an attribute
AND a related entity!
Example: BAD
name
Beers
manf
addr
Manufacturer address will be stored repeatedly
Example: BAD
name
Beers
BrewedBy
name
Manf
Since the manufacturer is nothing but a name, and is not
at the "many" end, it should not be an entity set.
Example: OK
name
Beers
manf
This may be OK if we only care about the name of the
manufacturer for each entity.
E/R diagrams to Relations
Rules
• Entity set  relation
– Attributes  attributes of the relation
• Relationships  relations whose attributes
are only:
– Keys of connected entity sets
– Attributes of relationship itself
• What about weak entity sets? isa
relationships?
Entity Set  Relation
name
manf
Beers
Relation: Beers(name, manf)
54
Relationship -> Relation
name
addr
name
Drinkers
husband
1
Likes
Beers
2
Favorite
Buddies
Likes(drinker, beer)
wife
Married
manf
Favorite(drinker, beer)
Buddies(name1, name2)
Married(husband, wife)
Combining Relationships
• You can combine the following into one
relation:
– The relation for an entity-set E
– The relations for many-one relationships for which
E is the "many"
• Example from previous diagram:
– Drinkers(name, addr)  An entity
– Favorite(drinker, beer)  A relation of which
drinkers is the "many"
– Combine to make Drinker(name, addr, favBeer)
Risk with Many-Many Relationships
• Combining Drinkers with Likes would be a
mistake. It leads to redundancy, as:
name
addr
Sally 123 Maple
Sally 123 Maple
Redundancy
beer
Bud
Miller
Handling Weak Entity Sets
• A relation for a weak entity set must include
attributes for its complete key (including keys
in supporting entity sets), as well as its own
nonkey attributes
• A supporting relationship is redundant and
yields NO relation, unless it has its own
attributes.
Example: Weak Entity Set -> Relation
name
time
Logins
name
At
Hosts
Hosts(hostName, location)
Logins(loginName, hostName, loginTime)
At(loginName, hostName, hostName2)
At becomes part of
Logins
Must be the same
location
Subclasses: Three approaches
1. Object-Oriented
– One relation per subset of subclasses, with all
relevant attributes; need to enumerate all
subclasses and assign entities accordingly.
2. Use nulls
– One relation total; entities have NULL in
attributes that don't belong to them
3. E/R style
– One relation for each subclass
•
•
Key attributes
Attributes of that subclass
Example: Subclass -> Relations
name
Beers
isa
color
Ales
manf
Object-Oriented
name
manf
Bud Anheuser-Busch
Beers
name
Summerbrew
manfcolor
Pete’s
dark
Ales
Good for queries like “find the
color of ales made by Pete’s.”
Using Nulls
name
manf
Bud
Anheuser-Busch
Summerbrew Pete’s
Beers
color
NULL
dark
Saves space unless there are lots
of attributes that are usually NULL.
63
E/R Style
name
manf
Bud
Anheuser-Busch
Summerbrew Pete’s
Beers
name
Summerbrew
color
dark
Ales
Good for queries like
“find all beers (including
ales) made by Pete’s.”
64
Exercise 4.4.1-2
Exercise 4.5.1
Exercise 4.5.2
a) Revise the
diagram to
reflect this
viewpoint
b) Convert the
new diagram
to relations
Exercise 4.6.1
Crows foot notation
• A common method for representing
cardinality in a relationship is "crows foot
notation"
O or more
1 or more
1 and only 1 (exactly 1)
0 or 1
Examples
One instructor teaches one or
more courses
one or more students take one
or more courses
Every person has exactly one
birthplace location; Every
location has 0 or more people
born there
Download