Presentation is loading. Please wait.

Presentation is loading. Please wait.

CMPE Database Systems Workshop Review: May 2 – 16, 2017

Similar presentations


Presentation on theme: "CMPE Database Systems Workshop Review: May 2 – 16, 2017"— Presentation transcript:

1 CMPE 180-38 Database Systems Workshop Review: May 2 – 16, 2017
Department of Computer Engineering San Jose State University Summer 2017 Instructor: Ron Mak

2 Database System Architecture
Database system: A computer-based system that enables efficient interaction between users and information stored in a database. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

3 Steps to Develop a Database
It’s an iterative process! Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

4 Database Requirements
First and most critical step: Collect, define, and visualize the requirements. What data will the database hold and how? What will be the capabilities and functionalities of the database? Reliability, performance, and security issues? Use the requirements to model and implement the database and to create the front-end applications.

5 Conceptual Database Model
Visualize the requirements. Use a conceptual data modeling technique. Example: Entity-relationship (ER) modeling Implementation independent: No dependencies on the logic of a particular database management system (DBMS). Example DBMS: Oracle, MySQL, etc. Blueprint for the logical model.

6 Logical Database Model
Create the relational database model. Later: Non-relational NoSQL models. It’s usually straightforward to map an ER model to a relational model.

7 Physical Database Model
The physical model is the actual database implementation. Use relational DBMS (RDBMS) software. Later: NoSQL systems Structured Query Language (SQL) commands to create, delete, modify, and query database structures.

8 Front-End Application Development
End users generally do not access the database directly. Front-end applications Access the database directly. Provide end users with safe application-oriented interfaces to query and manipulate the data. Fulfill the end user’s requirements.

9 Operational vs. Analytical Databases
Operational database Supports day-to-day operational business needs. Contains operational (transactional) information. Example: sales transactions Analytical database Supports analytical business tasks. Contains analytical information. Examples: usage patterns, sales trends, etc. Derived from operational information. Often associated with data warehousing.

10 Entities and Attributes
Entity Represents a real-world concept. Examples: customer, product, store, event, etc. Data that the database stores. Attribute Characteristic of an entity that the database stores. Examples (for a customer): name, address, id, etc. A unique attribute of an entity has a value that is different for each entity instance.

11 Entities and Attributes, cont’d
In an ER diagram (ERD), show an entity with a rectangle and its attributes with ovals. Underline the unique attribute. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

12 Entities and Attributes, cont’d
An entity can have multiple unique attributes. Each one is called a candidate key. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

13 Composite Attributes A composite attribute is composed of several attributes. Parenthesize the name of the composite attribute. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

14 Composite Attributes, cont’d
An entity’s unique attribute can be composite. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

15 Multivalued Attributes
An entity instance can have multiple values for an attribute. If the number of values is fixed, we can use separate attributes instead. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

16 Derived Attributes The value of a derived attribute is not stored.
It’s calculated from the values of the other attributes and additional data such as the current date. Show with a dashed oval. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

17 Optional Attributes An optional attribute does not always have to have a value. Indicate with (O). Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

18 Relationships Each entity in an ER diagram must be related to at least one other entity. Show a relationship with a diamond and connect the diamond to the entities that are part of the relationship. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

19 Relationship Cardinality
Show cardinality (how many instances of an entity) with symbols at the end of the relationship lines. Maximum symbol closest to the entity. Minimum symbol further away. Zero, one, many Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

20 Relationship Cardinality, cont’d
Read each relationship in both directions in this order: rectangle diamond cardinality Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

21 Types of Relationships
One-to-one (1:1) One-to-many (1:M) Each employee is allotted at most one vehicle. Each vehicle is allotted to exactly one employee. Each region has located in it at least one (i.e., many) stores. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

22 Types of Relationships, cont’d
Many-to-many (M:N) Each employee is assigned to no or several (i.e., many) projects. Each project has assigned to it at least one (i.e., many) employee. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

23 Exact Cardinalities Indicate exact cardinalities with parenthesized minimum and maximum values. Example: (2, 6) Use M for a non-specific minimum or maximum. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

24 Relationship Attributes
An relationship can also have attributes. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

25 Unary Relationships In a unary relationship, an entity is involved in a relationship with itself. One instance has a relationship with another instance of the same entity. You can indicate the relationship role. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

26 Multiple Relationships
Two entities can have multiple relationships with each other. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

27 Weak Entities A weak entity does not have its own unique attribute.
It only has a partial key. Underline the partial key with dashes. Therefore, it must be associated with an owner entity via an identifying relationship. Indicate the weak entity and the identifying relationship with double borders. The partial key and the owner attribute’s unique attribute uniquely identifies the weak entity.

28 Weak Entities, cont’d Database Systems by Jukić, Vrbsky, & Nestorov
Pearson 2014 ISBN

29 Associative Entities An associative entity is an alternate way to depict a many-to-many (M:N) relationship. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

30 Associative Entities, cont’d
Associative entity for a unary M:N relationship. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

31 ER Diagram Example Database Systems by Jukić, Vrbsky, & Nestorov
Pearson 2014 ISBN

32 Logical Database Model
Map the ER diagram to a logical model represented as a relational schema. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

33 Conditions for a Table to be a Relation
Each column must have a name. Within a table, each column name must be unique. All values in each column must be from the same (predefined) domain. Within a table, each row must be unique. Within each row, each value in each column must be single-valued. Multiple values of the content represented by the column are not allowed in any rows of the table.

34 Relational vs. Non-Relational Tables
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

35 Additional Properties for a Relational Table
The order of columns is irrelevant. The order of rows is irrelevant.

36 Primary Key Each relation must have a primary key.
A column or set of columns whose value uniquely identifies each row. Underline the primary key of the relational table. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

37 Mapping Entities Database Systems by Jukić, Vrbsky, & Nestorov
Pearson 2014 ISBN

38 Mapping Entities, cont’d
As mapped. Entity with a composite attribute. As seen by a front-end application. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

39 Mapping Entities, cont’d
Attribute with a composite primary key. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

40 Mapping Entities, cont’d
Entity with an optional attribute. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

41 Entity Integrity Constraint
No primary key column of a relational table can have null (empty) values. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

42 Entity Integrity Constraint, cont’d
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

43 Foreign Keys A foreign key is a column in a table that refers to a primary key column in another table. In a relational schema, draw an arrow from the foreign key to the corresponding primary key.

44 Mapping 1:M Relationships
Mandatory participation on both sides. The foreign key on the M side of the 1:M relationship corresponds to the primary key on the 1 side. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

45 Mapping 1:M Relationships, cont’d
Optional participation on the 1 side. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

46 Mapping 1:M Relationships, cont’d
Optional participation on the M side. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

47 Mapping 1:M Relationships, cont’d
Rename a foreign key to better reflect the role of a relationship. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

48 Mapping M:N Relationships
Use the bridge relation BELONGSTO with two foreign keys. AKA: linking table or join table Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

49 Mapping M:N Relationships, cont’d
Optional participation on both sides. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

50 Mapping M:N Relationships, cont’d
with an attribute. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

51 Mapping 1:1 Relationships
Map 1:1 relationships similarly to 1:M relationships. One table will have a foreign key pointing to the primary key of the other table. It can be an arbitrary choice of which table has the foreign key. Make the choice that is most intuitive or efficient.

52 Mapping 1:1 Relationships, cont’d
Table VEHICLE has the foreign key. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

53 Referential Integrity Constraint
The value of a foreign key must either: Match one of the values of the primary key in the referred table. Be null. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

54 Mapping Example #1: ER Diagram
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

55 Mapping Example #1: Relational Schema
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

56 Mapping Example #1: Sample Data
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

57 Mapping Candidate Keys
Choose one of the candidate keys to be the primary key. Map the other as non-primary. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

58 Mapping Candidate Keys, cont’d
Generally choose a non-composite candidate key as the primary key. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

59 Mapping Multivalued Attributes
Map the multivalued attribute as a new table. This becomes a 1:M relationship with the new table on the M side. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

60 Mapping Derived Attributes
Do not map derived attributes. Sample data records. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN As seen by the front-end application.

61 Mapping Example #2: Attributes
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

62 Mapping Unary 1:M Relationships
The table contains a foreign key that corresponds to its own primary key. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

63 Mapping Unary M:N Relationships
Use a bridge relation where both foreign keys refer to the primary key of the same table. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

64 Mapping Unary 1:1 Relationships
Map similarly to a unary 1:M relationship. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

65 Mapping Multiple Relationships
Map each relationship. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

66 Mapping Weak Entities Map weak entities the same way you map regular entities. The resulting table has a composite primary key that is composed of: The partial identifier of the table. The foreign key corresponding to the primary key of the owner table.

67 Mapping Weak Entities, cont’d
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN The APARTMENT table’s composite primary key consists of AptNo (the partial key) and BuildingID (the foreign key corresponding the the primary key of the owner BUILDING table).

68 Mapping Example #3: ER Diagram
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

69 Mapping Example #3: Relational Schema
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

70 Mapping Example #3: Sample Data
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

71 Mapping Example #3: Sample Data, cont’d
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

72 Relational Database Constraints
A constraint is a rule that a relational database must satisfy in order to be valid. Two types of constraints: implicit constraints user-defined constraints

73 Implicit RDB Constraints
Each relation (table) in a relational schema must have a unique name. For each relation: Each column name must be unique. Each row must be unique. Each column of each row must be single-valued. Domain constraint: All values in a column must be from the same predefined domain. The column order is irrelevant. The row order is irrelevant.

74 Implicit RDB Constraints, cont’d
Primary key constraint: Each relation must have a primary key (a column or set of columns) whose value is unique for each row. Entity integrity constraint: No primary key column can have a null value. Referential integrity constraint: In each row containing a foreign key, either the value of the foreign key must match one of the values of the primary key of the referred table, or the foreign key is null.

75 User-Defined RDB Constraints
Optional attributes Mandatory foreign key Example: Each employee must report to a department. Exact cardinalities Example: A student can take at most 5 classes. Business rules Usually enforced by front-end applications. Example: Each organization must have both male and female students.

76 User-Defined RDB Constraints, cont’d
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

77 ER Modeling and Relational Modeling
Why not skip ER modeling and go directly to logical modeling (creating relational schemas)? ER modeling is better for visualizing requirements. Certain concepts can be visualized graphically only in an ER diagram. Every attribute appears only once in an ER diagram. A conceptual model (ER diagram) is better for communication and documentation.

78 Database Update Operations
Insert operation Enter new data into a table. Delete operation Remove data from a table. Modify operation Change existing data in a table.

79 Update Anomalies Insertion anomaly Deletion anomaly
Modification anomaly

80 A Table Containing Redundant Data
Can you spot the data redundancies? Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

81 A Table Containing Redundant Data, cont’d
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

82 Update Anomalies, cont’d
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

83 Normalization Normalize tables to eliminate update anomalies.
Normalization is based on the concept of functional dependencies.

84 Functional Dependencies
Functional dependency: The value of one or more columns in each row of a table determines the value of another column in the same row. Write A  B Column(s) A functionally determines column(s) B. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN ClientId  ClientName

85 Functional Dependencies, cont’d
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

86 Functional Dependencies, cont’d
(Set 1) CampaignMgrID  CampaignMgrName But not the reverse! Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

87 Functional Dependencies, cont’d
(Set 2) ModeID  Media, Range But neither Media nor Range determine ModeID. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

88 Functional Dependencies, cont’d
(Set 3) AdCampaignID  AdCampaignName, StartDate, Duration, CampaignMgrId, CampaignMgrName Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

89 Functional Dependencies, cont’d
(Set 4) AdCampaignName  AdCampaignID, StartDate, Duration, CampaignMgrID, CampaignMgrName Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

90 Functional Dependencies, cont’d
(Set 5) AdCampaignID, ModeID  AdCampaignName, StartDate, Duration, CampaignMgrID, CampaignMgrName, Media, Range, BudgetPctg Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

91 Functional Dependencies, cont’d
(Set 6) AdCampaignName, ModeID  AdCampaignID, StartDate, Duration, CampaignMgrID, CampaignMgrName, Media, Range, BudgetPctg Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

92 Trivial Functional Dependencies
Remove trivial function dependencies (FDs): A  A A, B  A, B A, B  A

93 Augmented Functional Dependencies
If A  B, then remove augmented FDs such as A, C  B Because replace with (Set 2) ModeID  Media, Range (Set 3) AdCampaignID  AdCampaignName, StartDate, Duration, CampaignMgrId, CampaignMgrName (Set 5) AdCampaignID, ModeID  AdCampaignName, StartDate, Duration, CampaignMgrID, CampaignMgrName, Media, Range, BudgetPctg (Set 5) AdCampaignID, ModeID  BudgetPctg

94 Equivalent Functional Dependencies
Equivalent FDs: A  B B  A A  B, X B  A, X Y, A  B, X Y, B  A, X Remove all but one from each equivalence set.

95 Equivalent Functional Dependencies
Because are equivalent: FD Sets 3 and 4 are equivalent: Remove Set 4 FD Sets 5 and 6 are equivalent: Remove Set 6 AdCampaignID  AdCampaignName AdCampaignName  AdCampaignID Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

96 Streamlined Functional Dependencies
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

97 Partial Functional Dependency
A table column is functionally dependent on a component of a composite primary key. (Set 2) ModeID  Media, Range (Set 3) AdCampaignID  AdCampaignName, StartDate, Duration, CampaignMgrId, CampaignMgrName Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

98 Full Key Functional Dependency
A table column is functionally dependent on the primary key and not partially dependent on any separate component of the primary key. (Set 5) AdCampaignID, ModeID BudgetPctg Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

99 Transitive Functional Dependency
A nonkey column is functionally dependent on another nonkey column. CampaignMgrID  CampaignMgrName Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

100 Another Functional Dependencies Example
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

101 Normalization Improve the design of database tables.
Eliminate update anomalies. Three normal forms. First normal form (1NF) Second normal form (2NF) Third normal form (3NF) From lower to higher, each normal form has increasingly stricter conditions. Even higher normal forms mostly of theoretical value. Boyce-Codd (BCNF), 4NF, 5NF, domain key (DKNF).

102 First Normal Form (1NF) A table is in 1NF if:
Each row is unique. All values in a column must be from the same predefined domain. No column in any row contains multiple values. In other words, any valid relational table is, by definition, in 1NF.

103 First Normal Form (1NF), cont’d
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

104 Second Normal Form (2NF)
A table is in 2NF if: It is in 1NF. It does not contain partial functional dependencies.

105 Second Normal Form (2NF), cont’d
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

106 Third Normal Form (3NF) A table is in 3NF if: It is in 2NF.
It does not contain transitive functional dependencies.

107 Third Normal Form (3NF), cont’d
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

108 Third Normal Form (3NF), cont’d
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

109 Third Normal Form (3NF), cont’d
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

110 Third Normal Form (3NF), cont’d
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

111 Another Normalization Example
Original table Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

112 Another Normalization Example, cont’d
2NF Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

113 Another Normalization Example, cont’d
3NF Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

114 Another Normalization Example, cont’d
Normalized tables Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

115 Normalization vs. Denormalization
Normalization spreads data out over more tables. The result is slower performance. Sometimes it make sense to denormalize in order to improve performance.

116 Normalization vs. Denormalization, cont’d
Original table Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

117 Normalization vs. Denormalization, cont’d
Suppose the query is to retrieve for each campaign: AdCampaignID, AdCampaignName, CampaignMgrID, CampaignMgrName, ModeID, Media, Range, and BudgetPctg. It is more efficient to retrieve this data from the original table than from the several normalized tables.

118 Normalization vs. Denormalization, cont’d
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

119 Structured Query Language (SQL)
Data Definition Language (DDL) Create and modify the structure of a database. tables, indexes, constraints, etc. CREATE, ALTER, DROP Data Manipulation Language (DML) Insert, modify, delete, and retrieve data. INSERT INTO, UPDATE, DELETE, SELECT

120 Structured Query Language (SQL), cont’d
Data Control Language (DCL) Facilitate data access control. Transaction Control Language (TCL) Manage database transactions.

121 CREATE TABLE Table name Column expressions Table constraints
column name data type column constraints Table constraints referential integrity

122 Common SQL Data Types

123 SQL Syntax A semicolon at the end of an SQL command.
SQL keywords, as well as the table and column names used in the SQL commands, are not case sensitive. For clarity and consistency, we will use all caps for SQL commands. An SQL statement can be written as one long line of text. For legibility reasons, SQL statements are usually written as multiple lines of text.

124 CREATE TABLE Examples Database Systems by Jukić, Vrbsky, & Nestorov
Pearson 2014 ISBN

125 CREATE TABLE Examples, cont’d
Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

126 CREATE TABLE Examples, cont’d
CREATE TABLE vendor ( vendorid CHAR(2) NOT NULL, vendorname VARCHAR(25) NOT NULL, PRIMARY KEY (vendorid) ); CREATE TABLE category ( categoryid CHAR(2) NOT NULL, categoryname VARCHAR(25) NOT NULL, PRIMARY KEY (categoryid) CREATE TABLE product ( productid CHAR(3) NOT NULL, productname VARCHAR(25) NOT NULL, productprice NUMERIC(7,2) NOT NULL, vendorid CHAR(2) NOT NULL, categoryid CHAR(2) NOT NULL, PRIMARY KEY (productid), FOREIGN KEY (vendorid) REFERENCES vendor(vendorid), FOREIGN KEY (categoryid) REFERENCES category(categoryid) data types column constraints table constraints

127 CREATE TABLE Examples, cont’d
CREATE TABLE region ( regionid CHAR(1) NOT NULL, regionname VARCHAR(25) NOT NULL, PRIMARY KEY (regionid) ); CREATE TABLE store ( storeid VARCHAR(3) NOT NULL, storezip CHAR(5) NOT NULL, regionid CHAR(1) NOT NULL, PRIMARY KEY (storeid), FOREIGN KEY (regionid) REFERENCES region(regionid) CREATE TABLE customer ( customerid CHAR(7) NOT NULL, customername VARCHAR(15) NOT NULL, customerzip CHAR(5) NOT NULL, PRIMARY KEY (customerid)

128 CREATE TABLE Examples, cont’d
CREATE TABLE salestransaction ( tid VARCHAR(8) NOT NULL, customerid CHAR(7) NOT NULL, storeid VARCHAR(3) NOT NULL, tdate DATE NOT NULL, PRIMARY KEY (tid), FOREIGN KEY (customerid) REFERENCES customer(customerid), FOREIGN KEY (storeid) REFERENCES store(storeid) ); CREATE TABLE soldvia ( productid CHAR(3) NOT NULL, tid VARCHAR(8) NOT NULL, noofitems INT NOT NULL, PRIMARY KEY (productid, tid), FOREIGN KEY (productid) REFERENCES product(productid), FOREIGN KEY (tid) REFERENCES salestransaction(tid) composite key

129 DROP TABLE Referential integrity prevents deletion of a primary key that is referenced by foreign keys. Invalid sequence: DROP TABLE region; DROP TABLE store; DROP TABLE salestransaction; DROP TABLE product; DROP TABLE vendor; DROP TABLE category; DROP TABLE customer; DROP TABLE soldvia; Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

130 DROP TABLE, cont’d Valid sequence: DROP TABLE soldvia;
DROP TABLE salestransaction; DROP TABLE store; DROP TABLE product; DROP TABLE vendor; DROP TABLE region; DROP TABLE category; DROP TABLE customer; Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

131 INSERT INTO INSERT INTO vendor VALUES ('PG','Pacifica Gear');
INSERT INTO vendor VALUES ('MK','Mountain King'); INSERT INTO category VALUES ('CP','Camping'); INSERT INTO category VALUES ('FW','Footwear'); INSERT INTO product VALUES ('1X1','Zzz Bag',100,'PG','CP'); INSERT INTO product VALUES ('2X2','Easy Boot',70,'MK','FW'); INSERT INTO product VALUES ('3X3','Cosy Sock',15,'MK','FW'); INSERT INTO product VALUES ('4X4','Dura Boot',90,'PG','FW'); INSERT INTO product VALUES ('5X5','Tiny Tent',150,'MK','CP'); INSERT INTO product VALUES ('6X6','Biggy Tent',250,'MK','CP'); INSERT INTO region VALUES ('C','Chicagoland'); INSERT INTO region VALUES ('T','Tristate');

132 INSERT INTO, cont’d INSERT INTO store VALUES ('S1','60600','C');
INSERT INTO store VALUES ('S3','35400','T'); INSERT INTO customer VALUES (' ','Tina','60137'); INSERT INTO customer VALUES (' ','Tony','60611'); INSERT INTO customer VALUES (' ','Pam','35401'); INSERT INTO salestransaction VALUES ('T111',' ','S1','01/Jan/2013'); INSERT INTO salestransaction VALUES ('T222',' ','S2','01/Jan/2013'); INSERT INTO salestransaction VALUES ('T333',' ','S3','02/Jan/2013'); INSERT INTO salestransaction VALUES ('T444',' ','S3','02/Jan/2013'); INSERT INTO salestransaction VALUES ('T555',' ','S3','02/Jan/2013');

133 INSERT INTO, cont’d INSERT INTO soldvia VALUES ('1X1','T111',1);

134 INSERT INTO, cont’d Database Systems by Jukić, Vrbsky, & Nestorov
Pearson 2014 ISBN

135 INSERT INTO, cont’d Explicitly specify column names:
Insert more than one row per command: INSERT INTO soldvia(noofitems, tid, productid) VALUES (1, 'T555', '6x6'); INSERT INTO customer VALUES (' ','Tina','60137'), (' ','Tony','60611'), (' ','Pam','35401');

136 SELECT Retrieve data from database tables.
The most common SQL command.

137 SELECT, cont’d Retrieve the entire contents of the Product table.
SELECT * FROM product; Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

138 SELECT, cont’d Retrieve only certain columns of the Product table.
Projection operation SELECT productid, productprice FROM product; Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

139 SELECT, cont’d Calculate a column (derived attribute) from the Product table. SELECT productid, productprice, 1.1 * productprice FROM product; Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

140 SELECT DISTINCT Which vendor IDs are in the Product table?
SELECT DISTINCT vendorid FROM product; Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

141 SELECT WHERE Which products in the FW category have price less than or equal to $110? SELECT productid, productname, vendorid, productprice FROM product WHERE productprice <= 110 AND categoryid = 'FW'; Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

142 MySQL Conditional Operators
PHP and MySQL for Dynamic Web Sites, 4th ed. by Larry Ullman Peachpit Press, 2012 ISBN

143 SELECT ORDER BY Sort products by product price.
SELECT productid, productname, categoryid, productprice FROM product WHERE categoryid = 'FW' ORDER BY productprice; Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

144 SELECT ORDER BY, cont’d Sort products by product price in descending order. SELECT productid, productname, categoryid, productprice FROM product WHERE categoryid = 'FW' ORDER BY productprice DESC; Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

145 SELECT ORDER BY, cont’d Sort products first by category ID and then by product price. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN SELECT productid, productname, categoryid, productprice FROM product ORDER BY categoryid, productprice;

146 Limiting Query Results
SELECT first_name, last_name FROM users ORDER BY registration_date DESC LIMIT 5; Also: Return n records starting with the ith record. Does not improve the query execution speed, since MySQL still has to match all the records. Reduces the number of returned records. Useful for “paging” the results. LIMIT i, n PHP and MySQL for Dynamic Web Sites, 4th ed. by Larry Ullman Peachpit Press, 2012 ISBN

147 SELECT LIKE Which products have “Boot” in their name?
SELECT * FROM product WHERE productname LIKE '%Boot%'; Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

148 SELECT LIKE, cont’d String comparisons using wildcard characters:
_ matches any single character % matches any zero or more characters mysql> select * from people; | id | first | last | gender | salary | | 101 | Charles | Jones | M | | | 103 | Mary | Adams | F | | | 105 | Susan | Miller | F | | | 110 | Roger | Brown | M | | | 112 | Leslie | Adamson | F | | 5 rows in set (0.00 sec) mysql> select * from people -> where last like 'Adam%'; | id | first | last | gender | salary | | 103 | Mary | Adams | F | | | 112 | Leslie | Adamson | F | | 2 rows in set (0.02 sec)

149 SELECT Aggregate Functions
What is the average price of all products? SELECT AVG(productprice) FROM product; Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

150 SELECT Aggregate Functions, cont’d
How many products are there? SELECT COUNT(*) FROM product; Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

151 SELECT Aggregate Functions, cont’d
How many vendors supply the products? SELECT COUNT(DISTINCT vendorid) FROM product; Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

152 SELECT Aggregate Functions, cont’d
Aggregate functions COUNT, SUM, AVG, MIN, MAX SELECT COUNT(*), AVG(productprice), MIN(productprice), MAX(productprice) FROM product WHERE categoryid = 'CP'; Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

153 SELECT GROUP BY What is the average price for each vendor?
SELECT vendorid, COUNT(*), AVG(productprice) FROM product GROUP BY vendorid; Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

154 SELECT GROUP BY, cont’d When a SELECT has aggregate functions, it cannot have individual columns unless the columns are in a GROUP BY clause. You can group by multiple columns. SELECT vendorid, COUNT(*), AVG(productprice) FROM product GROUP BY vendorid;

155 SELECT GROUP BY, cont’d Group by vendor, and then by category.
SELECT vendorid, categoryid, COUNT(*), AVG(productprice) FROM product GROUP BY vendorid, categoryid; Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

156 SELECT GROUP BY HAVING Group products $50 or more by vendor and category. Count and average price only if more than one per group. SELECT vendorid, categoryid, COUNT(*), AVG(productprice) FROM product WHERE productprice >= 50 GROUP BY vendorid, categoryid HAVING COUNT(*) > 1; Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

157 SELECT GROUP BY HAVING, cont’d
For products that sold more than 3 items in all sales transactions, what were the total number of items sold? SELECT productid, SUM(noofitems) FROM soldvia GROUP BY productid HAVING SUM(noofitems) > 3; The WHERE clause applies to records. The HAVING clause applies to groups. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

158 SELECT GROUP BY HAVING, cont’d
For each product that was sold in more than one sales transaction, what is the number of transactions in which the product was sold? SELECT productid, COUNT(TID) FROM soldvia GROUP BY productid HAVING COUNT(TID) > 1; Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

159 Nested Queries An outer query makes use of the results from a nested (inner) query.

160 Nested Queries, cont’d Which products sell below the average price?
SELECT productid, productname, productprice FROM product WHERE productprice < (SELECT AVG(productprice) FROM product); First, we need to calculate the average. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

161 Nested Queries, cont’d Wrong:
Aggregate functions can only appear within a SELECT clause or a HAVING clause. SELECT productid, productname, productprice FROM product WHERE productprice < AVG(productprice); Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

162 SELECT IN Which products have more than 3 items sold in all sales transactions? SELECT productid, productname, productprice FROM product WHERE productid IN (SELECT productid FROM soldvia GROUP BY productid HAVING SUM(noofitems) > 3); Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

163 SELECT IN, cont’d Which products were each sold in more than one sales transaction? SELECT productid, productname, productprice FROM product WHERE productid IN (SELECT productid FROM soldvia GROUP BY productid HAVING COUNT(*) > 1); Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

164 Recall: Relational Algebra
The mathematical theory behind database operations: project which columns? listed after the SELECT keyword select which rows? WHERE and HAVING clauses join Query multiple tables at the same time.

165 Joins What is the id, product name, vendor name, and price of each product? SELECT productid, productname, vendorname, productprice FROM product, vendor WHERE product.vendorid = vendor.vendorid; Qualified names Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

166 Joins, cont’d Without a join condition, you get a Cartesian product.
Each record of one table matched with every record from the other table.

167 Joins, cont’d SELECT * FROM product, vendor; Database Systems
by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

168 Joins, cont’d Include the join condition
WHERE product.vendorid = vendor.vendorid

169 Join Alias Use aliases anywhere within a query instead of the full table name. No effect on the query itself. Improve legibility. SELECT productid, productname, vendorname, productprice FROM product, vendor WHERE product.vendorid = vendor.vendorid; SELECT p.productid, p.productname, v.vendorname, p.productprice FROM product p, vendor v WHERE p.vendorid = v.vendorid;

170 Join Alias, cont’d Use aliases to rename columns in query results.
SELECT p.productid pid, p.productname pname, v.vendorname vname, p.productprice pprice FROM product p, vendor v WHERE p.vendorid = v.vendorid; You cannot use aliased column names in the WHERE clause. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN

171 Joining Multiple Tables
SELECT t.tid, t.tdate, p.productname, sv.noofitems AS quantity, (sv.noofitems * p.productprice) AS amount FROM product AS p, salestransaction AS t, soldvia AS sv WHERE sv.productid = p.productid AND sv.tid = t.tid ORDER BY t.tid; You can use AS to introduce an alias. Database Systems by Jukić, Vrbsky, & Nestorov Pearson 2014 ISBN Oracle does not allow AS for table aliases.


Download ppt "CMPE Database Systems Workshop Review: May 2 – 16, 2017"

Similar presentations


Ads by Google