Object Definition Language CORBA ODMG ODL (design OQL (queries ODL Relational design OODMBS input ...
-
Upload
walter-elliott -
Category
Documents
-
view
217 -
download
1
Transcript of Object Definition Language CORBA ODMG ODL (design OQL (queries ODL Relational design OODMBS input ...
![Page 1: Object Definition Language CORBA ODMG ODL (design OQL (queries ODL Relational design OODMBS input Design language derived from the OO community: Can.](https://reader036.fdocuments.us/reader036/viewer/2022082505/56649f0b5503460f94c1e806/html5/thumbnails/1.jpg)
Object Definition Language
CORBA
ODMG
ODL(design
OQL(queries
ODLRelational design
OODMBS input
Design language derived from the OO community: Can be used like E/R as a preliminary design for a
relational DB.
![Page 2: Object Definition Language CORBA ODMG ODL (design OQL (queries ODL Relational design OODMBS input Design language derived from the OO community: Can.](https://reader036.fdocuments.us/reader036/viewer/2022082505/56649f0b5503460f94c1e806/html5/thumbnails/2.jpg)
ODL Class Declarations
interface < name > {elements = attributes, relationships, methods }
Element Declarations attribute < type > < name > ; relationship < rangetype > < name > ;
Method Example float gpa(in: Student) raises(noGrades)
float = return type. in: indicates Student argument is read-only.
Other options: out, inout. noGrades is an exception that can be raised by
method gpa.
![Page 3: Object Definition Language CORBA ODMG ODL (design OQL (queries ODL Relational design OODMBS input Design language derived from the OO community: Can.](https://reader036.fdocuments.us/reader036/viewer/2022082505/56649f0b5503460f94c1e806/html5/thumbnails/3.jpg)
Banking Example 1
customer loans
branch
borrower
Belongs-to
Customer-of
Ss# name amount loandid
branchid location
type
address
Keys: ss#, loanid, branchid
Cardinality constraint: each loan belongs to a single branch
![Page 4: Object Definition Language CORBA ODMG ODL (design OQL (queries ODL Relational design OODMBS input Design language derived from the OO community: Can.](https://reader036.fdocuments.us/reader036/viewer/2022082505/56649f0b5503460f94c1e806/html5/thumbnails/4.jpg)
Banking Example (II) interface Customer {
attribute string name; attribute integer ss#; attribute Struct Addr {string street, string city, int
zip} address;relationship Set<Loans> borrowed
inverse Loans::borrower;relationship Set<Branch> has-account-at
inverse Branch:patrons;key(ss#)
} Structured types have names and bracketed lists of field-
type pairs. Relationships have inverses. An element from another class is indicated by < class > :: Form a set type with Set<type>.
![Page 5: Object Definition Language CORBA ODMG ODL (design OQL (queries ODL Relational design OODMBS input Design language derived from the OO community: Can.](https://reader036.fdocuments.us/reader036/viewer/2022082505/56649f0b5503460f94c1e806/html5/thumbnails/5.jpg)
Loans Example (III) interface loans {
attribute real amount;attribute int loanid;
attribute Enum loanType {house, car, general} type;
relationship Branch belongs-toinverse Branch::loans-granted;relationship Set<Customer> borrowerinverse Customer::borrowed;key(loanid)
}
Enumerated types have names and bracketed lists of values.
![Page 6: Object Definition Language CORBA ODMG ODL (design OQL (queries ODL Relational design OODMBS input Design language derived from the OO community: Can.](https://reader036.fdocuments.us/reader036/viewer/2022082505/56649f0b5503460f94c1e806/html5/thumbnails/6.jpg)
Bank Example (IV) interface Branch {
attribute integer branchid;attribute Struct Customer::Addr
location;relationship Set<Loans> loans-granted
inverse Loans::belongs-to;relationship Set<Customer> patrons
inverse Customer::has-account-at;key(branchid);
} Note reuse of Addr type.
![Page 7: Object Definition Language CORBA ODMG ODL (design OQL (queries ODL Relational design OODMBS input Design language derived from the OO community: Can.](https://reader036.fdocuments.us/reader036/viewer/2022082505/56649f0b5503460f94c1e806/html5/thumbnails/7.jpg)
ODL Type System Basic types: int, real/ float, string,
enumerated types, and classes. Type constructors: Struct for structures
and four collection types: Set, Bag, List, and Array.
![Page 8: Object Definition Language CORBA ODMG ODL (design OQL (queries ODL Relational design OODMBS input Design language derived from the OO community: Can.](https://reader036.fdocuments.us/reader036/viewer/2022082505/56649f0b5503460f94c1e806/html5/thumbnails/8.jpg)
Limitations on Nesting
Relationship
class collection
Attribute
collectionstructBasic,no class
![Page 9: Object Definition Language CORBA ODMG ODL (design OQL (queries ODL Relational design OODMBS input Design language derived from the OO community: Can.](https://reader036.fdocuments.us/reader036/viewer/2022082505/56649f0b5503460f94c1e806/html5/thumbnails/9.jpg)
ER versus ODL E/R: arrow pointing to “one. ODL: don't use a collection type for relationship in
the “many" class. Collection type remains in “one.”
E/R: arrows in both directions. ODL: omit collection types in both directions
ODL only supports binary relationship. Convert multi-way relationships to binary and then
represent in ODL create a new connecting entity set to represent the rows
in the relationship set. Problems handling cardinality constraints properly!!
![Page 10: Object Definition Language CORBA ODMG ODL (design OQL (queries ODL Relational design OODMBS input Design language derived from the OO community: Can.](https://reader036.fdocuments.us/reader036/viewer/2022082505/56649f0b5503460f94c1e806/html5/thumbnails/10.jpg)
Roles in ODL No problem; names of relationships handle roles.”
interface employee {attribute string name;relationship Set<Employee> manager
inverse Employee::worker;relationship Set<Employee> worker
inverse Employee::manager}
employee works for
manager
worker
![Page 11: Object Definition Language CORBA ODMG ODL (design OQL (queries ODL Relational design OODMBS input Design language derived from the OO community: Can.](https://reader036.fdocuments.us/reader036/viewer/2022082505/56649f0b5503460f94c1e806/html5/thumbnails/11.jpg)
Subclasses in ODL Subclass = special case = fewer
entities/objects = more properties. Example: Faculty and Staff are
subclasses of Employee. Faculty have academic year (9 month salaries) but staff has a full-year (12 month salary).
![Page 12: Object Definition Language CORBA ODMG ODL (design OQL (queries ODL Relational design OODMBS input Design language derived from the OO community: Can.](https://reader036.fdocuments.us/reader036/viewer/2022082505/56649f0b5503460f94c1e806/html5/thumbnails/12.jpg)
ODL Subclasses Follow name of subclass by colon and its
superclass. interface Faculty:Employee {
attribute real academic-year-salary;}
Objects of the Faculty class acquire all the attributes and relationships of the Employee class.
Inheritance in ODL and ER model differ in a subtle way
in ODL an object must be member of exactly one class in ER an object can be member of more than one class
![Page 13: Object Definition Language CORBA ODMG ODL (design OQL (queries ODL Relational design OODMBS input Design language derived from the OO community: Can.](https://reader036.fdocuments.us/reader036/viewer/2022082505/56649f0b5503460f94c1e806/html5/thumbnails/13.jpg)
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.
Keys are not necessary for ODL. Object identity and not keys differentiates objects