CSC 261/461 – Database Systems Lecture 14
Total Page:16
File Type:pdf, Size:1020Kb
CSC 261/461 – Database Systems Lecture 14 Spring 2017 MW 3:25 pm – 4:40 pm January 18 – May 3 Dewey 1101 Announcement • Midterm on this Wednesday • Please arrive 5 minutes early; We will start at 3:25 sharp • I may post a sitting arrangement tomorrow. • Start studying for MT CSC 261, Spring 2017, UR Are you ready? CSC 261, Spring 2017, UR Night before the exam CSC 261, Spring 2017, UR During the exam CSC 261, Spring 2017, UR Or Finishing too early CSC 261, Spring 2017, UR MIDTERM REVIEW CSC 261, Spring 2017, UR Chapters to Read • Chapter 1 • Chapter 2 • Chapter 3 • Chapter 4 (Just the basics. Only ISA relationships. Even studying the slides is fine) • Chapter 5, 6, 7 (SQL) • Chapter 8 • Chapter 9 • Chapter 14 (14.1-14.5) • Chapter 15 (15.1-15.3) 8 Exam Structure • Problem 1 (20 pts) – Short answers, True/False, or One liner • Other problems (40 pts) • Tot a l : 60 p t s • 2 bonus points for writing the class id correctly. CSC 261, Spring 2017, UR Time distribution • Time crunch – Not really – Should take more than 60 minutes to finish. – Not as relaxed as the quiz CSC 261, Spring 2017, UR MATERIALS COVERED CSC 261, Spring 2017, UR Questions to ponder • Why not Lists? Why database? • How related tables avoid problems associated with lists? CSC 261, Spring 2017, UR Problems with Lists • Multiple Concepts or Themes: – Microsoft Excel vs Microsoft Access • Redundancy • Anomalies: – Deletion anomalies – Update anomalies – Insertion anomalies CSC 261, Spring 2017, UR List vs Database • Lists do not provide information about relations! • Break lists into tables • Facilitates: – Insert – Delete – Update • Input and Output interface (Forms and Reports) • Query! CSC 261, Spring 2017, UR Again, Why database? • To store data • To provide structure • Mechanism for querying, creating, modifying and deleting data. • CRED (Create, Read, Update, Delete) • Store information and relationships CSC 261, Spring 2017, UR Simplified Database System Environment CSC 261, Spring 2017, UR SQL CSC 261, Spring 2017, UR General form SQL SELECT S FROM R1,…,Rn WHERE C1 GROUP BY a1,…,ak HAVING C2 Evaluation steps: 1. Evaluate FROM-WHERE: apply condition C1 on the attributes in R1,…,Rn 2. GROUP BY the attributes a1,…,ak 3. Apply condition C2 to each group (may have aggregates) 4. Compute aggregates in S and return the result CSC 261, Spring 2017, UR Grouping and Aggregation Semantics of the query: 1. Compute the FROM and WHERE clauses 2. Group by the attributes in the GROUP BY 3. Compute the SELECT clause: grouped attributes and aggregates 19 1. Compute the FROM and WHERE clauses SELECT product, SUM(price*quantity) AS TotalSales FROM Purchase WHERE date > ‘10/1/2005’ GROUP BY product Product Date Price Quantity FROM Bagel 10/21 1 20 Bagel 10/25 1.50 20 Banana 10/3 0.5 10 Banana 10/10 1 10 20 2. Group by the attributes in the GROUP BY SELECT product, SUM(price*quantity) AS TotalSales FROM Purchase WHERE date > ‘10/1/2005’ GROUP BY product Product Date Price Quantity Product Date Price Quantity GROUP BY Bagel 10/21 1 20 10/21 1 20 Bagel Bagel 10/25 1.50 20 10/25 1.50 20 Banana 10/3 0.5 10 10/3 0.5 10 Banana Banana 10/10 1 10 10/10 1 10 21 3. Compute the SELECT clause: grouped attributes and aggregates SELECT product, SUM(price*quantity) AS TotalSales FROM Purchase WHERE date > ‘10/1/2005’ GROUP BY product Product Date Price Quantity SELECT Product TotalSales 10/21 1 20 Bagel 10/25 1.50 20 Bagel 50 10/3 0.5 10 Banana Banana 15 10/10 1 10 22 HAVING Clause SELECT product, SUM(price*quantity) Same query as FROM Purchase before, except WHERE date > ‘10/1/2005’ that we consider GROUP BY product HAVING SUM(quantity) > 100 only products that have more than 100 buyers HAVING clauses contains conditions on aggregates Whereas WHERE clauses condition on individual tuples… 23 Null Values Unexpected behavior: SELECT * FROM Person WHERE age < 25 OR age >= 25 Some Persons are not included ! 24 Null Values Can test for NULL explicitly: – x IS NULL – x IS NOT NULL SELECT * FROM Person WHERE age < 25 OR age >= 25 OR age IS NULL Now it includes all Persons! 25 Inner Joins By default, joins in SQL are “inner joins”: Product(name, category) Purchase(prodName, store) SELECT Product.name, Purchase.store FROM Product JOIN Purchase ON Product.name = Purchase.prodName Both equivalent: SELECT Product.name, Purchase.store Both INNER JOINS! FROM Product, Purchase WHERE Product.name = Purchase.prodName 26 Inner Joins + NULLS = Lost data? By default, joins in SQL are “inner joins”: Product(name, category) Purchase(prodName, store) SELECT Product.name, Purchase.store FROM Product JOIN Purchase ON Product.name = Purchase.prodName SELECT Product.name, Purchase.store FROM Product, Purchase WHERE Product.name = Purchase.prodName However: Products that never sold (with no Purchase tuple) will be lost! 27 INNER JOIN: Product Purchase name category prodName store Gizmo gadget Gizmo Wiz Camera Photo Camera Ritz OneClick Photo Camera Wiz name store SELECT Product.name, Purchase.store FROM Product Gizmo Wiz INNER JOIN Purchase ON Product.name = Purchase.prodName Camera Ritz Camera Wiz Note: another equivalent way to write an INNER JOIN! 28 LEFT OUTER JOIN: Product Purchase name category prodName store Gizmo gadget Gizmo Wiz Camera Photo Camera Ritz OneClick Photo Camera Wiz name store SELECT Product.name, Purchase.store Gizmo Wiz FROM Product LEFT OUTER JOIN Purchase Camera Ritz ON Product.name = Purchase.prodName Camera Wiz OneClick NULL 29 Other Outer Joins • Left outer join: – Include the left tuple even if there’s no match • Right outer join: – Include the right tuple even if there’s no match • Full outer join: – Include the both left and right tuples even if there’s no match 30 Also read • Triggers • Views • Operations on Databases – Create, Drop, and Alter • Operations of Tables – Create, Delete and Update • Constraint: – Key constraint – Foreign key – On Delete cascade, Set Null, Set Default; CSC 261, Spring 2017, UR DATABASE DESIGN CSC 261, Spring 2017, UR Database Design Process 3. Logical, Physical, Security, 1. Requirements Analysis 2. Conceptual Design etc. 1. Requirements analysis Technical and non- technical people are – What is going to be stored? involved – How is it going to be used? – What are we going to do with the data? – Who should access the data? CSC 261, Spring 2017, UR Database Design Process 1. Requirements Analysis 2. Conceptual Design 3. Logical, Physical, Security, etc. 2. Conceptual Design – A high-level description of the database – Sufficiently precise that technical people can understand it – But, not so precise that non-technical people can’t participate This is where E/R fits in. CSC 261, Spring 2017, UR Database Design Process 1. Requirements Analysis 2. Conceptual Design 3. Logical, Physical, Security, etc. 3. Implementation: • Logical Database Design • Physical Database Design • Security Design CSC 261, Spring 2017, UR Database Design Process 1. Requirements Analysis 2. Conceptual Design 3. Logical, Physical, Security, etc. This process is E/R Model & Diagrams used iterated many name times name category price Product Makes Company E/R is a visual syntax for DB design which is precise enough for technical points, but abstracted enough for non-technical people CSC 261, Spring 2017, UR Requirements Become the E-R Data Model • After the requirements have been gathered, they are transformed into an Entity Relationship (E-R) Data Model • E-R Models consist of 1. Entities 2. Attributes a) Identifiers (Keys) b) Non-key attributes 3. Relationships CSC 261, Spring 2017, UR 1. E/R BASICS: ENTITIES & RELATIONS CSC 261, Spring 2017, UR Entities and Entity Sets • An entity set has attributes Shapes are – Represented by ovals important. Colors are attached to an entity set not. name category price Product CSC 261, Spring 2017, UR Keys • A key is a minimal set of attributes that uniquely identifies an entity. Denote elements of the primary key by underlining. name category Here, {name, category} is nota key (it is not minimal). price Product The E/R model forces us to designate a single primary key, though there may be multiple candidate keys CSC 261, Spring 2017, UR Relationships • A relationship connects two or more entity sets. • It is represented by a diamond, with lines to each of the entity sets involved. • The degree of the relationship defines the number of entity classes that participate in the relationship – Degree 1 is a unary relationship – Degree 2 is a binary relationship – Degree 3 is a ternary relationship CSC 261, Spring 2017, UR Conceptual Unary Relationship Person Marries CSC 261, Spring 2017, UR Conceptual Binary Relationship Person Owns Cars CSC 261, Spring 2017, UR Conceptual Ter nar y Rel at i ons hi p Doctor Patient Prescription Drug CSC 261, Spring 2017, UR The R in E/R: Relationships • E, R and A together: name name category price Product Makes Company CSC 261, Spring 2017, UR What is a Relationship? name name category price Product Makes Company A relationship between entity sets P and C is a subset of all possible pairs of entities in P and C, with tuples uniquely identified by P and C’s keys CSC 261, Spring 2017, UR What is a Relationship? Company Product Company C × Product P name name category price C.name P.name P.category P.price GizmoWorks Gizmo Electronics $9.99 GizmoWorks Gizmo Electronics $9.99 GadgetCorp GizmoLite Electronics $7.50 GizmoWorks GizmoLite Electronics $7.50 Gadget Toys $5.50 GizmoWorks Gadget Toys $5.50 GadgetCorp Gizmo Electronics $9.99 GadgetCorp GizmoLite Electronics $7.50 GadgetCorp Gadget Toys $5.50 name category name