Proposal 2:
a. eliminates the need for migration, both at code and persisted resource
level, for existing consumers of WTP as well as DTP by maintaining model
compatibility.
b. introduces a Catalog element to address the need of vendors who support multiple
catalogs (Sybase, SQLServer).
c. does not compel vendors who do not support multiple catalogs (DB2, Oracle,
Informix, Derb, etc) to model the Catalog.
d. for WTP consumers, the Database.getSchemas() method will be modified as follows:
EList catalogList = database.getCatalogs();
if (!catalogList.isEmpty()) {
EList schemaList = new BasicEList();
Iterator catalogIter = catalogList.iterator();
while(catalogIter.hasNext()) {
Catalog currentCatalog = (Catalog)catalogIter.next();
schemaList.addAll(currentCatalog.getSchemas());
}
return schemaList ;
}
else {
// do what the Database.getSchemas() method does today
}

3. OMG is also propose enhancement and changes on SQLModel as part of their plan to adopt SQLModel from DTP.

4. Other changes which is already in WTP, will be in DTP when item #2 is
finalized

a. Remove SQL 99 spec content from the UML model, replaced with just a
reference.

OMG SQLModel discussion 8/04/06

Following is a list of questions related to SQLModel which was discussed during our meeting today.

1. Table can have 0 column

EMF code generation does not enforce the cardinality. However it makes a difference when it comes to cloning, especially if the relationship is not a composition. We should have no issue for WTP migration to change the cardinality from 1..n to 0..n. since the Table-Column relationship is modeled as a containment.

2. Constraint is modeled as a enumerated value in CWM, unlike 3 attributes defined for Constraint object in DTP SQLModel.
Attributes for Constraint

Name

Class

Type

Initial Value

deferrable

Constraint

boolean

initiallyDeferred

Constraint

boolean

false

enforced

Constraint

boolean

true

SQL Spec.
10.8 .......

3) If <constraint check time> is not specified, then INITIALLY IMMEDIATE is implicit.
4) Case:
a) If INITIALLY DEFERRED is specified, then:
i) NOT DEFERRABLE shall not be specified.
ii) If DEFERRABLE is not specified, then DEFERRABLE is implicit.

The only invalid combination is NOT DEFERRABLE INITIALLY DEFFERED. If needed, we can put a note in the model. I guess modeling as enum only helps eliminate checking for valid combinations by the end user application code. Btw in Oracle reference manual, both properties are modeled separately as well.

The trigger action body can be made up of group of statements. The end user application may decide to map the entire group of statements to one SQLModel SQL statement or to map each statement to its own SQLModel SQL statement.

Note: Some WTP adopted commercial product maps the entire group of statements to one SQLModel SQL statement.

4. User Defined Type - No issue after the short discussion.

5. Table - What is the purpose for ReferenceType enum?

'Attributes for ReferenceType'

Name

Class

Type

Initial Value

SYSTEM_GENERATED

ReferenceType

USER_GENERATED

ReferenceType

DERIVED_SELF_REF

ReferenceType

A table based on a UDT is called as a "typed" or "referenceable" table. in such a table, for every attribute definition of the UDT, there is a corresponding column definition. In addition, in a such a table, there is a extra column called as the "self-referencing" column. This is equivalent of OID in OO terminology.
All typed tables have a self-referencing column. The ReferenceType enum describes the options for generating the values of the self-referencing column.