Download Chapter 3 Effects of IT on Strategy and Competition

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Concurrency control wikipedia , lookup

Entity–attribute–value model wikipedia , lookup

Database wikipedia , lookup

Microsoft Jet Database Engine wikipedia , lookup

Extensible Storage Engine wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

Ingres (database) wikipedia , lookup

Open Database Connectivity wikipedia , lookup

Clusterpoint wikipedia , lookup

SQL wikipedia , lookup

Database model wikipedia , lookup

Relational model wikipedia , lookup

PL/SQL wikipedia , lookup

Oracle Database wikipedia , lookup

Transcript
Oracle_ch3 HW (#7 & 8)
required
SQL> --7.
SQL> CREATE TABLE book_pricing (id, cost, retail, category)
2 AS (SELECT isbn, cost, retail, category
3
FROM books);
Table created.
SQL> --7b.(version 2)
SQL>
SQL> DROP TABLE book_pricing CASCADE CONSTRAINTS;
Table dropped.
required
SQL>
SQL> CREATE TABLE book_pricing
2 AS (SELECT isbn as id, cost, retail, category
3
FROM books);
Table created.
Dr. Chen, Oracle Database System (Oracle)
1
SQL> --8.
SQL> ALTER TABLE book_pricing
2 SET UNUSED (category);
Table altered.
SQL> -- use one of the following commands to verify
SQL>
Required (verify)
SQL> --8a
SQL> DESCRIBE book_pricing;
Name
Null?
----------------------------------------- -------ID
COST
Required (verify)
RETAIL
SQL> --8b
SQL> SELECT * FROM book_pricing;
ID
COST
RETAIL
---------- ---------- ---------1059831198
18.75
30.95
0401140733
14.2
22
4981341710
37.8
59.95
8843172113
31.4
55.95
3437212490
12.5
19.95
3957136468
47.25
75.95
1915762492
21.8
25
9959789321
37.9
54.5
2491748320
48
89.95
0299282519
19
28.75
8117949391
5.32
8.95
Dr. Chen, Oracle Database System (Oracle)
the result
Type
---------------------------VARCHAR2(10)
NUMBER(5,2)
NUMBER(5,2)
ID
COST
RETAIL
---------- ---------- ---------0132149871
17.85
29.95
9247381001
15.4
31.95
2147428890
21.85
39.95
14 rows selected.
2
What will we study today?
Data
…
Dr. Chen, Oracle Database System (Oracle)
…
Integrity
How to
achieve it?
Referential
Integrity
(Constraints)
3
Chapter 4
Constraints
Jason C. H. Chen, Ph.D.
Professor of MIS
School of Business
Gonzaga University
Spokane, WA 99258 USA
[email protected]
Dr. Chen, Oracle Database System (Oracle)
4
Objectives
• Explain the purpose of constraints in a table
• Distinguish among PRIMARY KEY, FOREIGN
KEY, UNIQUE, CHECK, and NOT NULL
constraints and the appropriate use for each
constraint
• Understand how constraints can be created when
creating a table or modifying an existing table
• Distinguish between creating constraints at the
column level and table level
Dr. Chen, Oracle Database System (Oracle)
5
Objectives (continued)
• Create PRIMARY KEY constraints for a single
column and a composite primary key (cpk)
• Create a FOREIGN KEY constraint
• Create a UNIQUE constraint
• Create a CHECK constraint
• Create a NOT NULL constraint using the ALTER
TABLE…MODIFY command
• Include constraints during table creation
• Use DISABLE and ENABLE commands
• Use the DROP command
Dr. Chen, Oracle Database System (Oracle)
6
Referential Integrity
Q2: Can we “delete” customers#5 if orders#1 is still in the
database? Why?
customers
pk
Customers#5
pk
orders#1
customer#
1001
…
1005
1020
orders
Order#
1000
…
1003
1012
LastName
MORALES
…
GIRARD
FALAH
Referred
NULL
NULL
NULL
Region
SE
…
NW
NE
fk
customer#
1005
1001
1007
…
ShipZip
ShipCost
98114
…
32328
49002
2.00
…
4.00
6.00
Q1: Can we “insert/create” orders#1 if customers#5
is not created? Why?
Dr. Chen, Oracle Database System (Oracle)
7
Referential Integrity
• Move to JLDB_Referential_Integrity.pptx
file
Dr. Chen, Oracle Database System (Oracle)
8
Refresh the Database
• 1. Create a new folder on c:\ as follows:
c:\oradata\chapter4
• 2. Go to Blackboard and download data
files from Oracle chapter4 and save under
c:\oradata\chapter4\
• 3. Run the following script file
– Start c:\oradata\chapter4\JLDB_Build_4.sql
Dr. Chen, Oracle Database System (Oracle)
9
Type the following SQL commands
-- chapter 4, Figure 4-5; p. 108
INSERT INTO customers (customer#, lastname,
firstname, region)
VALUES (1020, 'PADDY', 'JACK', 'NE');
--extra INSERT command
INSERT INTO orders (order#, customer#, orderdate)
VALUES (1021, 1021, '06-APR-09');
-- DELETE command
DELETE FROM customers
WHERE customer# = 1005;
Dr. Chen, Oracle Database System (Oracle)
10
Constraint Checked with Data Input
Figure 4-5
Insert a row to test the constraint
Dr. Chen, Oracle Database System (Oracle)
What cause the problem?
11
Using the FOREIGN KEY Constraint
Referential Integrity
customers
pk
pk
customer#
1001
…
1005
1020
orders
Order#
1000
…
1003
1012
LastName
MORALES
…
GIRARD
FALAH
Referred
NULL
NULL
NULL
Region
SE
…
NW
NE
fk
customer#
1005
1001
1007
…
ShipZip
ShipCost
98114
…
32328
49002
2.00
…
4.00
6.00
RULES:
1. You can’t add/insert a record to TABLE- (or the table with fk, e.g., orders)
unless there is a corresponding record in TABLE-1 (or the table with pk).
2. You can’t delete a record in TABLE-1 (or the table with pk, e.g.,
customers) if there is a record in TABLE- (or the table with fk).
 Order of entering data into the database: customers  orders
 Order of deleting data from the database: orders  customers
12
Dr. Chen, Oracle Database System (Oracle)
Review from Last Class
What are the three rules of naming table and field?
What are the three (total of four) required information
that should be described for each field?
1. Name (saved in “UPPER” case in the D.B.)
2. Type
3. Size
4. Constraint
L
Dr. Chen, Oracle Database System (Oracle)
13
What is a Constraint?
• A rule used to enforce business rules, practices,
and policies
• A rule used to ensure accuracy and integrity of
data
• A mechanism used to protect
– the relationship between data within an Oracle
table, or
– the correspondence between data in two different
tables.
– For example, the state entered must be one of the 50
states in the U.S.
Dr. Chen, Oracle Database System (Oracle)
14
Types of Constraints
• Integrity constraints: define primary and foreign
keys
• Value constraints: define specific data values or
data ranges that must be inserted into columns and
whether values must be unique or not NULL
• Table constraint: restricts the data value with
respect to all other values in the table
• Field (column) constraint: limits the value that
can be placed in a specific field, irrespective of
values that exist in other table records
Dr. Chen, Oracle Database System (Oracle)
15
I. Naming conventions for constraints
<tablename>_<fieldname>_<constraint id>
Where <constraint id> is:
• pk
PRIMARY KEY
• fk
REFERENCES <tablename> (pk)
• ck
CHECK <condition to be checked>
(note that cc stands for CHECK CONDITION)
• nn
NOT NULL
• uk
UNIQUE
e.g.,
s_id NUMBER (6) CONSTRAINT student_s_id_pk PRIMARY KEY;
Dr. Chen, Oracle Database System (Oracle)
16
Integrity Constraints
• Define primary key fields
• Specify foreign keys and their
corresponding table and column
references
• Specify composite keys
Dr. Chen, Oracle Database System (Oracle)
17
Creating a Table
CREATE TABLE tablename
(fieldname1 data_type (size)
[CONSTRAINT constraint_name constraint_type],
fieldname2 data_type (size),
…
[CONSTRAINT constraint_name constraint_type,]
…);
Dr. Chen, Oracle Database System (Oracle)
18
Creating Constraints
• When
– During table creation
– After table creation, by modifying the existing
table
• How
– Column level approach
– Table level approach
Dr. Chen, Oracle Database System (Oracle)
19
Creating Constraints at the Column Level
• If a constraint is being created at the column level, the
constraint applies to the column specified
Figure 4-1
Syntax for creating a column-level constraint
Creating Constraints at the Table Level
• Approach can be used to create any constraint type after all
table field definitions are completed except NOT NULL
• Required if constraint is based on multiple columns
Figure 4-2
Syntax for creating a table-level constraint
Dr. Chen, Oracle Database System (Oracle)
20
pk
CUSTOMERS
Customer# LastName
FirstName
Address
City
NUMBER(4) VARCHAR2(10)
VARCHAR2
(10)
VARCHAR2
(20)
VARCHAR2(12) VARCHAR
2(2)
pk
fk
State
Zip
Referred
Region
Email
VARCHAR2
(5)
NUMBER(
4)
CHAR(2)
VARCHAR2(
30)
ORDERS
Order#
Customer#
OrderDate
ShipDate
ShipStreet
ShipCity
ShipState
ShipZip
ShipCost
NUMBER(4)
NUMBER(4)
DATE
DATE
VARCHAR2(18)
VARCHAR2(15)
VARCHAR2(2)
NUMBER(4)
NUMBER(4,2)
CREATE TABLE Customers
(Customer# NUMBER(4),
LastName VARCHAR2(10) NOT NULL,
FirstName VARCHAR2(10) NOT NULL,
Address VARCHAR2(20),
City VARCHAR2(12),
State VARCHAR2(2),
Zip VARCHAR2(5),
Optional
Referred NUMBER(4),
(variable name)
Region CHAR(2),
Email VARCHAR2(30),
CONSTRAINT customers_customer#_pk PRIMARY KEY(customer#),
CONSTRAINT customers_region_ck
CHECK (region IN ('N', 'NW', 'NE', 'S', 'SE', 'SW', 'W', 'E')) );
Dr. Chen, Oracle Database System (Oracle)
21
Qs
• Q: How to display (describe) the table
structure that you just created of
“customers” table?
DESCRIBE customers;
• A: _______________________
• Q: Any constraint(s) displayed?
case is sensitive
NO!
• A: ____
• Q: How to display them? (UPPER case) Why?
• A:_SELECT constraint_name FROM
user_constraints WHERE
table_name=‘CUSTOMERS’;
Dr. Chen, Oracle Database System (Oracle)
22
pk
CUSTOMERS
Customer# LastName
FirstName
Address
City
NUMBER(4) VARCHAR2(10)
VARCHAR2
(10)
VARCHAR2
(20)
VARCHAR2(12) VARCHAR
2(2)
pk
fk
State
Zip
Referred
Region
Email
VARCHAR2
(5)
NUMBER(
4)
CHAR(2)
VARCHAR2(
30)
ORDERS
Order#
Customer#
OrderDate
ShipDate
ShipStreet
ShipCity
ShipState
ShipZip
ShipCost
NUMBER(4)
NUMBER(4)
DATE
DATE
VARCHAR2(18)
VARCHAR2(15)
VARCHAR2(2)
NUMBER(4)
NUMBER(4,2)
CREATE TABLE Orders
(Order# NUMBER(4),
Customer# NUMBER(4),
OrderDate DATE NOT NULL,
ShipDate DATE,
ShipStreet VARCHAR2(18),
ShipCity VARCHAR2(15),
Optional
ShipState VARCHAR2(2),
(variable name)
ShipZip VARCHAR2(5),
ShipCost NUMBER(4,2),
CONSTRAINT orders_order#_pk PRIMARY KEY(order#),
CONSTRAINT orders_customer#_fk FOREIGN KEY (customer#)
REFERENCES customers(customer#));
Dr. Chen, Oracle Database System (Oracle)
23
How to define ‘composite” key?
pk
ORDERS
Order#
Customer#
OrderDate
ShipDate
ShipStreet
ShipCity
ShipState
ShipZip
ShipCost
NUMBER(4)
NUMBER(4)
DATE
DATE
VARCHAR2(18)
VARCHAR2(15)
VARCHAR2(2)
NUMBER(4)
NUMBER(4,2)
pk
BOOKS
ISBN
Title
PubDate
PubID
Cost
Retail
Discount
Category
VARCHAR2(10)
VARCHAR2(30)
DATE
NUMBER(2)
NUMBER(5,2)
NUMBER(5,2)
NUMBER(4,2)
VARCHAR2(12)
fk
Order#
NUMBER(4)
cpk
Item#
NUMBER(2)
fk
ORDERITEMS
ISBN
VARCHAR2(10)
Quantity
NUMBER(3)
PaidEach
NUMBER(5,2)
CREATE TABLE ORDERITEMS
( Order# NUMBER(4),
Item# NUMBER(2),
Optional
ISBN VARCHAR2(10),
Quantity NUMBER(3) NOT NULL,
(variable name)
PaidEach NUMBER(5,2) NOT NULL,
CONSTRAINT orderitems_order#item#_pk PRIMARY KEY (order#,
item#),
CONSTRAINT orderitems_order#_fk FOREIGN KEY (order#)
REFERENCES orders (order#) ,
CONSTRAINT orderitems_isbn_fk FOREIGN KEY (isbn)
REFERENCES books (isbn) ,
CONSTRAINT oderitems_quantity_ck CHECK (quantity > 0) );
Dr. Chen, Oracle Database System (Oracle)
24
Your Job
• You need to study and understand all
CREATE TABLE SQL commands in
JLDB_Build_4.sql
Dr. Chen, Oracle Database System (Oracle)
25
Enforcement of Constraints
• All constraints are enforced at the table
level
• If a data value violates a constraint, the
entire row is rejected
Dr. Chen, Oracle Database System (Oracle)
26
Constraint Types
Table 4-1
Constraint types
Dr. Chen, Oracle Database System (Oracle)
27
Your Turn …
Dr. Chen, Oracle Database System (Oracle)
28
Primary Key Constraints
 Syntax:
CONSTRAINT constraint_name PRIMARY KEY
Create a table with the following information:
1. Name of the table: students
2. Fields: s_id number with 6 digits and is a primary key, s_name
character with 30 chars, s_class with 2 chars, s_dob with DATE
SQL> CREATE TABLE students
2
(s_id NUMBER(6) CONSTRAINT students_s_id_pk PRIMARY
KEY,
3
s_name VARCHAR2(30),
4
s_class CHAR(2),
5
s_dob DATE);
Dr. Chen, Oracle Database System (Oracle)
29
Primary Key Constraints (cont.)
 at the Column-Level
SQL> CREATE TABLE students
2
(s_id NUMBER(6) CONSTRAINT students_s_id_pk PRIMARY
KEY,
3
s_name VARCHAR2(30),
4
s_class CHAR(2),
5
s_dob DATE);
 at the Table-Level
Practice:
Type in one of the command.
SQL> CREATE TABLE students
2
(s_id NUMBER(6),
3
s_name VARCHAR2(30),
4
s_class CHAR(2),
5
s_dob DATE,
6
CONSTRAINT students_s_id_pk PRIMARY KEY (s_id));
Dr. Chen, Oracle Database System (Oracle)
30
Your Job
• Read the rest of powerpoint slides and
practice all examples
• Skip to another practice example with
THREE new tables
Dr. Chen, Oracle Database System (Oracle)
31
Adding Constraints to Existing Tables
• Constraints are added to an existing table
with the ALTER TABLE command
• Add a NOT NULL constraint using
MODIFY clause
• All other constraints are added using ADD
clause
Dr. Chen, Oracle Database System (Oracle)
32
Using the PRIMARY KEY Constraint
• Ensures that columns do not contain duplicate
or NULL values
• Only one per table is allowed
Figure 4-3 Syntax of the ALTER TABLE command to add a PRIMARY KEY constraint
Dr. Chen, Oracle Database System (Oracle)
33
Drop Contraint
ALTER TABLE orderitems
DROP CONSTRAINT
orderitems_order#item#_pk PRIMARY
KEY (order#, item#);
Dr. Chen, Oracle Database System (Oracle)
34
Deletion of Foreign Key Values
• You cannot delete a value in a parent table
referenced by a row in a child table
• Use ON DELETE CASCADE keywords
when creating FOREIGN KEY constraint –
it automatically deletes a parent row when
the row in a child table is deleted
Dr. Chen, Oracle Database System (Oracle)
35
Practice …
• Let’s try to create additional tables
– JustLee Books would like to create some new
tables to store office equipment inventory data.
EQUIP
DEPT
DeptID
Dname
Fax
EquipID
Edesc
Purchdate
Rating
DeptID
EtypeID
ETYPES
EtypeID
Etypename
Figure 4-26 E-R model for equipment tables
Dr. Chen, Oracle Database System (Oracle)
36
Including Constraints during Table Creation
EQUIP
pk DEPT
pk EquipID
DeptID
Dname
Fax
fk
Edesc
Purchdate
Rating
DeptID
EtypeID fk
• Each department name must be unique.
• Each department must be assigned a name .
•
•
•
•
•
pk ETYPES
EtypeID
Etypename
unique
NOT NULL
Each equipment type name must be unique
unique
Each equipment type must be assigned a name. NOT NULL
Each equipment item must be assigned a valid department.
If an equipment item is assigned a type, it must be a valid type.
Valid rating values for equipment are A, B, and C. ck
Dr. Chen, Oracle Database System (Oracle)
37
DEPT table creation
-- chapter 4, Figure 4-27; p. 122
CREATE TABLE dept
(deptid NUMBER(2),
dname VARCHAR2(20) NOT NULL,
fax VARCHAR2(12),
CONSTRAINT dept_deptid_pk PRIMARY KEY (deptid),
CONSTRAINT dept_dname_uk UNIQUE (dname) );
• Each department name must be unique.
unique
• Each department must be assigned a name . NOT NULL
Dr. Chen, Oracle Database System (Oracle)
38
What is the main difference on the following
“CREATE TABLE” statements?
Constraints are defined at the table-level
-- chapter 4, Figure 4-27; p. 122
CREATE TABLE dept
(deptid NUMBER(2),
dname VARCHAR2(20) NOT NULL,
fax VARCHAR2(12),
CONSTRAINT dept_deptid_pk PRIMARY KEY (deptid),
CONSTRAINT dept_dname_uk UNIQUE (dname) );
Constraints are defined at the column-level
-- chapter 4, Figure 4-30; p. 124
CREATE TABLE dept
(deptid NUMBER(2) CONSTRAINT dept_deptid_pk PRIMARY KEY,
dname VARCHAR2(20) NOT NULL CONSTRAINT dept_dname_uk
UNIQUE,
fax VARCHAR2(12));
Dr. Chen, Oracle Database System (Oracle)
39
• Each equipment type name must be unique
-- chapter 4, Figure 4-28; p. 123
• Each equipment type must be assigned a name.
CREATE TABLE etypes
(etypeid NUMBER(2),
etypename VARCHAR2(20) NOT NULL,
CONSTRAINT etypes_etypeid_pk PRIMARY KEY (etypeid),
CONSTRAINT etypes_etypename_uk UNIQUE (etypename) );
-- chapter 4, Figure 4-29; p. 123
CREATE TABLE equip
• Each equipment item must be assigned a valid department.
(equipid NUMBER(3),
• If an equipment item is assigned a type, it must be a valid
type.
edesc VARCHAR2(30),
purchdate DATE,
• Valid rating values for equipment are A, B, and C.
rating CHAR(1),
deptid NUMBER(2) NOT NULL,
etypeid NUMBER(2),
CONSTRAINT equip_equipid_pk PRIMARY KEY (equipid),
CONSTRAINT equip_deptid_fk FOREIGN KEY (deptid)
REFERENCES dept (dept_id),
CONSTRAINT equip_etypeid_fk FOREIGN KEY (etypeid)
REFERENCES etypes (etypeid),
CONSTRAINT equip_rating_ck CHECK (rating IN ('A', 'B', 'C', 'D')) );
Dr. Chen, Oracle Database System (Oracle)
40
• HW!!
• Practice all the examples in the text.
• A Script file is available on the Bb (file name:
Ch4Queries.sql)
• After completing all examples, do the HW (hint: see
the tables below for the final schema and the sample
output on the Bb under “Assignments”
store_reps
pk
rep_id
NUMBER(5)
pk
last
VARCHAR2(15)
first
VARCHAR2(10)
cpk, fk
name
VARCHAR2(30)
rep_contracts
store_id
NUMBER(8)
Dr. Chen, Oracle Database System (Oracle)
name
VARCHAR2(5)
base_salary
NUMBER(7,2)
fk
book_stores
store_id
NUMBER(8)
comm
CHAR(1)
contact
VARCHAR2(30)
cpk
quarter
CHAR(3)
rep_id
NUMBER(5)
cpk, fk
rep_id
NUMBER(5)
41
Homework - Hands-On Assignments
Upload the SQL and spooled files (*.sql and *.txt) to the Bb
(under “Assignments & Projects”) by the deadline
Read and Practice all examples on Chapters 4
• 1. Run the script files (in the folder
\oradata\chapter4\): JLDB_Build_4.sql
• 2. Read Oracle assignment and create a script file
Oracle_ch4_Lname_Fname.sql for questions (#1
to #8; p.133) on “Hands-on Assignments”. .
• 3. Execute and test one problem at a time and make
sure they are all running successfully.
• 4. When you done, spool the script files (see next
slide for spooling instructions) and UPLOAD both
*.sql and spooled file
Oracle_ch4_Spool_Lname_Fname.txt to
Bb by the midnight before the next class.
• Turn in a hardcopy of spooled file (*.txt
ONLY) to me in the class.
[correction on p.138: Name Datatype should be VARCHAR2(5)]
Dr. Chen, Oracle Database System (Oracle)
42
How to Spool your Script and Output Files
After you tested the script file of Oracle_ch4_Lname_Fname.sql successfully,
follow the instructions below to spool both script and output files:
Step 0. Run the following script file from SQL*Plus (since you have created
JLDB tables)
– Start c:\oradata\chapter4\JLDB_Build_4.sql
• 1. type the following on SQL>
– Spool c:\oradata\Oracle_ch4_Spool_Lname_Fname.txt (make sure your name is entered)
• 2. open Oracle_ch4_Lname_Fname.sql that you already tested
• 3. copy and paste all the SQL commands (including all comments) to the
SQL*PLUS
• 4. type Spool Off on the SQL>
The output should contain your personal information, all SQL commands and
their solution on the .txt file and saved in C: drive (oradata\ folder)
Upload the SQL and spooled files (*.sql and *.txt) to the Bb
(under “Assignments & Projects”) by the deadline
Dr. Chen, Oracle Database System (Oracle)
43
• End of chapter 4
Dr. Chen, Oracle Database System (Oracle)
44