X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=doc%2Fref-ooddl.xml;h=4a2cffa140b4600703290805f4e6352301b5af1d;hb=bd6843e2084ce45d3d7b769e383c3cac589b5e93;hp=03ab9aafafc5b2b6e93ea16c67b98cb749b76b1c;hpb=406feeb749bb475bec8077a2716a5b6089bd9072;p=clsql.git diff --git a/doc/ref-ooddl.xml b/doc/ref-ooddl.xml index 03ab9aa..4a2cffa 100644 --- a/doc/ref-ooddl.xml +++ b/doc/ref-ooddl.xml @@ -594,7 +594,11 @@ Defaults to nil, i.e. non-normalized schemas. When true, SQL database tables that map to this class and parent classes are joined on their primary keys to get the full - set of database columns for this class. + set of database columns for this class. This means that + the primary key of the base class will be copied to all + subclasses as we insert so that all parent classes of an + instance will have the same value in their primary key slots + (see tests/ds-nodes.lisp and oodml.lisp) @@ -717,6 +721,25 @@ CLSQL> (title test-user) CLSQL> (nick test-user) "test-user" + + 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 + +