Oracle Object-Relational Model. - Structures : tables, views, indexes, etc. - Operations : actions that manipulate data stored in structures - Integrity.

Slides:



Advertisements
Similar presentations
Relational Database and Data Modeling
Advertisements

Introduction to C Programming
9 Creating and Managing Tables. Objectives After completing this lesson, you should be able to do the following: Describe the main database objects Create.
Chapter 10: Designing Databases
Creating Tables. 2 home back first prev next last What Will I Learn? List and provide an example of each of the number, character, and date data types.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 5 More SQL: Complex Queries, Triggers, Views, and Schema Modification.
PL/SQL.
What is a Database By: Cristian Dubon.
AN INTRODUCTION TO PL/SQL Mehdi Azarmi 1. Introduction PL/SQL is Oracle's procedural language extension to SQL, the non-procedural relational database.
Overview of Data Structures and Algorithms
Introduction to Structured Query Language (SQL)
VBA Modules, Functions, Variables, and Constants
Introduction to Structured Query Language (SQL)
Fundamentals, Design, and Implementation, 9/e Chapter 7 Using SQL in Applications.
30-Jun-15 SQL A Brief Introduction. SQL SQL is Structured Query Language Some people pronounce SQL as “sequel” Other people insist that only “ess-cue-ell”
Introduction to Structured Query Language (SQL)
Chapter 11 Structure. 2 Objectives You should be able to describe: Structures Arrays of Structures Structures as Function Arguments Dynamic Structure.
10/3/2000SIMS 257: Database Management -- Ray Larson Relational Algebra and Calculus University of California, Berkeley School of Information Management.
Introduction to PL/SQL Lecture 0 – Self Study Akhtar Ali.
Review of C++ Programming Part II Sheng-Fang Huang.
8 Copyright © 2004, Oracle. All rights reserved. Creating LOVs and Editors.
PL / SQL P rocedural L anguage / S tructured Q uery L anguage Chapter 7 in Lab Reference.
Database Technical Session By: Prof. Adarsh Patel.
CODD’s 12 RULES OF RELATIONAL DATABASE
1 Advanced Databases (CM036): Lecture # 5 ( Object-Relational and Nested-Relational Databases) Introduction to Object-Relational features of Oracle 9i.
Overloading Binary Operators Two ways to overload –As a member function of a class –As a friend function As member functions –General syntax Data Structures.
ARRAYS 1 Week 2. Data Structures  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently 
1 © 2002, Cisco Systems, Inc. All rights reserved. Arrays Chapter 7.
PL SQL Block Structures. What is PL SQL A good way to get acquainted with PL/SQL is to look at a sample program. PL/SQL combines the data manipulating.
7 1 Chapter 7 Introduction to Structured Query Language (SQL) Database Systems: Design, Implementation, and Management, Seventh Edition, Rob and Coronel.
Chapter 18 Object Database Management Systems. McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved. Outline Motivation for object.
6 1 Lecture 8: Introduction to Structured Query Language (SQL) J. S. Chou, P.E., Ph.D.
An Object-Oriented Approach to Programming Logic and Design Chapter 3 Using Methods and Parameters.
Database Systems Design, Implementation, and Management Coronel | Morris 11e ©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or.
Oracle 8i PL/SQL Collections. Collections A Collection is a group of elements of the same kind There are three types of Collections that you can use in.
Database Systems Design, Implementation, and Management Coronel | Morris 11e ©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or.
SQL Fundamentals  SQL: Structured Query Language is a simple and powerful language used to create, access, and manipulate data and structure in the database.
Advanced SQL: Triggers & Assertions
Database Lab Lecture 1. Database Languages Data definition language ( DDL ) Data definition language –defines data types and the relationships among them.
Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data.
Topics Related to Attribute Values Objectives of the Lecture : To consider sorting relations by attribute values. To consider Triggers and their use for.
A FIRST BOOK OF C++ CHAPTER 16 DATA STRUCTURES. OBJECTIVES In this chapter, you will learn about: Single Structures Arrays of Structures Structures as.
Chapter 13: Structures. In this chapter you will learn about: – Single structures – Arrays of structures – Structures as function arguments – Linked lists.
Session 1 Module 1: Introduction to Data Integrity
Chapter 18 Object Database Management Systems. Outline Motivation for object database management Object-oriented principles Architectures for object database.
Relational Database Management System(RDBMS) Structured Query Language(SQL)
Oracle 9i Collections. Composite types Several variables as single unit ◦ Records  Different datatype variables are combined here  Ex: All fields of.
LM 5 Introduction to SQL MISM 4135 Instructor: Dr. Lei Li.
Chapter 12: Pointers, Classes, Virtual Functions, Abstract Classes, and Lists.
SQL Triggers, Functions & Stored Procedures Programming Operations.
LECTURE TWO Introduction to Databases: Data models Relational database concepts Introduction to DDL & DML.
BTM 382 Database Management Chapter 8 Advanced SQL Chitu Okoli Associate Professor in Business Technology Management John Molson School of Business, Concordia.
SQL Basics Review Reviewing what we’ve learned so far…….
Andy Wang Object Oriented Programming in C++ COP 3330
PL/SQL LANGUAGE MULITPLE CHOICE QUESTION SET-1
Collection in PL/SQL.
JavaScript: Functions.
Chapter 2 Database Environment Pearson Education © 2009.
Database Fundamentals
Data Model.
Classes and Objects.
CMSC-461 Database Management Systems
Chapter 7 Using SQL in Applications
Chapter 8 Advanced SQL.
Appendix D: Network Model
Database Design: Relational Model
The University of Akron College of Applied Science & Technology Dept
Chapter 2 Database Environment Pearson Education © 2009.
Presentation transcript:

Oracle Object-Relational Model

- Structures : tables, views, indexes, etc. - Operations : actions that manipulate data stored in structures - Integrity rules : laws that determine which operations are allowed on data and structures. Oracle Relational Model

Collection of database objects available to the users Collection of database objects available to the users Schema objects: tables, views, indexes, stored procedures, etc. Schema objects: tables, views, indexes, stored procedures, etc. Schema

Structures(1) Tables: basic unit of data storage. They can be queried, updated, inserted into, deleted from, etc. Tables: basic unit of data storage. They can be queried, updated, inserted into, deleted from, etc. Views: custom-tailored presentation of the data in one or more table. They do not really contain any data. They can be queried, updated, inserted into, deleted from, etc. Views: custom-tailored presentation of the data in one or more table. They do not really contain any data. They can be queried, updated, inserted into, deleted from, etc. Materialized views: store the result of a query in a separate schema object. Materialized views: store the result of a query in a separate schema object.

Optional structures associated with tables which can be created to increase the performance of queries Optional structures associated with tables which can be created to increase the performance of queries They are created on one or more columns of a table They are created on one or more columns of a table Once created, they are automatically maintained and used by Oracle Once created, they are automatically maintained and used by Oracle Changes to tables are transferred to all relevant indexes (in a transparent way to users) Changes to tables are transferred to all relevant indexes (in a transparent way to users) Structures(2): Indexes

Allows to: 1. define object types specifying - the structure of the data and - the methods of operating on the data 2. use these datatypes within the relational model Object types are abstractions of the real-world entities Oracle Object-Relational Model

Three components: 1.Name: to identify the object type uniquely 2. Attributes: to model the structure of the entity. They are built-in or user-defined datatypes 3.Methods: functions/procedures written in PL/SQL or Java and stored in the DB or written in a different language and stored externally. NOTE: every object type has a constructor method to create a new object of that type Object Types

Object types: PERSON, LINEITEM, NAME, PHONE, ITEM_NAME, etc. are attributes of their respective object types. CREATE TYPE person AS OBJECT ( name VARCHAR2(30), phone VARCHAR2(20) ); CREATE TYPE lineitem AS OBJECT ( item_name VARCHAR2(30), quantity NUMBER, unit_price NUMBER(12,2) ); Object types: PERSON, LINEITEM, NAME, PHONE, ITEM_NAME, etc. are attributes of their respective object types. Example

Object: variable of an object type Object: variable of an object type Characterised by attributes and methods based on its type Characterised by attributes and methods based on its type Possible to assign values to object attributes and call object methods Possible to assign values to object attributes and call object methods Object

Functions or procedures called by an application to model the behaviour of an object Functions or procedures called by an application to model the behaviour of an object Three types: Three types: - member - static - comparison Methods

Function or procedure that always has an implicit SELF parameter and can work with the attributes of a specific object Function or procedure that always has an implicit SELF parameter and can work with the attributes of a specific object Invoked with dot notation: object_variable.method() Invoked with dot notation: object_variable.method() Useful to write methods where the operation affects a specific object and you do not need to pass parameters Useful to write methods where the operation affects a specific object and you do not need to pass parameters Member Methods

Function or procedure that does not have an implicit SELF parameter Function or procedure that does not have an implicit SELF parameter Invoked with dot notation using the type name: type_name.method() Invoked with dot notation using the type name: type_name.method() Useful for procedures that work with global data rather than a specific object or functions that return the same value independently of the particular object Useful for procedures that work with global data rather than a specific object or functions that return the same value independently of the particular object Static Method

Oracle has facilities for comparing two data items of a given built-in type and determining whether one is greater than, equal to, or less than the other. Oracle has facilities for comparing two data items of a given built-in type and determining whether one is greater than, equal to, or less than the other. To compare two objects of a user-defined type, the creator of the type must define comparison methods To compare two objects of a user-defined type, the creator of the type must define comparison methods Two types: map methods or order methods. Two types: map methods or order methods. Comparison Methods

Map methods produce a single value of a built-in type that can be used for comparisons and sorting. Map methods produce a single value of a built-in type that can be used for comparisons and sorting. For example, if you define an object type called RECTANGLE, the map method AREA can multiply its HEIGHT and WIDTH attributes and return the answer. For example, if you define an object type called RECTANGLE, the map method AREA can multiply its HEIGHT and WIDTH attributes and return the answer. Oracle can then compare two rectangles by comparing their areas. Oracle can then compare two rectangles by comparing their areas. Map Methods

They use their own internal logic to compare two objects of a given object type and return a value that encodes the order relationship: They use their own internal logic to compare two objects of a given object type and return a value that encodes the order relationship: -1 if the first is smaller, 0 if they are equal, and 1 if the first is larger. For example, an order method can allow you to sort a set of addresses based on their distance from a fixed point, or some other operation more complicated than comparing individual values. For example, an order method can allow you to sort a set of addresses based on their distance from a fixed point, or some other operation more complicated than comparing individual values. In defining an object type, you can specify either a map method or an order method for it, but not both. In defining an object type, you can specify either a map method or an order method for it, but not both. Order Methods

If an object type has no comparison method, Oracle cannot determine a greater-than or less-than relationship between two objects of that type If an object type has no comparison method, Oracle cannot determine a greater-than or less-than relationship between two objects of that type It can, however, attempt to determine whether two objects of the type are equal. Oracle compares two objects of a type that lacks a comparison method by comparing corresponding attributes: It can, however, attempt to determine whether two objects of the type are equal. Oracle compares two objects of a type that lacks a comparison method by comparing corresponding attributes: -If all the attributes are non-null and equal, the objects are considered equal. -If there is an attribute for which the two objects have unequal non- null values, the objects are considered unequal. -If there is an attribute for which the two objects have unequal non- null values, the objects are considered unequal. -Otherwise, the objects are considered unequal. -Otherwise, the objects are considered unequal. Other Comparisons

Constructor Methods Every object type has a system-defined constructor method that makes a new object and sets up the values of its attributes.Every object type has a system-defined constructor method that makes a new object and sets up the values of its attributes. The name of the constructor method is the name of the object type.The name of the constructor method is the name of the object type. Its parameters have the names and types of the object types attributes.Its parameters have the names and types of the object types attributes. The constructor method is a function. It returns the new object as its value.The constructor method is a function. It returns the new object as its value.

Constructor Methods: Example For example, the expression:For example, the expression: purchase_order( , person ("John Smith"," "), NULL ) represents a purchase order object with the following attributes: id contact person("John Smith"," ") lineitems NULL The expressionis an invocation of the constructor function for the object type PERSON. The object that it returns becomes theattribute of the purchase order.The expression person ("John Smith", " ") is an invocation of the constructor function for the object type PERSON. The object that it returns becomes the contact attribute of the purchase order.

An object table is a special kind of table in which each row represents an object. For example, the following statement defines an object table for objects of the PERSON type: An object table is a special kind of table in which each row represents an object. For example, the following statement defines an object table for objects of the PERSON type: CREATE TABLE person_table OF person; Oracle allows you to view this table in two ways:Oracle allows you to view this table in two ways: –A single-column table in which each row is a PERSON object, allowing you to perform object-oriented operations. –A multi-column table in which each attribute of the object type PERSON, namely NAME and PHONE, occupies a column, allowing you to perform relational operations. Object Tables (1)

For example, you can execute the following instructions:For example, you can execute the following instructions: INSERT INTO person_table VALUES ( "John Smith", " " ); SELECT VALUE(p) FROM person_table p WHERE p.name = "John Smith"; The first instruction inserts a PERSON object into PERSON_TABLE as a multi-column table.The first instruction inserts a PERSON object into PERSON_TABLE as a multi-column table. The second selects from PERSON_TABLE as a single column table.The second selects from PERSON_TABLE as a single column table. Object Tables (2)

Way to access relational data using object-relational features Way to access relational data using object-relational features Let you develop object-oriented applications without changing the underlying relational schemaLet you develop object-oriented applications without changing the underlying relational schema Just as a view is a virtual table, an object view is a virtual object tableJust as a view is a virtual table, an object view is a virtual object table Each row in the view is an object: you can call its methods, access its attributes using the dot notation, etc.Each row in the view is an object: you can call its methods, access its attributes using the dot notation, etc. Object views provide the same features as traditional views, applied to object dataObject views provide the same features as traditional views, applied to object data Object Views(1)

The procedure for defining an object view is: 1.Define an object type, where each attribute corresponds to an existing column in a relational table 2. Write a query that specifies how to extract the data from relational tables. Specify the columns in the same order as the attributes in the object type. 3. Specify a unique value, based on attributes of the underlying data, to serve as an object identifier, which allows you to create pointers (REFs) to the objects in the view. You can often use an existing primary key. 3. Specify a unique value, based on attributes of the underlying data, to serve as an object identifier, which allows you to create pointers (REFs) to the objects in the view. You can often use an existing primary key. Object Views (2)

Define an object view, where each row in the view is an object of type EMPLOYEE_T:Define an object view, where each row in the view is an object of type EMPLOYEE_T: CREATE TABLE emp_table ( empnum NUMBER (5), ename VARCHAR2 (20), salary NUMBER (9, 2), job VARCHAR2 (20) ); CREATE TYPE employee_t ( empno NUMBER (5), ename VARCHAR2 (20), salary NUMBER (9, 2), job VARCHAR2 (20) ); CREATE VIEW emp_view1 OF employee_t WITH OBJECT IDENTIFIER (empno) AS SELECT e.empnum, e.ename, e.salary, e.job FROM emp_table e WHERE job = Developer; To access the data from the EMPNUM column of the relational table, you would access the EMPNO attribute of the object type.To access the data from the EMPNUM column of the relational table, you would access the EMPNO attribute of the object type. Object Views: Example

1.Usestatement to add objects to an object table. 1.Use INSERT statement to add objects to an object table. Example: insert a object into object table Example: insert a Person object into object table person s: INSERT INTO persons VALUES (Jennifer, Lapidus,...); 2.Alternatively, use the constructor for object type to insert an object into object table 2.Alternatively, use the constructor for object type Person to insert an object into object table person s: INSERT INTO persons VALUES (Person(Albert, Brooker,...)); Inserting Objects

3.To insert objects into an object table, you can use a subquery that returns objects of the same type. Example: INSERT INTO persons2 SELECT VALUE(p) FROM persons p WHERE p.last_name LIKE %Jones; The rows copied to object table persons2 are given new object identifiers. No object identifiers are copied from object table The rows copied to object table persons2 are given new object identifiers. No object identifiers are copied from object table person s. Inserting Objects

Useful for modelling one-to-many relationshipsUseful for modelling one-to-many relationships Example: a purchase order has an arbitrary number of line items, so you may want to put the line items into a collectionExample: a purchase order has an arbitrary number of line items, so you may want to put the line items into a collection Oracle supports two collection datatypes: varrays and nested tablesOracle supports two collection datatypes: varrays and nested tables Collections

nVarrays have a maximum number of elements (but upper bound can be changed); the order of elements is defined nVarrays have a maximum number of elements (but upper bound can be changed); the order of elements is defined nNested tables can have any number of elements, and you can select, insert, delete (as with regular tables); the order of the elements is not defined nExample: a purchase order object may have a nested table of line items, while a rectangle object may contain a varray with 4 coordinates. VARRAYS and Nested Tables

Use varrays when you need to:Use varrays when you need to: - loop through the elements in order, - store only a fixed number of items, - retrieve and manipulate the entire collection as a value Use nested tables when you need toUse nested tables when you need to - run efficient queries on collections, - handle arbitrary numbers of elements, - do mass insert/update/delete operations VARRAYS and Nested Tables: Notes

You can make an object of a collection type by calling its constructor methodYou can make an object of a collection type by calling its constructor method The name of the constructor method is the name of the type, and its argument is a list of the new collections elements (separated by commas)The name of the constructor method is the name of the type, and its argument is a list of the new collections elements (separated by commas) Calling the constructor method with an empty list creates an empty collection of that typeCalling the constructor method with an empty list creates an empty collection of that type Creating Collections

Array = ordered set of data elements of the same datatypeArray = ordered set of data elements of the same datatype Each element has an index = a number corresponding to the elements position in the arrayEach element has an index = a number corresponding to the elements position in the array Oracle VARRAYs: arrays of variable sizeOracle VARRAYs: arrays of variable size You must specify a maximum size when you declare the array typeYou must specify a maximum size when you declare the array type VARRAYS

Example:Example: CREATE TYPE prices AS VARRAY(10) OF NUMBER(12,2); The VARRAYs of type PRICES have no more than ten elements, each of datatype NUMBER(12,2).The VARRAYs of type PRICES have no more than ten elements, each of datatype NUMBER(12,2). Creating an array type does not allocate space. It defines a datatype, which you can use as:Creating an array type does not allocate space. It defines a datatype, which you can use as: - The datatype of a column of a relational table - An object type attribute - The type of a PL/SQL variable, parameter, or function return value VARRAYS: Example

Nested table = unordered set of data elements, all of the same datatype.Nested table = unordered set of data elements, all of the same datatype. It has a single column, and the type of that column is a built-in type or an object type.It has a single column, and the type of that column is a built-in type or an object type. If the column in a nested table is an object type, the table can also be viewed as a multi-column table, with a column for each attribute of the object type.If the column in a nested table is an object type, the table can also be viewed as a multi-column table, with a column for each attribute of the object type. Example: in the purchase order example, the following statement declares the table type used for the nested tables of line items:Example: in the purchase order example, the following statement declares the table type used for the nested tables of line items: CREATE TYPE lineitem_table AS TABLE OF lineitem; Nested Tables (1)

A table type definition does not allocate space. It defines a type, which you can use as:A table type definition does not allocate space. It defines a type, which you can use as: – The datatype of a column of a relational table – An object type attribute – A PL/SQL variable, parameter, or function return type Nested Tables (2)

CREATE TYPE person AS OBJECT ( name VARCHAR2(30), phone VARCHAR2(20) ); CREATE TYPE lineitem AS OBJECT ( item_name VARCHAR2(30), quantity NUMBER, unit_price NUMBER(12,2) ); CREATE TYPE lineitem_table AS TABLE OF lineitem; CREATE TYPE purchase_order AS OBJECT ( id NUMBER, contact person, lineitems lineitem_table, MEMBER FUNCTION get_value RETURN NUMBER ); Example

Object types: PERSON, LINEITEM, LINEITEM_TABLE, and PURCHASE_ ORDER.Object types: PERSON, LINEITEM, LINEITEM_TABLE, and PURCHASE_ ORDER. NAME, PHONE, ITEM_NAME, and so on are attributes of their respective object types.NAME, PHONE, ITEM_NAME, and so on are attributes of their respective object types. The attribute CONTACT is an object, and the attribute LINEITEMS is a nested table.The attribute CONTACT is an object, and the attribute LINEITEMS is a nested table. LINEITEM_TABLE is a table in which each row is an object of type LINEITEM.LINEITEM_TABLE is a table in which each row is an object of type LINEITEM. Simplified example. It does not show how to specify the body of the method GET_VALUE, which you do with the CREATE OR REPLACE TYPE BODY statement.Simplified example. It does not show how to specify the body of the method GET_VALUE, which you do with the CREATE OR REPLACE TYPE BODY statement. Example: notes

Defining an object type does not allocate any storage. You can use LINEITEM, PERSON, or PURCHASE_ORDER in SQL statements in most of the same places you can use types like NUMBER or VARCHAR2.Defining an object type does not allocate any storage. You can use LINEITEM, PERSON, or PURCHASE_ORDER in SQL statements in most of the same places you can use types like NUMBER or VARCHAR2. For example, you might define a relational table to keep track of your contacts:For example, you might define a relational table to keep track of your contacts: CREATE TABLE contacts ( contact person date DATE ); The CONTACTS table is a relational table with an object type defining one of its columns. Objects that occupy columns of relational tables are called column objects.The CONTACTS table is a relational table with an object type defining one of its columns. Objects that occupy columns of relational tables are called column objects. Example: notes

PURCHASE_ORDER has a method named GET_VALUEPURCHASE_ORDER has a method named GET_VALUE Each purchase order object has its own GET_VALUE methodEach purchase order object has its own GET_VALUE method For example, if X_OBJ and Y_OBJ are PL/SQL variables that hold purchase order objects and W_NUM and Z_NUM are variables that hold numbers, the following two statements can retrieve values from the objects:For example, if X_OBJ and Y_OBJ are PL/SQL variables that hold purchase order objects and W_NUM and Z_NUM are variables that hold numbers, the following two statements can retrieve values from the objects: w_num = x_obj.get_value(); z_num = y_obj.get_value(); Both objects, being of the same type, have the GET_VALUE methodBoth objects, being of the same type, have the GET_VALUE method The method call does not need any parameters, because it operates on its own set of data: the attributes of X_OBJ and Y_OBJThe method call does not need any parameters, because it operates on its own set of data: the attributes of X_OBJ and Y_OBJ In this selfish style of method invocation, the method uses the appropriate set of data depending upon the object for which it is called.In this selfish style of method invocation, the method uses the appropriate set of data depending upon the object for which it is called. Example: notes