CS 174: Web Programming September 21 Class Meeting Department of Computer Science San Jose State University Fall 2015 Instructor: Ron Mak mak.

Post on 31-Dec-2015

215 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

Transcript

CS 174: Web ProgrammingSeptember 21 Class Meeting

Department of Computer ScienceSan Jose State University

Fall 2015Instructor: Ron Mak

www.cs.sjsu.edu/~mak

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

2

Data Independence

Goal: Loose coupling between applications and the data repository.

Manage complexity. Manage change.

Applications should not need to know:

Where the data is stored (location of the repository) How it is stored (file formats and organizations, etc.) Access mechanisms

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

3

Back-End Data Repository Issues

Redundancy and inconsistency Multiple copies of data (good for backup) Different versions that don’t match (bad) Consistent updates and deletions

Access How to access data Timeliness

Disparity Data stored in multiple and scattered locations Data stored in different formats and media

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

4

Back-End Data Repository Issues, cont’d

Concurrency Handle multiple clients accessing

and updating the data simultaneously.

Security Prevent unauthorized accesses and updates.

Integrity Data values must meet constraints .

Example: Minimum and maximum value ranges Data values must agree with each other.

Example: Medical records for a male patient should not include pregnancy data.

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

5

Data Modeling

A data model describeswhat data an application works with and how the data is used.

Include data that will be persisted (written to and read from a data repository)in the data model.

For databases, objects are called entities.

Model entities and their relationships to each other. Similar to Java classes and their relationships.

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

6

Data Modeling, cont’d

Conceptual data model

A high-level user-oriented description of the data. entities relationships among the entities who will use the data (access control) how it will be used

Visualize the model with a diagram that shows names, attributes, keys, and relations.

Logical data model

Create the relational data model (in our case).

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

7

Data Modeling, cont’d

Physical data model

The database itself.

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

8

Example Requirements

Student, teacher, and class entities and their attributes.

Student id name which teachers

Teacher id name which classes taught

Class class code subject name class room number

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

9

Sample Queries

Which teachers does this student have?

What classes does this teacher teach?

Who is the teacher of this class?

Which students are in this class?

Which students are in each of the classes taught by this teacher?

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

10

The Relational Data Model

Data element: values that are stored in the repository (i.e., the database)

Values are typed. A value can be null.

Entity: a group of data elements that together are meaningful for a person or an application

Similar to Java objects. Each data element is the value of

an attribute of the entity.

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

11

The Relational Data Model, cont’d

Table: a conceptual two-dimensional structure that contains entities of a particular type. AKA relation

Each row (AKA record) contains the attribute values of one entity.

Each column (AKA field) holds an attribute value.

Table relation Row entity Rows and columns records and fields

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

12

Logical Data Model Initial version

Id Name Class_code Subject Room

7003 Rogers, Tom 926 Java programming 101

7008 Thompson, Art 908 Data structures 114

7012 Lane, John 951 Software engineering 210

7012 Lane, John 974 Operating systems 109

7051 Flynn, Mabel 931 Compilers 222

John Lane teachestwo classes.

Each table has a primary key (PK) field whose value in each record uniquely identifies that record.

Id Name Teacher_id_1 Teacher_id_2 Teacher_id_3

1001

Doe, John 7003 7012 7008

1005

Novak, Tim 7012 7008 null

1009

Klein, Leslie null null null

1014

Jane, Mary 7051 null null

1021

Smith, Kim 7003 7012 7051

Student

Teacher

Student id name which teachers

Teacher id name which classes taught

Class class code subject name class room number

PK

PK

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

13

Normalization

Relational tables need to be normalized.

Improve the stability of the model. More resilient to change.

Faster record insertions and updates. Improve data quality.

There are six normal forms, but we will only consider the first two.

Each normal form includes the lower normal forms. Example: A database in second normal form

is also in first normal form.

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

14

First Normal Form (1NF)

Separate multi-valued data elements. Break the name fields into last name and first name fields.

Id Last First Teacher_id_1 Teacher_id_2 Teacher_id_3

1001 Doe John 7003 7012 7008

1005 Novak Tim 7012 7008 null

1009 Klein Leslie null null null

1014 Jane Mary 7051 null null

1021 Smith Kim 7003 7012 7051

Id Last First Class_code Subject Room

7003 Rogers Tom 926 Java programming 101

7008 Thompson Art 908 Data structures 114

7012 Lane John 951 Software engineering 210

7012 Lane John 974 Operating systems 109

7051 Flynn Mabel 931 Compilers 222

Student

Teacher

Id Name Teacher_id_1 Teacher_id_2 Teacher_id_3

1001

Doe, John 7003 7012 7008

1005

Novak, Tim 7012 7008 null

1009

Klein, Leslie null null null

1014

Jane, Mary 7051 null null

1021

Smith, Kim 7003 7012 7051Id Name Class_code Subject Room

7003 Rogers, Tom 926 Java programming 101

7008 Thompson, Art 908 Data structures 114

7012 Lane, John 951 Software engineering 210

7012 Lane, John 974 Operating systems 109

7051 Flynn, Mabel 931 Compilers 222

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

15

First Normal Form, cont’d Move repeating data elements

to a new table.Id Last First

1001 Doe John

1005 Novak Tim

1009 Klein Leslie

1014 Jane Mary

1021 Smith Kim

Student_id Teacher_id

1001 7003

1001 7012

1001 7008

1005 7012

1005 7008

1014 7051

1021 7003

1021 7012

1021 7051

Linkingtable

Id Last First Class_code Subject Room

7003 Rogers Tom 926 Java programming 101

7008 Thompson Art 908 Data structures 114

7012 Lane John 951 Software engineering 210

7012 Lane John 974 Operating systems 109

7051 Flynn Mabel 931 Compilers 222

Student

Teacher

Student_Teacher

Id Last First Teacher_id_1 Teacher_id_2 Teacher_id_3

1001 Doe John 7003 7012 7008

1005 Novak Tim 7012 7008 null

1009 Klein Leslie null null null

1014 Jane Mary 7051 null null

1021 Smith Kim 7003 7012 7051

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

16

Problem!

Suppose Prof. Lane decides he doesn’t want to teach Operating Systems anymore and we delete that row.

What other information do we lose as a result? We lose the fact that the class is taught in Room 109.

The problem arises because the Teacher table really contains two separate sets of data: teacher data and class data.

Id Last First Class_code Subject Room

7003 Rogers Tom 926 Java programming 101

7008 Thompson Art 908 Data structures 114

7012 Lane John 951 Software engineering 210

7012 Lane John 974 Operating systems 109

7051 Flynn Mabel 931 Compilers 222

Teacher

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

17

Second Normal Form (2NF)

Keep related data together (cohesiveness).

Id Last First

7003 Rogers Tom

7008 Thompson Art

7012 Lane John

7051 Flynn Mabel

Class_code Teacher_id Subject Room

908 7008 Data structures 114

926 7003 Java programming 101

931 7051 Compilers 222

951 7012 Software engineering 210

974 7012 Operating systems 109

Teacher Class

Primary key (PK)

Primary key (PK) Foreign key (FK)

How would you do this relation with a linking table?

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

18

Final Database Structure

Id Last First

1001 Doe John

1005 Novak Tim

1009 Klein Leslie

1014 Jane Mary

1021 Smith Kim

Code Teacher_id Subject Room

908 7008 Data structures 114

926 7003 Java programming 101

931 7051 Compilers 222

951 7012 Software engineering 210

974 7012 Operating systems 109

Student_id Class_code

1001 926

1001 951

1001 908

1005 974

1005 908

1014 931

1021 926

1021 974

1021 931

Id Last First

7003 Rogers Tom

7008 Thompson Art

7012 Lane John

7051 Flynn Mabel

Teacher

Student

Class

Student_Class John Doe takes Java programming, software engineering, and data structures.

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

19

Final Database Structure, cont’d

Id Last First

1001 Doe John

1005 Novak Tim

1009 Klein Leslie

1014 Jane Mary

1021 Smith Kim

Code Teacher_id Subject Room

908 7008 Data structures 114

926 7003 Java programming 101

931 7051 Compilers 222

951 7012 Software engineering 210

974 7012 Operating systems 109

Student_id Class_code

1001 926

1001 951

1001 908

1005 974

1005 908

1014 931

1021 926

1021 974

1021 931

Id Last First

7003 Rogers Tom

7008 Thompson Art

7012 Lane John

7051 Flynn Mabel

Teacher

Student

Class

Student_Class The Java Programming class

has John Doe and Kim Smith.

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

20

Final Database Structure, cont’d

Id Last First

1001 Doe John

1005 Novak Tim

1009 Klein Leslie

1014 Jane Mary

1021 Smith Kim

Code Teacher_id Subject Room

908 7008 Data structures 114

926 7003 Java programming 101

931 7051 Compilers 222

951 7012 Software engineering 210

974 7012 Operating systems 109

Student_id Class_code

1001 926

1001 951

1001 908

1005 974

1005 908

1014 931

1021 926

1021 974

1021 931

Id Last First

7003 Rogers Tom

7008 Thompson Art

7012 Lane John

7051 Flynn Mabel

Teacher

Student

Class

Student_Class

Mabel Flynn teaches compilers.

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

21

Entity-Relationship (ER) Diagrams

Data modeling diagrams are called Entity-Relationship (ER) diagrams.

Use an ER diagram (ERD) to visualize your conceptual data model.

Very similar in concept to UML diagrams.

There are several styles of ER diagrams. One style is crow’s feet diagrams.

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

22

One-to-Many Relationship

One (each) teacher teaches 0, 1, or many classes.

Id Last First

7003 Rogers Tom

7008 Thompson Art

7012 Lane John

7051 Flynn Mabel

Code Teacher_id Subject Room

908 7008 Data structures 114

926 7003 Java programming 101

931 7051 Compilers 222

951 7012 Software engineering 210

974 7012 Operating systems 109

one zero

one

many

Database cardinality is only0, 1, or many (more than 1).

Teacher Class

minimum

maximum

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

23

Many-to-Many Relationship

Id Last First

1001 Doe John

1005 Novak Tim

1009 Klein Leslie

1014 Jane Mary

1021 Smith Kim

Code Teacher_id Subject Room

908 7008 Data structures 114

926 7003 Java programming 101

931 7051 Compilers 222

951 7012 Software engineering 210

974 7012 Operating systems 109

Key Student_id Class_code

1 1001 926

2 1001 951

3 1001 908

4 1005 974

5 1005 908

6 1014 931

7 1021 926

8 1021 974

9 1021 931

Student Class

Student_Class

A student has 0, 1 or many classes.

A class has 1 or many students.

Class

Student

Student-Class

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

24

Complete Entity Diagram

code (PK)teacher_id (FK)

subjectroom

Class

Code Teacher_id Subject Room

908 7008 Data structures 114

926 7003 Java programming 101

931 7051 Compilers 222

951 7012 Software engineering 210

974 7012 Operating systems 109

Class

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

25

SQL

Structured Query Language (SQL)

An industry standard But has many proprietary extensions

Language for managing data in a relational database.

Create and drop (delete) databases Create, alter, and drop tables of a database Retrieve, insert, update, and delete data

in the tables.

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

26

SQL Query Examples

What is the class code of the

Java programming class?Code Teacher_id Subject Room

908 7008 Data structures 114

926 7003 Java programming 101

931 7051 Compilers 222

951 7012 Software engineering 210

974 7012 Operating systems 109

Class

SELECT code FROM class WHERE subject = 'Java programming'

+------+| code |+------+| 926 |+------+

Source tables

Desired fields

Selection criteria

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

27

SQL Query Examples, cont’d

Who is teaching Java programming?

Id Last First

7003 Rogers Tom

7008 Thompson Art

7012 Lane John

7051 Flynn Mabel

Code Teacher_id Subject Room

908 7008 Data structures 114

926 7003 Java programming 101

931 7051 Compilers 222

951 7012 Software engineering 210

974 7012 Operating systems 109

ClassTeacher

SELECT first, last FROM teacher, classWHERE id = teacher_id AND subject = 'Java programming'

+-------+--------+| first | last |+-------+--------+| Tom | Rogers |+-------+--------+

Selecting from multiple tablesis called a join.

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

28

SQL Query Examples, cont’d

What subjects does John Lane teach?

SELECT code, subjectFROM teacher, classWHERE last = 'Lane' AND first = 'John'AND id = teacher_id

+------+----------------------+| code | subject |+------+----------------------+| 951 | Software engineering || 974 | Operating systems |+------+----------------------+

Id Last First

7003 Rogers Tom

7008 Thompson Art

7012 Lane John

7051 Flynn Mabel

Code Teacher_id Subject Room

908 7008 Data structures 114

926 7003 Java programming 101

931 7051 Compilers 222

951 7012 Software engineering 210

974 7012 Operating systems 109

ClassTeacher

Demo

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

29

SQL Query Examples, cont’d Who is taking Java programming?

Id Last First

1001 Doe John

1005 Novak Tim

1009 Klein Leslie

1014 Jane Mary

1021 Smith Kim

Code Teacher_id Subject Room

908 7008 Data structures 114

926 7003 Java programming 101

931 7051 Compilers 222

951 7012 Software engineering 210

974 7012 Operating systems 109

Student_id Class_code

1001 926

1001 951

1001 908

1005 974

1005 908

1014 931

1021 926

1021 974

1021 931

SELECT id, last, firstFROM student, class, student_classWHERE subject = 'Java programming'AND code = class_code AND id = student_id

+------+-------+-------+| id | last | first |+------+-------+-------+| 1001 | Doe | John || 1021 | Smith | Kim |+------+-------+-------+

Class

Student_Class

Student

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

30

SQL Query Examples, cont’d

What classes is John Doe taking?

Id Last First

1001 Doe John

1005 Novak Tim

1009 Klein Leslie

1014 Jane Mary

1021 Smith Kim

Code Teacher_id Subject Room

908 7008 Data structures 114

926 7003 Java programming 101

931 7051 Compilers 222

951 7012 Software engineering 210

974 7012 Operating systems 109

Student_id Class_code

1001 926

1001 951

1001 908

1005 974

1005 908

1014 931

1021 926

1021 974

1021 931

SELECT code, subjectFROM student, class, student_classWHERE last = 'Doe' AND first = 'John'AND id = student_id AND code = class_code

+------+----------------------+| code | subject |+------+----------------------+| 908 | Data structures || 926 | Java programming || 951 | Software engineering |+------+----------------------+

ClassStudent

Student_Class

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

31

SQL Query Examples, cont’d Who are John Lane’s students

and in which subjects?

Id Last First

1001 Doe John

1005 Novak Tim

1009 Klein Leslie

1014 Jane Mary

1021 Smith Kim

Code Teacher_id Subject Room

908 7008 Data structures 114

926 7003 Java programming 101

931 7051 Compilers 222

951 7012 Software engineering 210

974 7012 Operating systems 109

Student_id Class_code

1001 926

1001 951

1001 908

1005 974

1005 908

1014 931

1021 926

1021 974

1021 931

SELECT student.first, student.last, subjectFROM student, teacher, class, student_classWHERE teacher.last = 'Lane' AND teacher.first = 'John'AND teacher_id = teacher.idAND code = class_code AND student.id = student_idORDER BY subject, student.last

+-------+-------+----------------------+| first | last | subject |+-------+-------+----------------------+| Tim | Novak | Operating systems || Kim | Smith | Operating systems || John | Doe | Software engineering |+-------+-------+----------------------+

Id Last First

7003 Rogers Tom

7008 Thompson Art

7012 Lane John

7051 Flynn Mabel

Teacher StudentClass

Student_Class

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

32

SQL to Create and Drop a Database

Create examples:

Drop examples:

CREATE DATABASE school3;

CREATE DATABASE IF NOT EXISTS school3;

DROP DATABASE school3;

DROP DATABASE IF EXISTS school3;

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

33

CREATE TABLE class( code INT PRIMARY KEY, teacher_id INT NOT NULL, subject VARCHAR(32) NOT NULL, room INT NOT NULL);

SQL to Create a Table

First we create a new database and connect to it:

Create the Class table:

CREATE DATABASE school3;USE school3;

Code Teacher_id Subject Room

908 7008 Data structures 114

926 7003 Java programming

101

931 7051 Compilers 222

951 7012 Software engineering

210

974 7012 Operating systems

109

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

34

Database Record Insert, Update, and Delete

There are SQL statements to insert, update, and delete records. See the SQL tutorial.

INSERT INTO teacher (id, last, first)VALUES (7088, 'Mak', 'Ron'), (7090, 'Wilson', 'Brian')

UPDATE teacherSET first = 'Ronald'WHERE first = 'Ron'

DELETE FROM teacherWHERE id = 7090

This can updatemultiple records!

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

35

SQL to Add Rows

Add rows to the Class table:

Code Teacher_id Subject Room

908 7008 Data structures 114

926 7003 Java programming

101

931 7051 Compilers 222

951 7012 Software engineering

210

974 7012 Operating systems

109

INSERT INTO class (code, teacher_id, subject, room)VALUES (908, 7008, 'Data structures', 114), (926, 7003, 'Java programming', 101), (931, 7051, 'Compilers', 222), (951, 7012, 'Software engineering', 210), (978, 7012, 'Operating systems', 109);

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

36

SQL Script create_school.sql

DROP DATABASE IF EXISTS school3;CREATE DATABASE school3;USE school3;

CREATE TABLE class( code INT PRIMARY KEY, teacher_id INT NOT NULL, subject VARCHAR(32) NOT NULL, room INT NOT NULL,);

INSERT INTO class (code, teacher_id, subject, room)VALUES (908, 7008, 'Data structures', 114),

(926, 7003, 'Java programming', 101),(931, 7051, 'Compilers', 222),(951, 7012, 'Software engineering', 210),

(978, 7012, 'Operating systems', 109);

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

37

SQL Script create_school.sql, cont’d

CREATE TABLE contact_info( id INT PRIMARY KEY, email_address VARCHAR(32) NOT NULL);

INSERT INTO contact_info (id, email_address)VALUES (1, 'mjane@sjsu.edu'),

(2, 'ksmith@sjsu.edu'),(3, 'jdoe@sjsu.edu'),(4, 'tnovak@sjsu.edu'),(5, 'lklein@sjsu.edu'),(6, 'trogers@sjsu.edu'),(7, 'athompson@sjsu.edu'),(8, 'jlane@sjsu.edu'),(9, 'mflynn@sjsu.edu');

Computer Science Dept.Spring 2015: February 17

CS 174: Web Programming© R. Mak

38

SQL Script create_school.sql, cont’d

CREATE TABLE teacher( id INT PRIMARY KEY, last VARCHAR(32) NOT NULL, first VARCHAR(32) NOT NULL, contact_id INT REFERENCES contact_info(id));

INSERT INTO teacher (id, last, first, contact_id)VALUES (7003, 'Rogers', 'Tom', 6),

(7008, 'Thompson', 'Art', 7),(7012, 'Lane', 'John’, 8),(7051, 'Flynn', 'Mabel', 9);

Use the MySQL source command:

source create_school.sql

top related