Exercise 1 – Produce an ERD for UniSpares PURCHASE ORDER

advertisement
Case Study 8: MS SQL SERVER 2005 – Management Studio – Create tables via SQL Script
UNISPARES EXAMPLE
MS SQL SERVER 2005
Management Studio – Create tables via SQL Script
UniSpares EXAMPLE
The following guide shows how to convert an entity relationship diagram (ERD) for
UniSpares to a SQL database using SQL script.
You will have experience ERDs in MS Access. The ERD is the diagram produced via the
relationship screen.




The purpose of this exercise is to derive an ERD on paper.
To use the ERD to derive a set of normalized tables.
To create the database by generate a SQL script file.
Write some basic SQL code to validate the data. To insert data into the database.
SQL Coding Exercises
ER Modelling
Exercise 1 – Produce an ERD for UniSpares PURCHASE ORDER (PO).
Exercise 2 – Produce an ERD for UniSpares INVOICE.
Exercise 3 –Create an ERD for UniSpares
SCHEMA - PHYSICAL
Exercise 4 – Create the physical schema for UniSpares ERD.
SCHEMA - LOGICAL
Exercise 5 – Create the logical schemas for UniSpares ERD.
Inserting Data
Exercise 6 – Inserting data to the UniSpares database.
MODEL SOLUTIONS
Solution Exercise 1 – Produce an ERD for UniSpares PURCHASE ORDER (PO).
Solution Exercise 2 – Produce an ERD for UniSpares INVOICE.
Solution Exercise 3 –Create an ERD for UniSpares
Solution Exercise 4 – Create the physical schema for UniSpares ERD.
Script file : Unispares.schema.sql
Solution Exercise 5 – Create the logical schemas for UniSpares ERD.
Script file : unispares.schemaview.PO.QA.sql
Script file : unispares.schemaview.Invoice.QA.sql
Script file : unispares.schemaview.PO.EM.sql
Solution Exercise 6 – Inserting data to the UniSpares database.
Script file :
Mansha Nawaz
UNISPARES EXAMPLE
Case Study 8: 1
Case Study 8: MS SQL SERVER 2005 – Management Studio – Create tables via SQL Script
UNISPARES EXAMPLE
ER Modeling
Exercise 1 – Produce an ERD for UniSpares PURCHASE ORDER (PO).
Unispares is a retailer of computer equipment. Unispares use a standard Purchase Order Form (Fig A)
when buying goods from its suppliers.
FIGURE (a) SAMPLE PURCHASE ORDER (PO) FORM
UNISPARES
PURCHASE ORDER (PO) FORM
Unispares Computer Ltd, 99 Borough RD, Middlesbrough, TS1 3BA
tel: 01642-123456 fax: 01642-654321
PO No. 002594
PO Date: 15.12.96
Supplier Name:
Supplier Address:
PO DETAILS :
PART#
CPU012
PRI6214
MON023
CON061
CPU015
KEY031
CPU072
SELWOOD CONSULTANCY LTD
KINGSDAEL HOUSE
MARINTET ROAD
PART DESCRIPTION
Pentium 100 16/1000
HP Deskjet 660C
Philips 14" Colour Monitor
HP Deskjet 660C Cartridge
Pentium 166 32/2000 CD
Extended Keyboard
Pentium 120 16/1000
COST£
175.00
125.00
45.00
20.00
700.00
6.00
400.00
Nett
Vat
Gross
QTY TOTAL
2
350.00
3
375.00
1
45.00
4
100.00
1
700.00
10
60.00
2
800.00
£
1685.00
£
294.88
£
1979.88
Payment Terms : COD/7days/30days/45days
In case of queries, please contact staff# 012 staff-name: FRED BLOGGS
ext. 321
TASKS
For the above form:
a. Identify all entities and allocate the main attributes indicating primary key(s).
b. Derive an Entity Relationship Diagram (ERD) showing the entities of interest and
associated attributes, relationships and dependency.
c. Draw the ERD in MS SQL Server 2005
d. List a set of tables derived from the ERD and indicate primary and foreign keys.
e. Implement the tables in MS SQL Server 2005.
f. Populate the tables with the sample data provided.
You may decide to modify the data requirements or generate additional data attributes to
assist in your design of the database. Write down details of any assumptions you have
made that you feel are important.
Mansha Nawaz
UNISPARES EXAMPLE
Case Study 8: 2
Case Study 8: MS SQL SERVER 2005 – Management Studio – Create tables via SQL Script
UNISPARES EXAMPLE
You may decide to follow the ERD’s in Answer Points.
Exercise 2 – Produce an ERD for UniSpares INVOICE.
Unispares is a retailer of computer equipment. Unispares use a standard Invoice (Fig B) when supplying
goods to its customers.
FIGURE (b) CUSTOMER INVOICE
UNISPARES INVOICE
Invoice No.
002594
Customer Name: University OF Teesside
Cust. Address : Borough Rd, Middlesbrough, TS1 3BA
Invoice Date: 15.12.96
Cust. Contact :
Cust PO.:
Delivery Date : 16.12.96
Delivery Area : 4
Staff# : 12
MARK
09123
Staff-Name : FRED BLOGGS
INVOICE DETAILS :
PART#
CPU012
PRI6214
PART DESCRIPTION
Pentium 100 16/1000
HP Deskjet 660C
QTY
2
5
UNIT£
250.00
100.00
Nett
£
Vat
£
Gross £
TOTAL
500.00
500.00
1000.00
175.00
1175.00
Terms of Business : COD/7days/30days/45days
TASKS
For the above form:
g. Identify all entities and allocate the main attributes indicating primary key(s).
h. Derive an Entity Relationship Diagram (ERD) showing the entities of interest and
associated attributes, relationships and dependency.
i. Draw the ERD in MS SQL Server 2005
j. List a set of tables derived from the ERD and indicate primary and foreign keys.
k. Implement the tables in MS SQL Server 2005.
l. Populate the tables with the sample data provided.
You may decide to modify the data requirements or generate additional data attributes to
assist in your design of the database. Write down details of any assumptions you have
made that you feel are important.
You may decide to follow the ERD’s in Answer Points.
Mansha Nawaz
UNISPARES EXAMPLE
Case Study 8: 3
Case Study 8: MS SQL SERVER 2005 – Management Studio – Create tables via SQL Script
UNISPARES EXAMPLE
Exercise 3 –Create an ERD for UniSpares
by merge the PURCHASE ORDER (PO) and INVOICE.
a. Merge the PO ERD and the INVOICE ERD to create an UNISPARES ERD.
(Remember to only include one occurrence of an entity on the diagram)
SCHEMA - PHYSICAL
Exercise 4 –Create the physical schema for UniSpares ERD.
SQL Server Physical Schema is the SQL commands required for Table
Definitions.
Create table Customer
(Customer_no char(4),
name varchar(30) ,
street varchar(30) ,
town varchar(30),
county varchar(30),
post_code char(8),
constraint customer_key primary key (customer_no),
constraint customer_numbers check (customer_no between '1111' and '9999'),
constraint post_codes check ((post_code like '[A-Z][A-Z][0-9][0-9] [0-9][A-Z][A-Z]') or
(post_code like '[A-Z][A-Z][0-9][ ] [0-9][A-Z][A-Z]')),
constraint countys check (county in ('Durham','North Yorkshire', 'Northumberland')));
These commands are loaded into into a New Script interface
executed to create the tables for the ERD’s.
and
Create a schema for the tables identified in the UniSpares ERD (ex 3
model).
a.
Run MS SQL Server 2005 and create a new database called UniSpares. Click on the
database in the Object Window pane before executing any of the SQL commands.
Failure to do so means all the created tables etc will appear in the master database.
b.
Click on the link below to automatically load the SQL code into a New Query
window
. The SQL code builds the above ERD and is also provided
in the appendix of this document.
Unispares.schema.sql
c.
Write and save a Unispares_Drop Query to remove the tables. Please note the drop
tables need to be in reverse order of the sequence in which they are created.
Mansha Nawaz
UNISPARES EXAMPLE
Case Study 8: 4
Case Study 8: MS SQL SERVER 2005 – Management Studio – Create tables via SQL Script
UNISPARES EXAMPLE
** Drop commands not provided for this exercise
d.
Examine the SQL code structure and contents of each table. Execute the SQL
Code by clicking
. Expand the UniSpares database – Tables and note
the tables have been created.
e.
Use the UniSpares ERD to check the structure and contents of each table, as well as
the relationships between them. Click on Database Diagrams and create a new
diagram to represent the ERD.
f.
Write and save a Unispares_Insert Query to insert data into the tables
** Insert commands not provided for this exercise
g.
Examine the SQL code structure and contents of inserting sample data into each
table. Execute the SQL Code by clicking
. Expand the UniSpares
database – Tables and note the tables have data inserted.
Select
each table.
and use the following commands to examine the content of
SELECT *
FROM tablename
h.
The SQL code Unispares.schema.sql for has been written in notepad. However
MS SQL Server 2005 can generate the SQL Script Code itself. Right click the
database UniSpares and Script Database > Create To > New Query Editor Window
. Compare the auto generated code with that written in notepad.
Compare, contrast and familiarise yourself with the SQL code.
SCHEMA - LOGICAL
Exercise 5 – Create the logical schemas for UniSpares ERD.
SQL Server logical Schema are the SQL commands required for View
Definitions.
These commands are loaded into a New Script interface
executed to create the views derived from the ERD’s.
and
Create the schema views for PO and INVOICES as seen in Ex 1.
Mansha Nawaz
UNISPARES EXAMPLE
Case Study 8: 5
Case Study 8: MS SQL SERVER 2005 – Management Studio – Create tables via SQL Script
UNISPARES EXAMPLE
a) Use Management Studio to create the views
b) Write your own SQL Code for UniSpares view schemas in Notepad /
MS Word.
I. Load and execute in MS SQL Server 2005 – Management Studio.
II. Validate your code and remove any errors.
Inserting Data
Exercise 6 – Inserting data to the UniSpares database
Using the INSERT command write an insert schema to load the data in the
PO and INVOICES forms as shown in Ex 1.
Mansha Nawaz
UNISPARES EXAMPLE
Case Study 8: 6
MS SQL – QUERY ANALYSER – UNISPARES SOLUTIONS
MODEL SOLUTIONS
Solution Exercise 1 – Produce an ERD for UniSpares PURCHASE ORDER (PO).
a. Identify all entities and allocate the main attributes indicating primary key(s).
ORDERS(po#, odate)
SUPPLIERS(sname, saddress, …….)
PARTS(p#, pdesc, …..)
PAYMENT-TERMS(pt#, ptdesc)
CONTACT(ct#, cname, cext)
b. and c.
Entity Relationship Diagram (ERD)
ASCENT DIAGRAM : ER Model for
PURCHASE ORDERS
PO-ERD in MS SQL - EM
MS SQL – QUERY ANALYSER UNISPARES SOLUTIONS by Mansha Nawaz
7
MS SQL – QUERY ANALYSER – UNISPARES SOLUTIONS
c. List a set of tables derived from the ERD and indicate primary and foreign keys.
PURCHASE-ORDERS(@po#, odate, s#, pt#, ct#)
SUPPLIERS(@s#, sname, saddress, …….)
PARTS(@p#, pdesc, …..)
PO-PARTS(@po, @p#, qty)
PAYMENT-TERMS(@pt#, ptdesc)
CONTACT(@ct#, cname, cext)
For reference purposes note how the data is inserted into the tables
Populate your skeleton tables using the data provided in the above order form.
PURCHASE-ORDERS
(po#,
odate
002594
15.12.96
s#
pt#
000001 1
SUPPLIERS
(s#,
000001
sname,
Selwood Consultancy
PARTS
(p#,
CPU012
PRI6214
MON023
CON061
CPU015
KEY031
CPU072
pdesc, …..)
Pentium 100 16/1000
HP Deskjet 660C
Philips 14" Colour Monitor
HP Deskjet 660C Cartridge
Pentium 166 32/2000 CD
Extended Keyboard
Pentium 120 16/1000
ct#)
01
saddress, …….)
Kingsdale House
PAYMENT-TERMS
(pt#,
ptdesc)
1
COD
2
7 days
3
30 days
MS SQL – QUERY ANALYSER UNISPARES SOLUTIONS by Mansha Nawaz
8
MS SQL – QUERY ANALYSER – UNISPARES SOLUTIONS
4
45 days
CONTACT
(c#,
01
cname,
BLOGGS F.
PO-PART
(p#,
CPU012
PRI6214
MON023
CON061
CPU015
KEY031
CPU072
QTY,
2
3
1
4
1
1
2
cext)
321
po#)
002594
002594
002594
002594
002594
002594
002594
The above data set is only a partial view. Additional orders can be generated and added to the database. The
following shows how the sample order (figure A-2) affects our database.
Note : No REDUNDANT or DUPLICATED data in tables which show strong data INTEGRITY.
TO GENERATE AN ADDITIONAL PURCHASE ORDER
FIGURE (a2) SAMPLE PURCHASE ORDER (PO) FORM
UNISPARES ORDER FORM
Unispares Computer Ltd
99 Borough RD, Middlesbrough, TS1 3BA
tel: 01642-123456 fax: 01642-654321
Unispares Purchase Order No. 002595
Order Date: 15.12.96
Supplier Name: JOE BLOGGS Computers
Address:
LINTHORPE RD
MIDDLESBROUGH
CLEVELAND
TS1 3BA
ORDER DETAILS :
ITEM# PART# PART DESCRIPTION
1
CPU012
Pentium 100 16/1000
2
PRI6214
HP Deskjet 660C
3
MON023
Philips 14" Colour Monitor
4
CON062
HP Deskjet 690C Cartridge
5
CPU016
Pentium 200 32/2000 CD
6
CPU074
Pentium Pro 150 16/1000
QTY
10
5
4
4
1
2
Payment Terms : COD/7days/30days/45days
In case of queries, please contact : HARRY SMITH
ext. 322
Populate your skeleton tables using the data provided in the above order form.
PURCHASE-ORDERS
MS SQL – QUERY ANALYSER UNISPARES SOLUTIONS by Mansha Nawaz
9
MS SQL – QUERY ANALYSER – UNISPARES SOLUTIONS
(po#,
002594
002595
odate
15.12.96
15.12.96
s#
pt#
000001 1
ct#)
01
000002 3
02
SUPPLIERS
(s#,
sname,
000001
Selwood Consultancy
000002
Joe Bloggs Computers
PARTS
(p#,
CPU012
PRI6214
MON023
CON061
CON062
CPU015
CPU016
CPU074
KEY031
CPU072
saddress, …….)
Kingsdale House……
Linthorpe Rd…..
pdesc, …..)
Pentium 100 16/1000
HP Deskjet 660C
Philips 14" Colour Monitor
HP Deskjet 660C Cartridge
HP Deskjet 690C Cartridge
Pentium 166 32/2000 CD
Pentium 200 32/2000 CD
Pentium Pro 150 16/1000
Extended Keyboard
Pentium 120 16/1000
PAYMENT-TERMS (pt#,
1
2
3
4
CONTACT (c#,
01
02
PO-PARTS
(p#,
CPU012
PRI6214
MON023
CON061
CPU015
KEY031
CPU072
CPU012
PRI6214
MON023
CON062
CPU016
CPU074
QTY,
2
3
1
4
1
10
2
10
5
4
4
1
2
ptdesc)
COD
7 days
30 days
45 days
cname,
BLOGGS FRED
SMITH HARRY
cext)
321
322
po#)
002594
002594
002594
002594
002594
002594
002594
002595
002595
002595
002595
002595
002595
For reference purposes only ... note the SQL code generated by Ascent2
MS SQL – QUERY ANALYSER UNISPARES SOLUTIONS by Mansha Nawaz
10
MS SQL – QUERY ANALYSER – UNISPARES SOLUTIONS
TABLES IN SQL FORMAT
Generated by ASCENT2
create table --contact-(
@ct# char(15) not null
ctext char(15)
)
create table --payterms-(
@pt# char(15) not null
pt-desc char(15)
)
create table --supplier-(
@s# char(15) not null
sname char(15)
saddress char(15)
)
create table --po-(
@po# char(15) not null
podate char(15)
s# char(15)
pt# char(15)
contact char(15)
)
create table --part-(
@p# char(15) not null
pdesc char(15)
)
create table --part-po-(
@part# char(15) not null
@po# char(15) not null
cost char (15)
qty char(15)
Solution Exercise 2 – Produce an ERD for UniSpares INVOICE.
ASCENT DIAGRAM :
ER Model for INVOICE
MS SQL – QUERY ANALYSER UNISPARES SOLUTIONS by Mansha Nawaz
11
MS SQL – QUERY ANALYSER – UNISPARES SOLUTIONS
INVOICES ERD in MS SQL - EM
MS SQL – QUERY ANALYSER UNISPARES SOLUTIONS by Mansha Nawaz
12
MS SQL – QUERY ANALYSER – UNISPARES SOLUTIONS
Solution Exercise 3 –Create an ERDs for UniSpares
by merge the PURCHASE ORDER (PO) and INVOICE.
Solution Exercise 4 – Create the physical schema for UniSpares ERD.
Script file : Unispares.schema.sql
Solution Exercise 5 – Create the logical schemas for UniSpares ERD.
Query Analyser Solutions
Script file : unispares.schemaview.PO.QA.sql
CREATE VIEW [Purchase Orders]
AS
SELECT PO.PO, PO.[date], PO.s#, supplier.name, supplier.street, supplier.town, supplier.county,
supplier.postcode, [po-parts].p#, parts.[desc], [po-parts].qty, PO.pt#,
payments.[desc], PO.ct#, contacts.name, contacts.ext
FROM
PO, supplier, parts, [po-parts], payments, contacts
WHERE
PO.PO = [po-parts].po# AND
PO.s# = supplier.s# AND
[po-parts].p# = parts.p# AND
PO.pt# = payments.pt# AND
PO.ct# = contacts.ct#
GO
SELECT *
FROM [Purchase Orders]
MS SQL – QUERY ANALYSER UNISPARES SOLUTIONS by Mansha Nawaz
13
MS SQL – QUERY ANALYSER – UNISPARES SOLUTIONS
Script file : unispares.schemaview.Invoice.QA.sql
CREATE VIEW [Customer Invoices]
AS
SELECT invoices.invoice#, invoices.[date], invoices.c#, customers.name, customers.street, customers.town,
customers.county, customers.postcode, [inv-parts].p#, parts.[desc], [inv-parts].qty, invoices.pt#,
payments.[desc] AS paymenttpye, invoices.ct#, contacts.name AS contactname, contacts.ext
FROM
invoices, customers, parts, [inv-parts], payments, contacts
WHERE
invoices.invoice# = [inv-parts].invoice# AND
invoices.c# = customers.c# AND
[inv-parts].p# = parts.p# AND
invoices.pt# = payments.pt# AND
invoices.ct# = contacts.ct#
SELECT *
FROM [Customer Invoices]
Enterprise Manager
Script file : unispares.schemaview.PO.EM.sql
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE VIEW [PO View EM]
AS
SELECT PO.PO, [po-parts].po#, PO.[date], PO.s#, supplier.name, supplier.street, supplier.town, supplier.county,
supplier.postcode, [po-parts].p#, parts.p# AS popart, parts.[desc], [po-parts].qty, PO.pt#, payments.pt# AS
paymentterms, payments.[desc] AS paymentdesc, PO.ct#, contacts.ct# AS contactno, contacts.name AS
contactname, contacts.ext
FROM
PO INNER JOIN
payments ON PO.pt# = payments.pt# INNER JOIN
supplier ON PO.s# = supplier.s# INNER JOIN
[po-parts] ON PO.PO = [po-parts].po# INNER JOIN
parts ON [po-parts].p# = parts.p# INNER JOIN
contacts ON PO.ct# = contacts.ct#
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SELECT *
FROM [PO View EM]
Solution Exercise 6 – Inserting data to the UniSpares database.
Script file :
MS SQL – QUERY ANALYSER UNISPARES SOLUTIONS by Mansha Nawaz
14
Download