Database management

Download Report

Transcript Database management

Advanced Database management
(In the ppt file, slides 16-32 and 66-73
are hidden; they will not be covered)
Spreadsheet vs. Database
 Spreadsheet: dealing with numbers and
calculations
 Database: dealing with information (mostly text)
 Library search
 Internet e-business websites
 Records in schools, hospitals, Revenue Canada, …
Database Design
 Databases are stored into Database Management
Systems (DBMS)
 A database is used to store data that exists in real
life
 The database design must reflect the organization
that exists within the data
 To capture the organization of the data we need to
generate a model of the world
Models
 We need to translate real-world concepts and data
into concepts and data that can be stored in a
database system
 The process of analyzing and structuring the real
world information into abstract information that
can be implemented is called modeling
 The result is a model
Models and reality
 The real world information is complete and
extremely detailed: we can not include it all
 Selecting the details to be included in our model
depends on our goals.
 Example: the SIN may be irrelevant in a database
system used to store and retrieve the marks of students
but it certainly is not in a database system used for
fiscal information
 We will be trying to organize real world
information using entities and relations
The Entity Relationship Model
A model of reality will consist of




Entities
Attributes of the entities
Relationships that exist between the entities
Attributes of the relationships
The modeling technique that we will be using is the
Entity – Relationship model (E–R model)
Entities
 An entity is a person, place, thing or event
 Within the university environment, we could
identify the following entities




Student
Course
Faculty Member
Program
 The entities are the types of objects that we will be
dealing with
 Entities are implemented as tables
Attributes
 Entities have attributes which describe properties
of the entity
 For example, the “Student” entity could have the
following attributes





Student number
Name
Address
Phone number
Date of birth
 The attributes of an entity are the columns of its
corresponding table
Instances
 An instance is the database representation of a real
world object
 An instance is directly related to an entity (object
– object type)
 The database will contain instances of the entities
 The attributes of an entity describe the details we
will know about the entity
 Instances are rows in the table corresponding to its
entity
COURSE_ID NAME
NUMBER
TERM LOCATION
6701901
COMP SCI 031
A
MC301
6701402
COMP SCI 031
B
NS1
6701203
COMP SCI 032
A
SCC20
6701604
COMP SCI 032
B
MS12
The COURSE table
The
Student
table
ST_NUM
NAME
ADDRESS
250078563
Rhonda Odanski 65-927 Richmond St.
250004423
Peter Chen
250016788
Susanne Ferber 39 Danielle Cr.
250012745
Rick Mattatall 87 Dillabough St.
1848 Downes Crt.
Examples
Key Attributes
 It is necessary to uniquely identify the instances of
entities
 For example, people are given SIN, student
numbers, employee numbers, etc. so they can be
uniquely identified.
 An attribute (or attributes) that uniquely identifies
an instance of an entity or relationship is called a
key attribute.
Relationships
 A relationship is an association between two (or
more) entities
 For example,
 Person works for Company
 Student takes Course
 Faculty Member is chair of Department
 Relationships are implemented as tables
connecting the tables corresponding to the entities
involved
Connecting tables
 A relationship table connects entity tables by
placing key information of instances of objects
that are in the said relationship in the same row.
 Example: Student is uniquely identified by their
student number. Let's assume that courses are
uniquely identified by a key named COURSE_ID
 The relationship is Student takes Course.
Connecting tables (continued)
 The relationship is implemented as a table with
two columns: ST_NUM and COURSE_ID.
 A student takes a course if and only if a record
with his/hers student number and the ID of the
course is present in the relationship table.
COURSE_ID NAME
NUMBER
TERM LOCATION
6701901
COMP SCI 031
A
MC301
6701402
COMP SCI 031
B
NS1
6701203
COMP SCI 032
A
SCC20
6701604
COMP SCI 032
B
MS12
The COURSE table
ST_NUM
NAME
250078563
250016788
Rhonda Odanski 65-927 Richmond St. The
Peter Chen
1848 Downes Crt.
Student
Susanne Ferber 39 Danielle Cr.
table
250012745
Rick Mattatall 87 Dillabough St.
250004423
ADDRESS
ST_NUM
COURSE_ID
250016788
6701402
250004423
6701901
250004423
6701604
250012745
6701901
250078563
6701402
250016788
6701203
The TAKES table
Example
Queries
 A query is a request for data that matches a set of
conditions
 Real-life querying examples:
 Library book search
 Movie search and filtering (www.imdb.com)
 Search engines
 We need to specify where the data is located and
what conditions it must satisfy
Query Languages
 Used to communicate with the DBMS
 People and applications software need a way to
communicate with the DBMS
 Examples




SQL (Structured Query Language)
QBE (Query By Example)
SQUARE
QUEL
Common query languages
 SQL and QBE are the most common ways to
communicate with DBMS’s
 SQL is the internationally agreed upon standard
language
 QBE is implemented as a GUI and therefore it
differs from one implementation to another
Structured Query Language
 In 1985 the preliminary Structured Query
Language (SQL) standard was published
 SQL is an English-like language
 Uses words like SELECT, INSERT, DELETE,
UPDATE and GRANT to pass instructions to the
DBMS
Querying in SQL
 A request for data
 We need to specify
 where the data is located: the tables that contain the
information.
 what conditions our data must satisfy: a set of
conditions on the rows of the table involved
 In other words, we must specify what entities we
are interested in and what criteria their attributes
must fulfill
SQL Query Format
 The general format of an SQL query:
SELECT
<LIST OF COLUMNS>
FROM
<TABLE_SPECIFICATION>
WHERE
<CONDITIONS>
 Notice the use of SQL keywords: SELECT, FROM, and
WHERE.
Query return
 A query returns a table with the columns specified
in the <LIST OF COLUMNS>.
 Sometimes, we are looking for a single value – a
special case of table with a single row and a single
column.
SQL Format Details
 The <LIST OF COLUMNS> can be replaced by *
meaning that we want to select all available
columns from the <TABLE_SPECIFICATION>
 The clause WHERE <CONDITIONS> need not be
present
 The clauses SELECT <LIST OF COLUMNS> and
FROM <TABLE_SPECIFICATION> must be present
Single table queries
 Assume that we have a student table named
STUDENT with the following structure:
ST_NUM
NAME
ADDRESS
 The SQL query used to return Susanne Ferber’s
student number is:
SELECT ST_NUM
FROM STUDENT
WHERE NAME = "Susanne Ferber"
Same example in Access Design View
SELECT ST_NUM
FROM STUDENT
WHERE NAME =
"Susanne Ferber"
Single table example
 What is Rick Mattatall’s address?
SELECT ADDRESS
FROM STUDENT
WHERE NAME = "Rick Mattatall"
Another single table example
 Assume that the information about courses in
stored in the table COURSE
COURSE_ID
NAME
NUMBER
TERM
LOCATION
 Find all of the “B” term courses (return the name,
the number and the term of the course)
SELECT NAME, NUMBER, TERM
FROM COURSE
WHERE TERM = "B"
 The columns in the list are separated by commas
Same example in Access Design View
SELECT NAME, NUMBER, TERM
FROM COURSE
WHERE TERM = "B"
Multiple table queries
 It is possible that the information we want to
retrieve spans multiple tables
 Our goal is to create a temporary table, for the
purposes of our query, which contains all the
information we need
 The procedure is to join tables together making
use of the relationship table.
Multiple table queries (continued)
 Assume that we want to select the id of the
courses taken by Peter Chen and we have the
tables:
 STUDENT
 TAKES
ST_NUM
NAME
ADDRESS
ST_NUM
COURSE_ID
 The table TAKES is a relationship table and
contains a row with a student number and a course
id if the student takes the course.
Multiple table queries (continued)
 The specification of our temporary table will be:
STUDENT INNER JOIN TAKES ON
STUDENT.ST_NUM = TAKES.ST_NUM
 A row in this table will be a row from the table
STUDENT joined with a row from the table TAKES
such that the ST_NUM is the same in both rows
 Since the column ST_NUM appears in both tables, we
need to specify the table that it belongs to
(STUDENT.ST_NUM, TAKES.ST_NUM)
Multiple table queries (continued)
 Our final query would be:
SELECT COURSE_ID
FROM
STUDENT INNER JOIN TAKES ON
STUDENT.ST_NUM = TAKES.ST_NUM
WHERE NAME = "Peter Chen"
Joins in Access
 In order to create a join, drag one of the columns involved
in the join over the other.
This is the join
ST_NUM
NAME
250078563
Rhonda Odanski
250004423
Peter Chen
250016788
Susanne Ferber
ST_NUM
COURSE_ID
250016788
6701402
250004423
6701901
250004423
6701604
250078563
6701402
The table
250016788
6701203
STUDENT INNER JOIN TAKES ON
STUDENT.ST_NUM = TAKES.ST_NUM
The STUDENT table
The TAKES table
Join
Example
STUDENT.ST_NUM NAME
TAKES.ST_NUM COURSE_ID
250078563
Rhonda Odanski
250078563
6701402
250004423
Peter Chen
250004423
6701901
250004423
Peter Chen
250004423
6701604
250016788
Susanne Ferber
250016788
6701402
250016788
Susanne Ferber
250016788
6701203
A three table join
 Furthermore, assume that we want the name,
number and term of the courses taken by Peter
Chen.
 We already have a table specification with the
student name the course id, we only need to join it
with the table COURSES:
(STUDENT INNER JOIN TAKES ON
STUDENT.ST_NUM = TAKES.ST_NUM)
INNER JOIN COURSES ON
TAKES.COURSE_ID = COURSE.COURSE_ID
A three table join (2)
 The final query is:
SELECT COURSE.NAME, NUMBER, TERM
FROM
(STUDENT INNER JOIN TAKES ON
STUDENT.ST_NUM = TAKES.ST_NUM)
INNER JOIN COURSE ON
TAKES.COURSE_ID = COURSE.COURSE_ID
WHERE STUDENT.NAME = "Peter Chen"
 Notice that the both the tables COURSE and STUDENT
have a column NAME so must distinguish between
them by adding the table name
Three table join in Access
SELECT COURSE.NAME, NUMBER, TERM
FROM
(STUDENT INNER JOIN TAKES ON
STUDENT.ST_NUM = TAKES.ST_NUM)
INNER JOIN COURSE ON
TAKES.COURSE_ID = COURSE.COURSE_ID
WHERE STUDENT.NAME = "Peter Chen"
Aggregate functions
 An aggregate function can be applied to the values
returned by an SQL query.
 Some built-in aggregate functions





AVG – the average of the values in an attribute
SUM – total of the values
MIN – the smallest value
MAX – the largest value
COUNT – the number of values
Aggregate functions example
 The statement
SELECT COUNT(COURSE_ID)
FROM
STUDENT INNER JOIN TAKES ON
STUDENT.ST_NUM = TAKES.ST_NUM
WHERE NAME = "Peter Chen"
would return the number of courses taken by Peter
Chen.
Aggregate functions in Access
SELECT COUNT(COURSE_ID)
FROM
STUDENT INNER JOIN TAKES ON
STUDENT.ST_NUM = TAKES.ST_NUM
WHERE NAME = "Peter Chen"
Aggregate functions examples (2)
More uses for the aggregate functions:





AVG(MARK)
MIN(AGE)
MAX(SALARY)
SUM(SALES)
COUNT(EMPLOYEE)
can be used in select queries.
Renaming columns
 Sometimes, it is useful to rename the columns in the
return table of the query – especially when multiple
tables have columns with the same name.
SELECT STUDENT.NAME AS ST_NAME, COURSE.NAME AS C_NAME
FROM (STUDENT INNER JOIN TAKES ON
STUDENT.ST_NUM = TAKES.ST_NUM)
INNER JOIN COURSES ON
TAKES.COURSE_ID = COURSE.COURSE_ID
 The above query returns a table with 2 columns
named ST_NAME and C_NAME.
Conditions
 The <CONDITIONS> describe the list of conditions
that must be true for the DBMS to retrieve data
 The list of conditions is a list of Boolean
expressions connected using logical operators:
AND, OR, NOT
 The Boolean expressions are built using the
standard comparison operators (<, >, <=, >=, =, <>)
or one of keywords IN, LIKE or BETWEEN.
Example Conditions
 NAME = "Rhonda"
 INITIAL < "M" – letters “A” to “L”




INITIAL >= "M" – letters “M” to “Z”
VALUE = 100
VALUE <= 200
VALUE > 0
Where NAME, INITIAL, and VALUE are column
names from the tables from which we are selecting
Example Conditions
 START_DATE >= #1/1/2001# - date is on or after
Jan. 1/2001
 START_DATE BETWEEN #1/1/2001# and
#12/31/2001# - date is in 2001
 START_DATE = #2/*/2001# - date is in Feb.
2001
 START_DATE IS Null – there is no value for the
attribute
Example Conditions
 NOT(VALUE = 20) – all instances where the
attribute does not equal 20
 COUNTRY="France" OR COUNTRY="Spain" –
value is “France” or “Spain”
 TEXT LIKE "Market*" - any value that has
Market as its first six letters (* is a wildcard that in
combination with the keyword LIKE matches any
number of letters)
 PROVINCE IN ("Ontario", "Quebec") – only
instances with the value Ontario or Quebec
Ordering the return tables
 The return table of a query can be ordered using
the keyword ORDER BY followed by a column
name and one of the keywords ASC or DESC
 Example:
SELECT NAME FROM STUDENT
ORDER BY NAME ASC
returns the list of students in alphabetical order
Ordering in Access
SELECT NAME FROM STUDENT
ORDER BY NAME ASC