The Many-to-Many Relationship

Slides:



Advertisements
Similar presentations
More Diagramming & Practice with Relationship Modeling
Advertisements

The Many-to-Many Relationship Fearful concatenation of circumstances Daniel Webster.
The Many-to-Many Relationship. A sales form The many-to-many relationship Create a third entity to map an m:m relationship –An associative entity The.
The Many-to-Many Relationship Fearful concatenation of circumstances Daniel Webster.
Logical Data Modeling Review Lecture for University of Agder, Grimstad DAT202 Databaser (5.5.11) Judith Molka-Danielsen
CSE 190: Internet E-Commerce Lecture 10: Data Tier.
Agenda for Week 1/31 & 2/2 Learn about database design
DAVID M. KROENKE’S DATABASE PROCESSING, 10th Edition © 2006 Pearson Prentice Hall 6-1 COS 346 Day 8.
A Guide to SQL, Seventh Edition. Objectives Understand the concepts and terminology associated with relational databases Create and run SQL commands in.
Database Management Fall 2003 Midterm Review Chapters 1 & 2.
Database – Part 2a Dr. V.T. Raja Oregon State University.
This presentation prepared for MIS 421 / MBA 575 at Western Washington University. Material in this presentation drawn from Richard T. Watson, Data Management:
Conceptual Modeling with ER Diagrams Peter Chen introduced ER Diagrams.
Learningcomputer.com SQL Server 2008 – Entity Relationships in a Database.
Irwin/McGraw-Hill Copyright © 2000 The McGraw-Hill Companies. All Rights reserved Whitten Bentley DittmanSYSTEMS ANALYSIS AND DESIGN METHODS5th Edition.
Lecture 7 Integrity & Veracity UFCE8K-15-M: Data Management.
Oracle Data Definition Language (DDL) Dr. Bernard Chen Ph.D. University of Central Arkansas Fall 2008.
SQL LANGUAGE and Relational Data Model TUTORIAL Prof: Dr. Shu-Ching Chen TA: Hsin-Yu Ha.
SQL John Nowobilski. What is SQL? Structured Query Language Manages Data in Database Management Systems based on the Relational Model Developed in 1970s.
The Many-to-Many Relationship Fearful concatenation of circumstances Daniel Webster.
Database Management Supplement 1. 2 I. The Hierarchy of Data Database File (Entity, Table) Record (info for a specific entity, Row) Field (Attribute,
* Database is a group of related objects * Objects can be Tables, Forms, Queries or Reports * All data reside in Tables * A Row in a Table is a record.
SQL constrains and keys. SORTED RESULTS Sort the results by a specified criterion SELECT columns FROM tables WHERE predicates ORDER BY column ASC/DESC;
Quiz Which of the following is not a mandatory characteristic of a relation? Rows are not ordered (Not required) Each row is a unique There is a.
MySQL Tutorial. Databases A database is a container that groups together a series of tables within a single structure Each database can contain 1 or more.
1 of 42 Lecture 5 Data Model Design Jeffery S. Horsburgh Hydroinformatics Fall 2013 This work was funded by National Science Foundation Grants EPS
Jeffery S. Horsburgh Hydroinformatics Fall 2014
Database Design Chapters 17 and 18.
3 A Guide to MySQL.
Fundamentals of DBMS Notes-1.
Creating a database table
View Integration and Implementation Compromises
Databases Chapter 9 Asfia Rahman.
Revised: 2 April 2004 Fred Swartz
Basic Database Design COSC 2328 – Web Programming.
 2012 Pearson Education, Inc. All rights reserved.
© 2014 by McGraw-Hill Education. This is proprietary material solely for authorized instructor use. Not authorized for sale or distribution in any manner.
© The McGraw-Hill Companies, All Rights Reserved APPENDIX C DESIGNING DATABASES APPENDIX C DESIGNING DATABASES.
DESIGNING DATABASE APPLICATIONS
Modeling a 1:1 recursive relationship
Creating Databases for Web Applications
Relational Databases.
Database Systems: Design, Implementation, and Management Tenth Edition
Chapter 4 Relational Model Characteristics
CIS 207 The Relational Database Model
Lecture 2 The Relational Model
Database Management  .
Database Systems Instructor Name: Lecture-12.
David M. Kroenke and David J
Chapter 3 The Relational Database Model
ERD’s REVIEW DBS201.
PHPMyAdmin.
Teaching slides Chapter 8.
The Many-to-Many Relationship
CHAPTER 4: LOGICAL DATABASE DESIGN AND THE RELATIONAL MODEL
CIS16 Application Programming with Visual Basic
Database Design Chapters 17 and 18.
Oracle Data Definition Language (DDL)
DATABASE SYSTEM.
Spreadsheets, Modelling & Databases
Database Design: Relational Model
INFO/CSE 100, Spring 2006 Fluency in Information Technology
CS122 Using Relational Databases and SQL
Object Relational Mapping Tools
ICT Database Lesson 2 Designing a Database.
INSTRUCTOR: MRS T.G. ZHOU
Use of SQL – The Patricia database
CS122 Using Relational Databases and SQL
Database Systems: Design, Implementation, and Management
Presentation transcript:

The Many-to-Many Relationship Fearful concatenation of circumstances Daniel Webster

The many-to-many relationship Create a third entity to map an m:m relationship An associative entity The + on the crow's foot indicates that LINEITEM is identified by concatenating saleno and lineno LINEITEM is known as a weak entity, and it has an identifying relationship with SALE

The many-to-many relationship

The many-to-many relationship MySQL Workbench Identifying relationship Non-identifying relationship m:m symbol

The many-to-many relationship Data Modeling by MySQL Workbench Data Modeling by Hand These are equivalent models

Why a third entity? Cannot store items sold in sale because a sale can have many items, and an instance of an entity stores only single-value facts. Similarly, we cannot store sale data in item because an item can appear in many sales Think of an m:m as two 1:m relationships One item can appear on many line item listings, but one line item entry refers to only one item One sale can have many line items, but one line item entry refers to only one sale

Creating a relational database Same rules apply The associative table has two foreign keys One for each of the entities in the m:m relationship A foreign key can also be part of the primary key of an associative entity lineitem lineno lineqty lineprice saleno itemno 1 4.50 2 25.00 6 20.00 16 3 19

Creating a relational database CREATE TABLE sale ( saleno INTEGER, saledate DATE NOT NULL, saletext VARCHAR(50), PRIMARY KEY(saleno)); CREATE TABLE item ( itemno INTEGER, itemname VARCHAR(30) NOT NULL, itemtype CHAR(1) NOT NULL, itemcolor VARCHAR(10), PRIMARY KEY(itemno)); CREATE TABLE lineitem ( lineno INTEGER, lineqty INTEGER NOT NULL, lineprice DECIMAL(7,2) NOT NULL, PRIMARY KEY(lineno,saleno), CONSTRAINT fk_has_sale FOREIGN KEY(saleno) REFERENCES sale(saleno), CONSTRAINT fk_has_item FOREIGN KEY(itemno) REFERENCES item(itemno));

Exercise A keen field hockey fan wants to keep track of which countries won which medals in the various summer Olympics for both the men’s and women’s events Design a data model http://en.wikipedia.org/wiki/Field_hockey_at_the_Summer_Olympics

A three table join List the names of the three tables after FROM Specify two matching conditions with the associative table in both join conditions SELECT * FROM sale, lineitem, item WHERE sale.saleno = lineitem.saleno AND item.itemno = lineitem.itemno;

A three table join List the names of items, quantity, and value of items sold on January 16, 2011 SELECT itemname, lineqty, lineprice, lineqty*lineprice AS total FROM sale, lineitem, item WHERE lineitem.saleno = sale.saleno AND item.itemno = lineitem.itemno AND saledate = '2011-01-16'; itemname lineqty lineprice total Pocket knife—Avon 1 0.00 Safari chair 50 36.00 1800.00 Hammock 40.50 2025.00 Tent—8 person 8 153.00 1224.00 Tent—2 person 60.00

EXISTS Used in the WHERE clause to test whether at least one row satisfies a certain condition Returns true or false Report all clothing items (by name and color) of type “C” for which a sale is recorded SELECT itemname, itemcolor FROM item WHERE itemtype = 'C' AND EXISTS (SELECT * FROM lineitem WHERE lineitem.itemno = item.itemno); itemname itemcolor Hat—Polar Explorer Red Boots—snake proof Black Pith helmet White Stetson

SELECT itemname, itemcolor FROM item WHERE itemtype = 'C' itemno itemname itemtype itemcolor 1 Pocket knife—Nile E Brown 2 Pocket knife—Avon 3 Compass N — 4 Geopositioning system 5 Map measure 6 Hat—Polar Explorer C Red 7 White 8 Boots—snake proof Green 9 Black 10 Safari chair F Khaki 11 Hammock 12 Tent—8 person 13 Tent—2 person 14 Safari cooking kit 15 Pith helmet 16 17 Map case 18 Sextant 19 Stetson 20 SELECT itemname, itemcolor FROM item WHERE itemtype = 'C' AND EXISTS (SELECT * FROM lineitem WHERE lineitem.itemno = item.itemno); lineno lineqty lineprice saleno itemno 1 4.5 2 25 6 20 16 3 19 4 2.25 500 65 9 60 13 75 14 5 10 50 36 40.5 11 8 153 12 itemname itemcolor Hat—Polar Explorer Red Boots—snake proof Black Pith helmet White Stetson

NOT EXISTS Used in the WHERE clause to test whether all rows fail to satisfy a certain condition Report all clothing items (type “C”) that have not been sold SELECT itemname, itemcolor FROM item WHERE itemtype = 'C' AND NOT EXISTS (SELECT * FROM lineitem WHERE item.itemno = lineitem.itemno); itemname itemcolor Hat—Polar Explorer White Boots—snake proof Green Pith helmet Khaki Stetson Brown

SELECT itemname, itemcolor FROM item WHERE itemtype = 'C' itemno itemname itemtype itemcolor 1 Pocket knife—Nile E Brown 2 Pocket knife—Avon 3 Compass N — 4 Geopositioning system 5 Map measure 6 Hat—Polar Explorer C Red 7 White 8 Boots—snake proof Green 9 Black 10 Safari chair F Khaki 11 Hammock 12 Tent—8 person 13 Tent—2 person 14 Safari cooking kit 15 Pith helmet 16 17 Map case 18 Sextant 19 Stetson 20 SELECT itemname, itemcolor FROM item WHERE itemtype = 'C' AND NOT EXISTS (SELECT * FROM lineitem WHERE item.itemno = lineitem.itemno); lineno lineqty lineprice saleno itemno 1 4.5 2 25 6 20 16 3 19 4 2.25 500 65 9 60 13 75 14 5 10 50 36 40.5 11 8 153 12 itemname itemcolor Hat—Polar Explorer White Boots—snake proof Green Pith helmet Khaki Stetson Brown

Exercise Report all brown items that have been sold Report all brown items that have not been sold

Divide The universal qualifier Not directly mapped into SQL forall Not directly mapped into SQL Implement using NOT EXISTS Find all items that have appeared in all sales becomes Find items such that there does not exist a sale in which this item does not appear

Divide Find the items that have appeared in all sales (or find items such that there does not exist a sale in which these items do not appear) SELECT itemno, itemname FROM item WHERE NOT EXISTS (SELECT * FROM sale (SELECT * FROM lineitem WHERE lineitem.itemno = item.itemno AND lineitem.saleno = sale.saleno)); See the book’s web site for a detailed explanation of how divide works (Support/SQL Divide) itemno itemname 2 Pocket knife—Thames

A template for divide Find the target1 that have appeared in all sources SELECT target1 FROM target WHERE NOT EXISTS (SELECT * FROM source (SELECT * FROM target-source WHERE target-source.target# = target.target# AND target-source.source# = source.source#));

A template for divide Find the target1 that have appeared in all sources SELECT target1 FROM target WHERE NOT EXISTS (SELECT * FROM source (SELECT * FROM target-source WHERE target-source.target# = target.target# AND target-source.source# = source.source#)); Find the items that have appeared in all sales SELECT itemno, itemname FROM item WHERE NOT EXISTS (SELECT * FROM sale (SELECT * FROM lineitem WHERE lineitem.itemno = item.itemno AND lineitem.saleno = sale.saleno));

Conclusion Introduced m:m relationship Associative entity Weak entity EXISTS NOT EXISTS Divide