Introduction to Databases 1 F27DB Introduction to Database Systems Dr. Helen Hastie,...

Post on 11-Jan-2016

215 views 0 download

Tags:

transcript

Introduction to Databases 1

F27DB Introduction to Database Systems

Dr. Helen Hastie, h.hastie@hw.ac.uk

Room: LT2

Material available on Vision Vision

(modified from Monica Farrow’s slides)

Twitter: @IntroDBHW and #IntroDBHW

Introduction to Databases 2

Overview

• Before computers• Introduction to databases

• What do they look like?• Why are they like that?• What database management systems could we use?• How to use MySQL in the Linux lab

• A web application with a database• Designing web pages using XHTML• Programming PHP scripts to query the database and

produce web page reports

• Looking ahead to 2nd year module and beyond

Introduction to Databases 3

Before Computerised Databases

• Information could be stored in box of record cards for a class of students

• Each card contains - • name • address (term and home) • date of birth • matric no.

Introduction to Databases 4

What is a database ?

• A database is an organized collection of data, systematically organized for easy access and analysis • The box is a table in the database • The cards are records • Records are made up of fields

• Having designed and created a database, we can then amend, query, sort and report the data

Introduction to Databases 5

Edge-notched card – Invented in 1896

• The card held details on literature on the study of metals• The card was preprinted with a fact by each hole, maybe

a hole for each metal such as copper, silver etc.• You type the information about the name of the book in

the empty space, and then clip out a notch on the edge for every true fact.

Introduction to Databases 6

Another edge-notched card

• This card is just printed with numbers so you have to decide for yourself which numbers mean which facts.

• Cut the notches out for facts that are true, with the clipper tool.

Introduction to Databases 7

Edge-notched cards demo

• Blank preprinted cards

• Add data (a picture)• Round hole – NO• Make a notch – YES

• A simple true/false state is the basis of all data stored on computer

SWIM PET STRIPES LEGS

SWIM PET STRIPES LEGS

Introduction to Databases 8

Animals information system

SWIM PET STRIPES LEGS

 

 

 

 

 

 

 

Introduction to Databases 9

Edge-notched card – retrieving information

• Information is retrieved by putting one or more long wire pins through certain holes.

• As the pins were lifted, the cards that were notched in the hole positions where the pins were inserted would be left behind as rest of the deck was lifted by the pins.

• Find all the pets. . .

SWIM PET STRIPES LEGS

Introduction to Databases 10

Edge-notched card – logical operations

• The cards lifted out match a logical NOT operation• Find all the creatures that do not swim

SWIM PET STRIPES LEGS

Introduction to Databases 11

Edge-notched card – logical operations

• Using two or more pins produced a logical AND function. • Find all the creatures who can swim and also has legs

SWIM PET STRIPES LEGS

Introduction to Databases 12

Edge-notched card – logical operations

• Combining the cards from two different selections produced a logical OR. • Find the creatures with stripes or legs (or both)

• Quite complex manipulations, including sorting were possible using these techniques.

SWIM PET STRIPES LEGS SWIM PET STRIPES LEGS

Introduction to Databases 13

A complete system today

Server Program with

Functionality Code

Response e.g. htmlfor display

ManagementPrograms

(application in e.g. java

or maybe also a web app)

Data Management(updates)

Customer email

Manager Reports

Queries (e.g. SQL)

Data/Success?

Request with parametersmaybe from forms

Search Order

Queries (e.g. SQL)

Data/Success?

Browse

DataRepository

e.g. Database

Introduction to Databases 14

How you will start

• You send commands to the database from a terminal window in the Linux lab, EM250• It is all text-based, no GUI• We can define tables, view the data and perform

updates.

Queries (e.g. SQL)

Data/Success?

MySQLDatabase

Introduction to Databases 15

A complete system for this module

Response e.g. htmlfor display

Data Management(updates)

Manager Reports

Queries (e.g. SQL)

Data/Success?

Request with parametersmaybe from forms

Search Add

Queries (e.g. SQL)

Data/Success?

View

PHP scripts

MySQLDatabase

Apache server program

Server-sidePHP scripts

My Website

My Website

Introduction to Databases 16

Database Management Systems

• A DBMS provides security, integrity, concurrency control and recovery control

• There is a comparison on wikipedia of almost 50 different DBMSs.

• In the CS department we have• MySQL – industrial strength

• Open source, available from the Linux lab

• Oracle – industrial strength• Oldish version, available from the Linux lab

• Microsoft Access, suitable for small applications• Installed on each Windows PC

Introduction to Databases 18

MySQL

• Initially released in 1995• Popular for web applications, particularly in

conjunction with the PHP scripting language• Continually being improved• MySQL is available from terminal windows in the

department Linux lab• Type in commands and view the results

Introduction to Databases 19

MySQL Limitations

• There are some limitations. E.g.• It is ‘forgiving’ of incorrect data. So if are trying to insert a date

into a column and you provide an incorrect date, it helpfully puts in a date of 0 and carries on. It only tells you if you have switched warnings on.

• Many DBMSs allow you to constrain the values of the data. E.g. only M or F for gender. However, although MySQL accepts these commands as valid commands, they are not acted upon. You will have to do your own checks.

• A relational database is usually made up of >1 tables, with relationships between these tables. So you might wish to constrain the data entered in one table to be compatible with data in another table. Again, MySQL accepts these commands as valid syntatically, but only enforces these commands in one type of table (InnoDB). We will use these tables.

Introduction to Databases 20

MySQL at home

• This module assumes that you will do all the work in the lab

• However, if you wish to work on your own computer, you could try installing something like easyPHP• EasyPHP is a WAMP software bundle that installs

web server services on to the Windows computer and allows quick and easy development of PHP and MySQL on a localhost (also known as 127.0.0.1). The package includes an Apache server, a MySQL database, and the PHP extension.

• Unfortunately, departmental staff do not have the time to help with this.

Introduction to Databases 21

An example - spies

• Your friendly international spy recruitment agency is contemplating installing a database for the storage of data about its spies. They would like you to advise them on the design and implementation of its database.

• The agency requires to store information about spies. • Each spy should have a unique code name, a first

name, last name, date of birth, sex, distinguishing mark, and payment due.

Introduction to Databases 22

The spy table

• Each spy should have a unique code name, a first name, last name, date of birth, sex, distinguishing mark, and payment due.

code name

first name

last name

date of birth sex markamount

due

007 James Bond 12 December 1972

M mole on chin

5050

bud Fanny Charleston

31 July 1983 F scar on cheek

25.67

freddie John Smith 05 September 1954

M one finger missing

312.5

Introduction to Databases 23

Spy table definition

• First you need to define the table• What will the table be called?• What will the columns be called?

• E.g. firstName. Don’t use spaces

• What type of data will be stored there? E.g.:• VARCHAR(5) A variable number of characters, up to a

maximum• CHAR(1) A fixed number of characters• DECIMAL (9,2) A decimal number,

• up to a maximum number of characters• with a fixed number of decimal places

• INTEGER(5) An integer number, up to a maximum number of characters

• DATE• Etc – the above types are the most useful ones

Introduction to Databases 24

SQL

• We use MySQL – Structured Query Language• For definition, such as table definition• For inserting, deleting, updating and retrieving data

• Today we’ll just look at a few commands• CREATE TABLE• INSERT VALUES• SELECT

Introduction to Databases 25

CREATE TABLE MySpy

CREATE TABLE MySpy (

codeName VARCHAR(10) PRIMARY KEY,

firstName VARCHAR(20),

lastName VARCHAR(20),

dateOfBirth DATE,

gender CHAR(1),

mark VARCHAR(20),

amountDue DECIMAL (9,2),

)ENGINE=INNODB;

• The last line specifies the table type.• Note the Primary Key

Introduction to Databases 26

Primary key

• In a relational database table, you should usually specify a primary key

• This is a field which uniquely identifies the record• National insurance number identifies a person• Country name identifies a country• Country name and town name together identifies a

town• Christchurch in New Zealand and in England

Introduction to Databases 27

Adding in some data

• Use the INSERT command to add some rows to the table• Surround text and dates with single quotes• Don’t put quotes around numbers• The format of the date is important

mysql>INSERT INTO MySpy VALUES ('007','James', 'Bond', '1972-12-01','M', 'Mole on chin', 5050);

Introduction to Databases 28

Viewing the data (1)

• To see the complete contents of the tablemysql> SELECT * FROM MySpy;

Introduction to Databases 29

Viewing the data (1)

• To see the contents ordered e.g. mysql> SELECT * FROM MySpy ORDER BY dateOfBirth;

21/04/23 Introduction to Databases 30

Viewing the data (1)

• To see just some of the columnsmysql> SELECT codeName, firstName, lastName FROM MySpy;

• To see just some of the rowsmysql> SELECT * FROM MySpy WHERE gender = ‘M’;

Introduction to Databases 31

Viewing the data (1)

• Combine these as appropriatemysql> SELECT firstName, dateOfBirth FROM MySpy

WHERE gender = ‘M’ ORDER BY dateOfBirth;

Introduction to Databases 32

Viewing the data (2)

• Select some of the rows on multiple conditionsmysql> SELECT * FROM MySpy

WHERE firstName = ‘James’ AND lastName = ‘Bond’;

mysql> SELECT * FROM MySpy WHERE firstName = ‘James’ OR lastName = ‘Bond’;

Introduction to Databases 33

Viewing the data (2)

Perform aggregate functionsmysql> SELECT count(*) FROM MySpy WHERE gender = ‘M’;

mysql>SELECT sum(amountDue) FROM MySpy;

mysql> SELECT gender, sum(amountDue) FROM MySpyGROUP BY gender;

Introduction to Databases 34

Using MySQL

• The first lab (after this lecture in EM250) is an introduction to MySQL

• Work through the handout so that you become familiar with the system

• You enter commands by typing them at the command prompt.

• You can use the up arrow to retrieve previous commands.

• It is useful to store long commands in a text file, and run them from there• You don’t have to retype the whole thing if you made a mistake.

Although there are MySQL commands to edit a command, it’s easier just to use a standard text editor

• Your command is safely stored in case you want to run it again or alter it.

Introduction to Databases 35

Helping each other

• In the lab there will be one or two lecturers and three lab helpers. • We want you to learn to use MySQL, not get stuck

with the linux system in the lab.

• See Partner List for first few labs• CS/IS students - Help them with linux if necessary• Elective students – ask for help if necessary

Introduction to Databases 36

BEFORE TODAY’s LAB

• First year CS & IS students do nothing• Others please go to the Computer Science Helpdesk

in EM1.33• If you aren’t registered to use the CS linux lab, fill in form and

register. Then ask for a MySQL account.• If you have already registered to use any CS dept machines

for another reason, just ask for a MySQL account