Improved documentation of normalized classes and changelog entry
[clsql.git] / doc / ref-ooddl.xml
index de79f21229028207fef7aaf801129de7eac1740f..891e213a70dcc09ad053aac05c94f4f8d0699eff 100644 (file)
        this class.
       </para>
 
+      <refsect2>
       <title>Normalized inheritance schemas</title>
       <para>
     Specifying that <symbol>:normalizedp</symbol> is <symbol>T</symbol>
@@ -716,7 +717,26 @@ CLSQL> (title test-user)
 CLSQL> (nick test-user)
 "test-user"
       </screen>
+      <para>
+        Notes from a refactor of this code.
+
+        There are many assumptions that need to be met for normalized classes to work
+
+        * The each of the classes should have its own single key column (of a different name)
+          that will contain an identical value.  EG: node has a node-id, setting which
+          is a node has a node-id and a setting-id which must be equal.  You cannot use
+          node-id as the primary key on both tables (as I would have expected).  The exception
+          to this seems to be if your class has no slots at all, then you dont need to have a
+          single key column, because your class is fully represented in the db by its parent(s)
 
+        * more than one parent class per normalized class should be considered experimental
+          and untested (vaya con Dios)
+
+        * There are a few code paths that just dont pay any attention to normalized classes
+          eg: delete-records-for-instance
+
+      </para>
+      </refsect2>
     </refsect1>
     <refsect1>
       <title>Examples</title>