Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Database Basic Concepts

Download as pdf or txt
Download as pdf or txt
You are on page 1of 77

Translation of ER-diagram into

Relational Schema

Dr. Sunnie S. Chung


CIS430/530
Learning Objectives
 Define each of the following database terms
 Relation
 Primary key
 Foreign key
 Referential integrity
 Field
 Data type
 Null value

 Discuss the role of designing databases in the


analysis and design of an information system
 Learn how to transform an entity-relationship (ER)
Diagram into an equivalent set of well-structured
9.2
relations
9.4
Process of Database Design

• Logical Design
– Based upon the conceptual data model
– Four key steps
1. Develop a logical data model for each known user
interface for the application using normalization
principles.
2. Combine normalized data requirements from all user
interfaces into one consolidated logical database model
3. Translate the conceptual E-R data model for the
application into normalized data requirements
4. Compare the consolidated logical database design with
9.6 the translated E-R model and produce one final logical
database model for the application
9.7
Relational Database Model
• Data represented as a set of related tables or
relations
• Relation
– A named, two-dimensional table of data. Each
relation consists of a set of named columns and
an arbitrary number of unnamed rows
– Properties
• Entries in cells are simple
• Entries in columns are from the same set of values
• Each row is unique
• The sequence of columns can be interchanged without
changing the meaning or use of the relation
• The rows may be interchanged or stored in any
9.8
sequence
Relational Database Model

• Well-Structured Relation
– A relation that contains a minimum
amount of redundancy and allows users
to insert, modify and delete the rows
without errors or inconsistencies

9.9
Transforming E-R Diagrams into
Relations

• It is useful to transform the conceptual data


model into a set of normalized relations
• Steps
1. Represent entities
2. Represent relationships
3. Normalize the relations
4. Merge the relations

9.10
Refining the ER Design for the
COMPANY Database

 Change attributes that represent


relationships into relationship types
 Determine cardinality ratio and
participation constraint of each
relationship type
ER Diagrams, Naming
Conventions, and Design Issues
Design Choices for ER
Conceptual Design
 Model concept first as an attribute
 Refined into a relationship if attribute is a
reference to another entity type

 Attribute that exists in several entity


types may be elevated to an independent
entity type
 Can also be applied in the inverse
Attributes

• An entity is represented by a set of


attributes, that is descriptive properties
possessed by all members of an entity set.
Example:
Customer = (customer-id, customer-name,
customer-street, customer-city)

Loan = (loan-number, amount)

• Domain – the set of permitted values for


each attribute
Attributes

• Composite identifier: Primary key composed of


more than one attribute
• Composite attribute: Attribute that can be
subdivided to yield additional attributes
• Simple attribute: Attribute that cannot be
subdivided
• Single-valued attribute: Attribute that has only a
single value
• Multivalued attributes: Attributes that have
many values

16
Attributes

• Multivalued (Set Valued) attributes: Attributes


that have many values and require creating:
– Several new attributes, one for each component of
the original multivalued attribute
– A new entity composed of the original multivalued
attribute’s components
• Derived attribute: Attribute whose value is
calculated from other attributes
– Derived using an algorithm

17
Figure 4.6 - Depiction of a
Derived Attribute

18
Attribute types:

– Simple and Composite attributes.

– Single-valued and Multi-valued attributes


• E.g. multivalued attribute: phone-numbers

– Derived attributes
• Can be computed from other attributes
• E.g. age, given date of birth
Multivalued Attributes
• Normalization Required to
First Nomal Form
• A multivalued attribute M of an entity E
is represented by a separate table EM
– Table EM has attributes corresponding to
the primary key of E and an attribute
corresponding to multivalued attribute M

– Eg: Create Dept_Location table from


Department table
Dept_Location( Dnumber, Dlocation)
Multivalued Attributes
– E.g. Multivalued attribute dependent-names
of employee is represented by a table
employee-dependent-names( employee-id,
dname)

– Each value of the multivalued attribute maps


to a separate row of the table EM
• E.g., an employee entity with primary key John
and dependents Johnson and Johndotir maps to
two rows:
(John, Johnson) and (John, Johndotir)
Composite Attributes
Transforming
Composite Attribute
• Flatten the Structure to One Attribute
eg: Address of Employee Table
• Flatten the Structure to Multiple
Attributes
eg: Name  Lname, MI, Fname of
Employee Table
• Making the Composite attribute into
Separate Table
Transforming
Composite Attribute 3
• Making a Composite Attribute into Separate
Table Customer_Address
Customer_Address
(Customer_Id, Street_Number, Street_Name,
Apt_Num, City, State, Zip, Country)
• More Query Power for Data Analytic on Address
• No Need to Access Big Customer Table for Address
Analytics
• Required Join with Address Table and Customer Table for
other Customer Information
Composite Attributes
• Composite attributes are flattened out by
creating a separate attribute for each
component attribute

– E.g. given entity set customer with composite


attribute name with component attributes
first-name and last-name the table
corresponding to the entity set has two
attributes
name.first-name and name.last-name
Alternative Notations
for ER Diagrams
 Specify structural constraints on
Relationships
 Replaces Cardinality ratio (1:1, 1:N, M:N) and
single/double line notation for Participation
constraints
 Associate a pair of integer numbers (min, max)
with each participation of an entity type E in a
relationship type R, where 0 ≤ min ≤ max and
max ≥ 1
Cardinality Ratio
(1:1, 1:N, M:N)
since
• 1:N :Each dept has at name dname

most one manager on ssn lot did budget


Manages.
Employees Manages Departments

Translation to
relational model?

1-to-1 1-to Many Many-to-1 Many-to-Many


Transforming E-R Diagrams into
Relations

– The primary key must satisfy the following


two conditions
a. The value of the key must uniquely identify
every row in the relation
9.29 b. The key should be nonredundant
9.30
Transforming E-R Diagrams into
Relations

Represent Relationships
– Binary 1:N Relationships
• Add the Primary key attribute (or attributes) of
the entity on the one side of the relationship as a
Foreign key in the relation on the other (N) side
• The one side migrates to the many side

9.31
Constraints on Binary
Relationship Types
 Cardinality ratio for a binary relationship
 Specifies maximum number of relationship
instances that entity can participate in

 Participation Constraint
 Specifies whether existence of entity depends
on its being related to another entity
 Types: total and partial
Attributes of Relationship
Types
 Attributes of 1:1 or 1:N relationship types
can be migrated to one entity type
 For a 1:N relationship type
 Relationship attribute can be migrated only to
entity type on N-side of relationship

 For M:N relationship types


 Some attributes may be determined by
combination of participating entities
 Must be specified as relationship attributes
Weak Entity Types

 Do not have key attributes of their own


 Identified by being related to specific entities
from another entity type

 Identifying relationship
 Relates a weak entity type to its owner

 Always has a total participation constraint


9.35
Transforming Binary 1:N
Relationships into Relations
• Relationship: CREATE TABLE ORDER(
CUSTOMER Places ORDER(s) Order_Number CHAR(1),
• ORDER Table BEFORE Order_Date DATE,
Relationship: Promised_Date DATE,
(Order_Number, Customer_ID CHAR(1),
Order_Date, Promised_Date) PRIMARY KEY
• ORDER Table AFTER (Order_Number),
Relationship: FOREIGN KEY (Customer_ID)
(Order_Number, REFERENCES
Order_Date, Promised_Date, CUSTOMER(Customer_ID));
Customer_ID)
Transforming E-R Diagrams into
Relations
– Binary or Unary 1:1
• Three possible options
a.Add the primary key of A as a foreign key of B
b.Add the primary key of B as a foreign key of A
c.Both

9.37
Binary 1 To 1 Relationship
Employee(Manager) MANAGES Department
EMPLOYEE
FNAME MINIT LNAME SSN BDATE ADDRESS SEX SALARY SUPERSSN DNO

John B Smith 123456789 09-Jan-55 731 Fondren, Houston, TX M 30000 987654321 5


Franklin T Wong 333445555 08-Dec-45 638 Voss, Houston, TX M 40000 888665555 5

Joyce A English 453453453 31-Jul-62 5631 Rice, Houston, TX F 25000 333445555 5


Ramesh K Narayan 666884444 15-Sep-52 975 Fire Oak, Humble, TX M 38000 333445555 5

James E Borg 888665555 10-Nov-27 450 Stone, Houston, TX M 55000 1


Jennifer S Wallace 987654321 20-Jun-31 291 Berry, Bellaire, TX F 43000 888665555 4

Ahmad V Jabbar 987987987 29-Mar-59 980 Dallas, Houston, TX M 25000 987654321 4


Alicia J Zelaya 999887777 19-Jul-58 3321 Castle, SPring, TX F 25000 987654321 4

DEPARTMENT
DNAME DNUMBER MGRSSN MGRSTARTDATE
Headquarters 1 888665555 19-Jun-71
Administration 4 987654321 01-Jan-85
Research 5 333445555 22-May-78
Automation 7 123456789 06-Oct-05
Transforming E-R Diagrams into
Relations

Represent Relationships
– Binary and higher M:N relationships
• Create another relation and include
primary keys of all relations as primary
key of new relation

9.39
9.40
Association Class to Table
ORDER LINE

Order_ Product_ Quantity_


Number ID Ordered

61384 M128 2
61384 A261 1
62807 A261 2
62807 R149 1
62009 R149 2
Transforming Binary M:N
Relationships into Relations
• Relationship Requests: CREATE TABLE ORDERLINE (
Order Requests Products Order_Number CHAR(10),
1. Create Table ORDERLINE Product_ID CHAR(10),
for Relationship Requests Quantity_Ordered Integer,
2. Add PK of each side of PRIMARY KEY (Order_Number,
Tables ( Order_Number, Product_ID),
Product_ID) as Foreign Keys FOREIGN KEY (Order_Numer)
3. Make composite of both REFERENCES
attributes as Primary Key of ORDER(Order_Number),
the Table ORDERLINE : FOREIGN KEY (Product_ID)
REFERENCES
ORDERLINE(Order_Number,
PRODUCT(Product_ID));
Product_ID,
Quantity_Ordered)
Transforming E-R Diagrams into
Relations
– Unary 1:N Relationships
• Relationship between instances of a single entity type
• Utilize a recursive foreign key
– A foreign key in a relation that references the primary key
values of that same relation

– Unary M:N Relationships


• Create a separate relation
• Primary key of new relation is a composite of two attributes
that both take their values from the same primary key

9.43
9.44
Unary 1 to M to Table:
MANAGES

Emp_ID Name Mgr_ID Birthdate

11111 John Smith 33333 12/30

22222 Jane Doe 33333 03/23


33333 Anne Hana 99999 05/05
44444 Nick Shaw 99999 11/23
99999 Ron 07/20
Birkman
Transforming Unary 1:N
Relationships into Relations
• Relationship: CREATE TABLE
EMPLOYEE(
EMPLOYEE (as Manager)
Manages EMPLOYEE Emp_ID CHAR(1),
• EMPLOYEE Table Name Varchar(30),
BEFORE Relationship: Birthday DATE,
(Emp_ID, Name, Mgr_ID CHAR(1),
Birthday) PRIMARY KEY (Emp_ID),
• EMPLOYEE Table AFTER FOREIGN KEY (Mgr_ID)
Relationship: REFERENCES
(Emp_ID, Name, EMPLOYEE (Emp_ID));
Birthday, Mgr_ID)
Unary Association Class to Table:
CONTAINS
Item_ Name Cost
Number
A261 Nail 0.99
61384 AAA 21.11
M128 Screw 2.99
62807 BBB 200.11
62009 CCC 99.00
Containig Contained Quantity
Item_ Item_
Number Number
61384 M128 2
61384 A261 1
62807 A261 2
62807 R149 1
62009 R149 2
Transforming Unary M:N
Relationships into Relations
• Relationship CONTAINS:
ITEM Contains ITEM CREATE TABLE CONTAINS (
Containing_Item_Number CHAR(10),
1. Create Table for
Contained_Item_Number CHAR(10),
Relationship
Quantity Integer,
CONTAINS PRIMARY KEY
2. Add PK of each side of (Containing_Item_Numer,
Contained_Item_Numer),
Tables (
FOREIGN KEY
Containing_Item_Numer, (Containing_Item_Number)
Contained_Item_Numer) as REFERENCES
Foreign Keys ITEM(Item_Number),
3. Make composite of both FOREIGN KEY
(Contained_Item_Number)
attributes as Primary Key of
REFERENCES
the Table CONTAINS: ITEM(Item_Number));
CONTAINS
(Containing_Item_Number,
Contained_Item_Number,
Quantity)
9.49
Review: Weak Entities

• A Weak Entity can be identified uniquely only by considering the primary key
of another (owner) entity.
– Owner Entity set and Weak Entity set must participate in a one-to-many
relationship set (1 owner, many weak entities).
– Weak entity set must have total participation in this identifying
relationship set.

name
cost dname age
ssn lot

Employees Policy Dependents


Translating Weak Entity Sets
• Weak entity set and identifying relationship set are
translated into a single table.
– When the owner entity is deleted, all owned weak entities
must also be deleted.

CREATE TABLE Dep_Policy (


dname CHAR(20),
age INTEGER,
cost REAL,
ssn CHAR(11) NOT NULL,
PRIMARY KEY (pname, ssn),
FOREIGN KEY (ssn) REFERENCES Employees,
ON DELETE CASCADE)
Primary Key Constraints
• A set of fields is a 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. – Key is minimal.
– However, 2 does not hold (so false) for superkey – which is not
minimal.
– If there’s more than one keys for a relation, one of the keys is
chosen (by DBA) to be the primary key.
• E.g., customer_id is a key for Customer. (What about
name?) The set {customer_id, name} could be a
superkey.

Primary key can not have null value


Domain Constraint

• The value of each Attribute A with


Domain Type D(Ai) must be a atomic value
from the domain type D(Ai).
Definitions of Keys and Attributes
Participating in Keys
• A superkey of a relation schema R = {A1, A2, ...., An} is a
set of attributes S, subset-of R, with the property that
No two tuples t1 and t2 in any legal relation state r
of R will have t1[S] = t2[S].
That is, for any given two tuples t1, t2 in data
(extensions) of Relation schema R, t1[S] is not identical
to t2[S].
• A key K is a superkey with the additional property that
removal of any attribute from K will cause K not to be a
superkey any more; Key is minimal.
Definitions of Keys and Attributes
Participating in Keys
• If a relation schema has more than one key, each is
called a candidate key.
• One of the candidate keys is arbitrarily designated to
be the primary key, and the others are called secondary
keys.
• A Prime attribute must be a member of any (candidate)
key
• A Nonprime attribute is not a prime attribute—that is,
it is not a member of any (candidate) key.
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. customer_id in Order is a foreign key
referring to Customer:
Order (order_number, order_date, promised_date,
customer_id)
Foreign Keys, Referential Integrity

• If all foreign key constraints are


enforced, referential integrity is
achieved; all foreign key values should
refer to existing values, i.e., no dangling
references.
• Can you name a data model w/o referential
integrity?
– Links in HTML!
Enforcing Referential Integrity
• Consider Students(sid, name, gpa) and Enrolled (rid, semester, sid);
• sid in Enrolled is a foreign key that references Students.
• What should be done if an Enrolled tuple with a non-existent student id
is inserted? Reject it !
• What should be done if a Students tuple is deleted?
– Also delete all Enrolled tuples that refer to it.
– Disallow deletion of a Students tuple that is referred to.
– Set sid in Enrolled tuples that refer to it to a default sid.
– (In SQL, also: Set sid in Enrolled tuples that refer to it to a special
value null, denoting `unknown’ or `inapplicable’.)
• Similar if primary key of Students tuple is updated.
Logical DB Design: ER to Relational

• Entity sets to tables.

name
ssn lot

Employees
CREATE TABLE Employees
(ssn CHAR(11),
name CHAR(20),
lot INTEGER,
PRIMARY KEY (ssn))
Review: Key Constraints
since
• Each dept has at most name dname

one manager, according ssn lot did budget


to the key constraint
on Manages. Employees Manages Departments

Translation to
relational model?

1-to-1 1-to Many Many-to-1 Many-to-Many


Transforming 1:N, M:N Relationships
with Key Constraints
ER Diagram:

since
name dname
ssn lot did budget

Employees Manages Departments

Works_In

since
Translating ER Diagrams with Key Constraints

CREATE TABLE Manages(


• Map relationship to a ssn CHAR(11),
table: did INTEGER,
since DATE,
– Note that did is the PRIMARY KEY (did),
key here! FOREIGN KEY (ssn) REFERENCES Employees,
FOREIGN KEY (did) REFERENCES Departments)
– Separate tables for
Employees and
Departments. CREATE TABLE Dept_Mgr(
did INTEGER,
• Since each department dname CHAR(20),
has a unique manager, budget REAL,
ssn CHAR(11),
we could instead since DATE,
combine Manages and PRIMARY KEY (did),
FOREIGN KEY (ssn) REFERENCES Employees)
Departments.
Transforming Realtionship to
Tables
Example E-R diagram:

since
name dname
ssn lot did budget

Employees Manages Departments

Works_In

since
Relationship Sets to Tables
• In translating a relationship CREATE TABLE Works_In(
Works_In (M-N) to a ssn CHAR(1),
did INTEGER,
relation, attributes of the since DATE,
relation must include: PRIMARY KEY (ssn, did),
FOREIGN KEY (ssn)
– Keys for each REFERENCES Employees,
participating entity set FOREIGN KEY (did)
REFERENCES Departments)
(as foreign keys).
– This set of attributes
forms a superkey for the
relation.
– All descriptive attributes.
Review: Participation Constraints

• Does every department have a manager?


– If so, this is a participation constraint: the participation of Departments in
Manages is said to be total (vs. partial).
• Every did value in Departments table must appear in a row of the Manages table
(with a non-null ssn value!)

since
name dname
ssn lot did budget

Employees Manages Departments

Works_In

since
Participation Constraints in
SQL
• We can capture participation constraints
involving one entity set in a binary
relationship, but little else (without
resorting to CHECK constraints).
CREATE TABLE Dept_Mgr(
did INTEGER,
dname CHAR(20),
budget REAL,
ssn CHAR(11) NOT NULL,
since DATE,
PRIMARY KEY (did),
FOREIGN KEY (ssn) REFERENCES Employees,
ON DELETE NO ACTION)
Review: Binary vs. Ternary
Relationships
name
ssn lot dname age
• If each policy is Employees Covers Dependents
owned by just 1
employee:
Bad design Policies

– Key constraint policyid cost


on Policies would name dname age
ssn lot
mean policy can
Dependents
only cover 1 Employees
dependent!
Purchaser
Beneficiary
• What are the
additional constraints Better design
Policies
in the 2nd diagram?
policyid cost
Binary vs. Ternary Relationships
• The key constraints (Contd.)
allow us to combine
CREATE TABLE Policies (
Purchaser with Policies
and Beneficiary with
policyid INTEGER,
Dependents. cost REAL,
• Participation
ssn CHAR(11) NOT NULL,
constraints lead to PRIMARY KEY (policyid).
NOT NULL constraints. FOREIGN KEY (ssn) REFERENCES Employees,
• What if Policies is a ON DELETE CASCADE);
weak entity set? CREATE TABLE Dependents (
PK of Policies: dname CHAR(20),
(policyid, ssn) age INTEGER,
PK of Dependents: policyid INTEGER,
(dname, policyid, ssn) PRIMARY KEY (dname, policyid).
FOREIGN KEY (policyid) REFERENCES Policies
ON DELETE CASCADE);
An Example

CREATE TABLE Student (


ID NUMBER,
Fname VARCHAR2(20),
Lname VARCHAR2(20),
);
Constraints in Create Table

• Adding constraints to a table enables the


database system to enforce data
integrity.
• Different types of constraints:
* Not Null * Default Values
* Unique * Primary Key
* Foreign Key * Check Condition
Not Null Constraint

CREATE TABLE Student (


ID NUMBER,
Fname VARCHAR2(20) NOT NULL,
Lname VARCHAR2(20) NOT NULL,
);
Primary Key Constraint

CREATE TABLE Student (


ID NUMBER PRIMARY KEY,
Fname VARCHAR2(20) NOT NULL,
Lname VARCHAR2(20) NOT NULL,
);

•Primary Key implies: * NOT NULL * UNIQUE.


•There can only be one primary key.
Primary Key Constraint
(Syntax 2)

CREATE TABLE Students (


ID NUMBER,
Fname VARCHAR2(20) NOT NULL,
Lname VARCHAR2(20) NOT NULL,
PRIMARY KEY(ID)
);

Needed when the primary key is made


up of two or more attributes (fields)
Foreign Key Constraint

CREATE TABLE Studies(


Course NUMBER,
Student NUMBER,
FOREIGN KEY (Student) REFERENCES
Students(ID)
);

NOTE: ID must be unique (or primary key)


in Students table

You might also like