Revision: 3170
Author: jfuerth
Date: Tue Nov 17 11:02:01 2009
Log: Edited wiki page through web user interface.
http://code.google.com/p/power-architect/source/detail?r=3170
Modified:
/wiki/DomainsFeature.wiki
=======================================
--- /wiki/DomainsFeature.wiki Fri Sep 26 13:29:38 2008
+++ /wiki/DomainsFeature.wiki Tue Nov 17 11:02:01 2009
@@ -3,15 +3,48 @@
The Architect currently does not support the concept of data domains, but
it's a feature we have been planning to add for some time.
-Features we'd like to include include:
-
- * User-defined domains with customized names
- * Mappings to JDBC types, including precision and scale (for forward
engineering)
- * ability to generate DDL with user-defined types in databases that
support it
- * Ability to define a hierarchy of domain types (such as a Monetary base
class which would then have CAD, USD, and so on)
- * This would be handy when making summary tables for OLAP tools, since
general types could have good predefined formatting rules: Discrete Count,
Continuous Value, Monetary, Percentage, and so on.
- * Introduce named enumerated types that forward engineer as ENUM or check
constraints depending on target platform support and idioms
- * You would see Domain names wherever data types are currently used
- * Have a project setting to choose between displaying JDBC types and
Domains (in edit panels as well as table panes and so on)
- * User-defined domains would be saved with each project
- * Should be able to "extract" the domains from a project file so that
they can be used in the current project
+
+==Motivation==
+
+ # Provide a way of using every native type in all target databases
without requiring a commitment to a single target platform up front
+ # Provide the means to create a more compelling logical model by
allowing the use of logical types
+ * This also makes it possible to produce simplified diagrams for
reporting users where types are boiled down
to "text," "number," "date/time," and "boolean."
+ # Pave the way for an "enterprise metadata repository" that will enhance
the rest of our product suite when used against a database on which logical
types have been defined (either because the model was created in Architect,
or the domains were "retrofitted" over an existing model).
+
+
+==Implementation Considerations==
+
+ # Don't compromise Architect's unique feature of platform-independent
modeling
+ # Must preserve forward compatibility for existing .architect project
files
+ # Think about how this new feature might interact with, enhance, or be
enhanced by the Architect's existing feature set:
+ * Forward Engineering
+ * Reverse Engineering
+ * Profiling
+ * Compare DM
+ * Column properties editor
+ * Playpen display preferences
+ * Print/PDF
+ * HTML data model report
+ * OLAP modeling
+
+==Proposed Features==
+
+ * Domains would appear wherever data types are currently used
+ * Add a project setting to choose between displaying Domains and
physical types for a particular database platform
+ * Be able to specify domains for columns of existing database tables
+ * GUI facility for defining new domains, capturing:
+ * Logical type name
+ * Physical type in each target database you care about, including
precision and scale plus custom native-coded check constraints (can be
deferred until forward engineering time if desired)
+ * Constraints on value
+ * Default value
+ * Display preferences (number/date format, alignment, display width)
+ * Description/documentation of purpose and correct usage
+ * Preferred aggregation function
+ * TODO: Need to consider how reverse engineering will work
+
+==Optional Features==
+
+ * Include an example library of semantic types that people could start
with
+ * Ability to define a hierarchy of domain types (such as a Monetary base
class which would then have CAD, USD, and so on)
+ * A more structured way to define enumerated types that forward engineer
as ENUM or varchar with check constraints depending on target platform
support and idioms
+ * Ability to "extract" the domains from a project file so that they can
be used in another project