CSC Database Management Systems

Slides:



Advertisements
Similar presentations
Why Object-Oriented DBMS? Abstract data types Interface with host programming language (the impedance mismatch). Object identity: (peter, 40, {(john, 15,
Advertisements

Chapter 4 Notes. Entity-Relationship Model E/R Diagrams Weak Entity Sets Converting E/R Diagrams to Relations.
Winter 2002Arthur Keller – CS 18015–1 Schedule Today: Feb. 28 (TH) u Datalog and SQL Recursion, ODL. u Read Sections , Project Part 6.
Winter 2002Arthur Keller – CS 18012–1 Schedule Today: Feb. 19 (T) u Object-Relational Systems. u Read Sections 4.5, Assignment 5 due. Feb. 21.
Fall 2001Arthur Keller – CS 18015–1 Schedule Nov. 15 (TH) Object Queries (OQL). u Read Sections 9.1. Project Part 6 due on Sunday night. Nov. 20 (T) More.
Winter 2002Arthur Keller – CS 18016–1 Schedule Today: Mar. 5 (T) u More ODL, OQL. u Read Sections 9.1. Assignment 7 due. Mar. 7 (TH) u More OQL. u Read.
Fall 2001Arthur Keller – CS 18014–1 Schedule Nov. 13 (T) Object-Relational, O-R Queries. u Read Sections 4.5, Assignment 6 due. (No office hours.)
Other Data Models. Text New edition (DBS the complete book): Chapter 4 Old edition (First course in DBS): –Section 2.1 –Section –Section 2.4.1,
CPSC-608 Database Systems Fall 2011 Instructor: Jianer Chen Office: HRBB 315C Phone: Notes #2.
1 Announcements Research Paper due Monday November 22.
Databases Illuminated Chapter 7 The Object-Oriented Model.
Relation Decomposition A, A, … A 12n Given a relation R with attributes Create two relations R1 and R2 with attributes B, B, … B 12m C, C, … C 12l Such.
Object and object-relational databases 1. Object databases vs. Object-relational databases Object databases Stores complex objects – Data + functions.
ORDBS1 Object Relational Database Systems: 1. Introduction 2. Objects in SQL3 3. Comparison of ODL/OQL and SQL3 Approaches CIS 671.
Database Management COP4540, SCS, FIU Relational Model Chapter 7.
ADVANCED DATABASE SYSTEMS DR. FATEMEH AHMADI- ABKENARI SEPTEMBER Object Databases.
Winter 2006Keller, Ullman, Cushing12–1 Object-Relational Systems Object-oriented ideas enter the relational world. u Keep relation as the fundamental abstraction.
1 Object-Oriented Database Languages Object Description Language Object Query Language.
Object Definition Language
CSE 6331 © Leonidas Fegaras OODB1 Object-Oriented Databases and the ODMG Standard.
Database Design Why do we need it? – Agree on structure of the database before deciding on a particular implementation. Consider issues such as: –What.
Winter 2006Keller Cushing Ullman17–1 Subqueries Used mainly in FROM clauses and with quantifiers EXISTS and FORALL. Example: Subquery in FROM Find the.
© D. Wong Security and User Authorization in SQL 8.7 pp. 410  Authorization ID = user name  Special authorization ID: PUBLIC  Privileges for:
Final Review Zaki Malik November 20, Basic Operators Covered.
1 Unified Modeling Language. 2 UML  UML is designed to model software, but has been adapted as a database modeling language. – No multiway relationships.
Database Design and Programming Jan Baumbach Adopted from previous slides of Peter Schneider-Kamp.
1. 2 Standards group: ODMG = Object Data Management Group. ODL = Object Description Language, like CREATE TABLE part of SQL. OQL = Object Query Language,
Hele-Mai Haav: CSC210-Spring*01 CSC230-Spring*03 Database Design.
COP Introduction to Database Structures
Comp 1100 Entity-Relationship (ER) Model
Why Object-Oriented DBMS?
Select-From-Where Statements Multirelation Queries Subqueries
CPSC-310 Database Systems
Object-Oriented Databases and the ODMG Standard
Chapter 3 Introduction to SQL(2)
Entity-Relationship Model
CPSC-310 Database Systems
Computational Biology
The Relational Model.
Object-Relational Databases
(Ref: ODMG2.0, R Cattell et al, Morgan Kaufmann, 1997)
Database Design Why do we need it? Consider issues such as:
Introduction to Database Systems, CS420
CPSC-310 Database Systems
CPSC-608 Database Systems
The Entity-Relationship Model
CS 440 Database Management Systems
Chapter 12 Outline Overview of Object Database Concepts
Instructor: Zhe He Department of Computer Science
Database Models Relational Model
CPSC-310 Database Systems
CPSC-310 Database Systems
Object-Relational Systems
CPSC-310 Database Systems
ISC321 Database Systems I Chapter 10: Object and Object-Relational Databases: Concepts, Models, Languages, and Standards Spring 2015 Dr. Abdullah Almutairi.
Object Definition Language
CMSC-461 Database Management Systems
Object Databases: Logical Data Modeling
Lecture 5: The Relational Data Model
The Relational Data Model
CPSC-608 Database Systems
Chapter 15: Object-Oriented Database Development
CS 505: Intermediate Topics to Database Systems
CPSC-608 Database Systems
Object-Oriented DBMS’s
Mary Norwood & Oberon Ilano
Instructor: Zhe He Department of Computer Science
Select-From-Where Statements Multirelation Queries Subqueries
CS 405G: Introduction to Database Systems
Presentation transcript:

CSC 5-415 Database Management Systems ODL Subclasses Follow name of subclass by colon and its superclass. Example: SUVs are cars with a Color class SUVs:cars { attribute string color; } Objects of the SUVs class acquire all the attributes and relationships of the cars class. While E/R entities can have manifestations in a class and subclass, in ODL we assume each object is a member of exactly one class. 5/15/2019 CSC 5-415 Database Management Systems

CSC 5-415 Database Management Systems Keys in ODL Indicate with key(s) following the class name, and a list of attributes forming the key. Several lists may be used to indicate several alternative keys. Parentheses group members of a key, and also group key to the declared keys. Thus, (key(a1,a2 , … , an)) = “one key consisting of all n attributes.” (key a1,a2 , … , an) = “each ai is a key by itself.” Example class cars (key name) {attribute string name . . .} Remember: Keys are optional in ODL. The “object ID” suffices to distinguish objects that have the same values in their elements. 5/15/2019 CSC 5-415 Database Management Systems

Example: A Multiattribute Key class Courses (key (dept, number), (room, hours)) { ...} 5/15/2019 CSC 5-415 Database Management Systems

Translating ODL to Relations Classes without relationships: like entity set, but several new problems arise. Classes with relationships: Treat the relationship separately, as in E/R. Attach a many-one relationship to the relation for the “many.” 5/15/2019 CSC 5-415 Database Management Systems

ODL Class Without Relationships Problem: ODL allows attribute types built from structures and collection types. Structure: Make one attribute for each field. Set: make one tuple for each member of the set. More than one set attribute? Make tuples for all combinations. Problem: ODL class may have no key, but we should have one in the relation to represent “OID.” 5/15/2019 CSC 5-415 Database Management Systems

CSC 5-415 Database Management Systems Example class drivers (key name) { attribute string name; attribute Struct Addr {string street, string city, int zip} address; attribute Set<string> phone; } name street city zip phone n1 s1 c1 z1 p1 n1 s1 c1 z1 p2 Surprise: the key for the class (name) is not the key for the relation (name, phone). name in the class determines a unique object, including a set of phones. name in the relation does not determine a unique tuple. Since tuples are not identical to objects, there is no inconsistency! BCNF violation: separate out name-phone. 5/15/2019 CSC 5-415 Database Management Systems

CSC 5-415 Database Management Systems ODL Relationships If the relationship is many-one from A to B, put key of B attributes in the relation for class A. If relationship is many-many, we’ll have to duplicate A-tuples as in ODL with set-valued attributes. Wouldn’t you really rather create a separate relation for a many-many-relationship? You’ll wind up separating it anyway, during BCNF decomposition. 5/15/2019 CSC 5-415 Database Management Systems

CSC 5-415 Database Management Systems Example class drivers (key name) { attribute string name; attribute string addr; relationship Set<cars> likes inverse cars::fans; relationship cars favorite inverse cars::realFans; relationship drivers husband inverse wife; relationship drivers wife inverse husband; relationship Set<drivers> buddies inverse buddies; } drivers(name, addr, carName, favcar, wife, buddy) 5/15/2019 CSC 5-415 Database Management Systems

CSC 5-415 Database Management Systems Decompose into 4NF FD’s: nameaddr favcar wife MVD’s: namecarname, namebuddy Resulting decomposition: drivers(name, addr, favcar, wife) Drcar(name, car) DrBuddy(name, buddy) 5/15/2019 CSC 5-415 Database Management Systems

CSC 5-415 Database Management Systems OQL Motivation: Relational languages suffer from impedance mismatch when we try to connect them to conventional languages like C or C++. The data models of C and SQL are radically different, e.g., C does not have relations, sets, or bags as primitive types; C is tuple-at-a-time, SQL is relation-at-a-time. OQL is an attempt by the OO community to extend languages like C++ with SQL-like, relation-at-a-time dictions. 5/15/2019 CSC 5-415 Database Management Systems

CSC 5-415 Database Management Systems OQL Types Basic types: strings, ints, reals, etc., plus class names. Type constructors: Struct for structures. Collection types: set, bag, list, array. Like ODL, but no limit on the number of times we can apply a type constructor. Set(Struct()) and Bag(Struct()) play special roles akin to relations. 5/15/2019 CSC 5-415 Database Management Systems

OQL Uses ODL as its Schema-Definition Portion For every class we can declare an extent = name for the current set of objects of the class. Remember to refer to the extent, not the class name, in queries. 5/15/2019 CSC 5-415 Database Management Systems

CSC 5-415 Database Management Systems class dealer (extent dealers) { attribute string name; attribute string addr; relationship Set<Sell> carsSold inverse Sell::dealer; } class car (extent cars) attribute string manf; relationship Set<Sell> soldBy inverse Sell::car; class Sell (extent Sells) { attribute float price; relationship dealer dealer inverse dealer::carsSold; relationship car car inverse car::soldBy; 5/15/2019 CSC 5-415 Database Management Systems

CSC 5-415 Database Management Systems Path Expressions Let x be an object of class C. If a is an attribute of C, then x.a = the value of a in the x object. If r is a relationship of C, then x.r = the value to which x is connected by r. Could be an object or a collection of objects, depending on the type of r. If m is a method of C, then x.m(…) is the result of applying m to x. 5/15/2019 CSC 5-415 Database Management Systems

CSC 5-415 Database Management Systems Examples Let s be a variable whose type is Sell. s.price = the price in the object s. s.dealer.addr = the address of the dealer mentioned in s. Note: cascade of dots OK because s.dealer is an object, not a collection. Example of Illegal Use of Dot b.carsSold.price, where b is a dealer object. Why illegal? Because b.carsSold is a set of objects, not a single object. 5/15/2019 CSC 5-415 Database Management Systems

OQL Select-From-Where SELECT <list of values> FROM <list of collections and typical members> WHERE <condition> Collections in FROM can be: Extents. Expressions that evaluate to a collection. Following a collection is a name for a typical member, optionally preceded by AS. Example Get the menu at Joe’s. SELECT s.car.name, s.price FROM Sells s WHERE s.dealer.name = "Joe's dealer" Notice double-quoted strings in OQL. 5/15/2019 CSC 5-415 Database Management Systems

CSC 5-415 Database Management Systems Example Another way to get Joe’s menu, this time focusing on the dealer objects. SELECT s.car.name, s.price FROM dealers b, b.carsSold s WHERE b.name = "Joe's dealer" Notice that the typical object b in the first collection of FROM is used to help define the second collection. Typical Usage If x is an object, you can extend the path expression, like s or s.car in s.car.name. If x is a collection, you use it in the FROM list, like b.carsSold above, if you want to access attributes of x. 5/15/2019 CSC 5-415 Database Management Systems

Tailoring the Type of the Result Default: bag of structs, field names taken from the ends of path names in SELECT clause. Example SELECT s.car.name, s.price FROM dealers b, b.carsSold s WHERE b.name = "Joe's dealer" has result type: Bag(Struct( name: string, price: real )) 5/15/2019 CSC 5-415 Database Management Systems

CSC 5-415 Database Management Systems Rename Fields Prefix the path with the desired name and a colon. Example SELECT car: s.car.name, s.price FROM dealers b, b.carsSold s WHERE b.name = "Joe's dealer" has type: Bag(Struct( car: string, price: real )) 5/15/2019 CSC 5-415 Database Management Systems

Change the Collection Type Use SELECT DISTINCT to get a set of structs. Example SELECT DISTINCT s.car.name, s.price FROM dealers b, b.carsSold s WHERE b.name = "Joe's dealer" Use ORDER BY clause to get a list of structs. joeMenu = SELECT s.car.name, s.price ORDER BY s.price ASC ASC = ascending (default); DESC = descending. We can extract from a list as if it were an array, e.g., cheapest = joeMenu[1].name; 5/15/2019 CSC 5-415 Database Management Systems