Powerpoint slides - Dynamic Connectome Lab

Download Report

Transcript Powerpoint slides - Dynamic Connectome Lab

Database Systems
Marcus Kaiser
School of Computing Science
Newcastle University
Security




if a client wishes to access a database it sets up a session
only registered users are allowed to set up sessions
authentication takes place before the user can send queries
the Database Server checks each query to ensure that the user is
allowed to see the data he’s requesting
 e.g. the Head of Personnel connects and issues a query:



what is A.N.Other’s salary
she gets back the answer £20000
e.g. a secretary in Personnel connects and issues a query:


what is A.N.Other’s salary
he is told that he is not allowed to access that information
Security

How to control what users read and write, e.g.  prevent tellers increasing their own bank balance
 restrict who can see salary information
 prevent deletion of information
 Solution: User privileges
 users have usernames that give them privileges
 SQL statements are checked to make sure a user
has the required privileges
User privileges


SQL has 9 types of privilege
The main ones are the ability specify if tables
(base & views) & attributes can be subject to
the following….


Select, Insert, Delete, Update
e.g. Staff(id, name, dept, address, salary)



a user in the mail room may only be allowed to select id,
name, dept,address
a user in HR may only be allowed to select all attributes,
update dept and address, and insert all attributes
head of HR may be allowed to select, insert, delete and
update all attributes
Granting Privileges

Users can grant privileges to other users
GRANT <privilege list>
ON <database element>
TO <user list>

e.g.
GRANT SELECT ON Staff TO npw1,njkw


The database element is usually a table
The privilege list is usually:


select, update, insert, delete
privileges can be qualified with column names
 e.g. GRANT SELECT(name,address) ON Staff TO nadb
Passing on Privileges

Each privilege has an option:
WITH GRANT OPTION
if true then privilege can be passed on to another
user
 For example:
GRANT SELECT ON Staff TO nwp1 WITH
GRANT OPTION



This allows a user to pass on a subset of their own
privileges to another user
The inverse of GRANT is REVOKE
Database Design
Designing a Database

Before creating a Database we need to design it
 Database design cannot be done purely mechanically
but there are techniques which help
 The steps are:
1. Decide on what subjects are covered by the database
2. Decide how they are related to each other
3. Decide on what characteristics they have
4. Derive the database tables from the design
5. Create the database tables using database software
Decide what Subjects are Covered
by the Database
Rules:
 Look at what the subject is about, rather than the
conclusions you want to find
 Think about the subject independently of any particular
database software (or computing at all)
 Don’t design database on computer
 Focus on the data you are likely to collect, rather than
how a computer will organise the data
Decide on what subjects are
covered by the DB
Subjects are called Entities:
 things that hold interest for you in your database
 represent a class of things
 precise definition
 different for every database you create
Example: a Crime database


The police want to track cases
 When a robbery has happened who is involved?
 What was taken?
 Did this go to court?
 What was the verdict?
What are the Entities (subjects) here?
 Police Officer
 Stolen Item
 Case
 Result
Example: a Crime database

e.g. The police want to track cases
 we begin by drawing the Entities:
Decide how the entities are
related to one another



Relationships
 a significant association between the entities
 represented as a diamond
Each relationship has:
 a name
 a degree (more on this later)
Names
 Pick a simple word that encapsulates the relationship
 Concentrate on the main entities first: the rest can
come later when you understand the problem better
Naming relationships
The Degree of Relationship

One-to-One
 One occurrence of an entity is uniquely related to
another entity
 e.g: a crime database: each case has one unique result
The Degree of Relationship

One-to-Many
 an occurrence of one entity can be related many times
to another entity
 e.g: a crime database: many items can be stolen in
one case
The Degree of Relationship

Many-to-Many
 there can be many occurrences of one entity related
to many occurrences of another entity
 e.g: a crime database: many officers can work on a
case, and an officer can work on many cases
Deciding on the Attributes of the
Entities




Attributes are details about the state of an entity
They are things we want to know about an entity
Ensure each has a unique name within the Entity
They are usually drawn as spokes on Entity-Relationship
diagrams:
Attributes: Primary Keys

Make sure that each Entity has an Attribute (or set of
Attributes) which allow it to be uniquely identified

This is called the primary key
(often called ID, use underscore in the ER model)
If there might be some doubt about whether or not a
set of attributes is unique, then add an extra attribute
containing a unique number/code.
e.g. for Officers:
 Name and DOB may be enough: but the id attribute
is guaranteed to be unique


Deriving the Database tables
from the Design






The Entities are Tables
The Attributes are their columns
 Using the database software manual, find out what the possible
column types are and decide on the right one for each attribute
Once this is done, the tables can be created
Next any initial data is entered into the tables
Any standard Queries Forms and Reports are designed and
implemented
Now the database is ready for use
police officer
id station dob
rank
address
name
Representing Relationships
through Foreign Keys


A FOREIGN KEY in one table points to a PRIMARY KEY
in another table.
They are used to represent relationships
Representing 1-1 Relationships

Assume each table has an id column which is its key
 Then we can add a foreign key column to either table
 i.e. Add a CaseId column to Result, or a ResultId
column to Case
Representing 1-many
Relationships

Assume each table has an id column which is its key
 Then we must add a foreign key column to the table at
the many end of the relationship
 i.e. Add a Case Id column to the Stolen Item table
Representing 1-to-Many
Relationships
-- Table `StolenItem`
CREATE TABLE `StolenItem` (
`stolenItemId` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`stolenItemName` VARCHAR(45) NOT NULL ,
`caseItemId` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
PRIMARY KEY (`stolenItemId`) );
Representing Many-to-Many
Relationships

To implement in a relational database, these are split up
into two relationships, with a newly created entity
intervening
Entity A
Entity A
Relationship
Many
1
Many
Many
New Entity
Many
1
Entity B
Entity B
Representing Many-to-Many
Relationships

In the Police example we create a new entity which
matches Cases to Officers:
Officer
Officer
Relationship
Many
1
Many
Many
Officer Case
Many
1
Case
Case
Representing Many-to-Many
Relationships
-- Table `Officer`
CREATE TABLE `Officer` (
`officerId` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`officerName` VARCHAR(45) NOT NULL ,
PRIMARY KEY (`officerId`) );
-- Table `Case`
CREATE TABLE `Case` (
`caseId` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`caseName` VARCHAR(45) NOT NULL ,
PRIMARY KEY (`caseId`) );
-- Table `OfficerCase`
CREATE TABLE `OfficerCase` (
`Case_caseId` INT UNSIGNED NOT NULL ,
`Officer_officerId` INT UNSIGNED NOT NULL ,
PRIMARY KEY (`Case_caseId`, `Officer_officerId`) );
Summary

Security: grant access and pass access to others

Primary and foreign keys: unique identifiers

Degree of a relationship:
1:1
1:Many
or 1:n
Many:Many
or n:m
(create intervening entity)
Quick overview to SQL: http://www.w3schools.com/sql/