X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;ds=sidebyside;f=doc%2Fcsql.xml;h=4787898bb3996ec6157698b6604218fb9a0d8c5b;hb=4c5797c1926bdfb21ca1824408e4aa5bf0d30d19;hp=284de249342ffdf05aff263f9b1fc574f8bddc2d;hpb=9f1b97ba188b6c065146fc2cb7e818e5c62b7175;p=clsql.git
diff --git a/doc/csql.xml b/doc/csql.xml
index 284de24..4787898 100644
--- a/doc/csql.xml
+++ b/doc/csql.xml
@@ -36,19 +36,19 @@
- &clsql; is based on the CommonSQL package from Xanalys, so the
- documentation that Xanalys makes available online is useful for
+ &clsql; is based on the CommonSQL package from LispWorks Ltd, so the
+ documentation that LispWorks makes available online is useful for
&clsql; as well. It is suggested that developers new to &clsql; read
their documentation as well, as any differences between CommonSQL
- and &clsql; are minor. Xanalys makes the following documents
+ and &clsql; are minor. LispWorks makes the following documents
available:
-
- Xanalys &lw; User Guide - The &commonsql;
+
+ &lw; User Guide - The &commonsql;
Package
@@ -57,8 +57,8 @@
-
- Xanalys &lw; Reference Manual - The SQL
+
+ &lw; Reference Manual - The SQL
Package
@@ -66,7 +66,7 @@
-
+ &commonsql; Tutorial by Nick Levine
@@ -83,7 +83,7 @@
+ url="http://philip.greenspun.com/sql/data-modeling.html">
Philip Greenspun's "SQL For Web Nerds" - Data
Modeling
@@ -250,7 +250,7 @@ mapped into a database). They would be defined as follows:
- :column- - A string which will be used as the
+ :db-type - A string which will be used as the
type specifier for this slots column definition in the database.
@@ -292,6 +292,17 @@ mapped into a database). They would be defined as follows:
:base-table option specifies what the table name
for the view class will be when it is mapped into the database.
+
+
+ Another class option is :normalizedp, which signals
+ &clsql; to use a normalized schema for the mapping from slots to
+ &sql; columns. By default &clsql; includes all the slots of a parent
+ class that map to &sql; columns into the child class. This option
+ tells &clsql; to normalize the schema, so that a join is done on the
+ primary keys of the concerned tables to get a complete column set
+ for the classes. For more information, see
+ def-view-class.
+
@@ -300,7 +311,7 @@ mapped into a database). They would be defined as follows:
In an &sql; only application, the EMPLOYEE and
COMPANY tables can be queried to determine things
-like, "Who is Vladamir's manager?", "What company does Josef work
+like, "Who is Vladimir's manager?", "What company does Josef work
for?", and "What employees work for Widgets Inc.". This is done by
joining tables with an &sql; query.
@@ -316,12 +327,12 @@ SELECT first_name, last_name FROM employee, company
-Who is Vladamir's manager?
+Who is Vladimir's manager?
SELECT managerid FROM employee
- WHERE employee.first_name = "Vladamir"
+ WHERE employee.first_name = "Vladimir"
AND employee.last_name = "Lenin"
@@ -454,6 +465,24 @@ There are other :join-info options available in &clsql;, but we will
save those till we get to the many-to-many relation examples.
+
+ Object Oriented Class Relations
+
+
+&clsql; provides an Object Oriented Data Definition Language, which
+provides a mapping from &sql; tables to CLOS objects. By default class
+inheritance is handled by including all the columns from parent
+classes into the child class. This means your database schema becomes
+very much denormalized. The class option :normalizedp
+can be used to disable the default behaviour and have &clsql;
+normalize the database schemas of inherited classes.
+
+
+
+See def-view-class
+for more information.
+
+
@@ -489,7 +518,7 @@ any other CLOS object:
(defvar employee1 (make-instance 'employee
:emplid 1
- :first-name "Vladamir"
+ :first-name "Vladimir"
:last-name "Lenin"
:email "lenin@soviet.org"
:companyid 1))