Samuel W. Flint преди 8 години
родител
ревизия
6357efdc3b
променени са 1 файла, в които са добавени 28 реда и са изтрити 2 реда
  1. 28 2
      cl-genealogy.org

+ 28 - 2
cl-genealogy.org

@@ -26,7 +26,7 @@
 #+TOC: headlines 3
 #+TOC: listings
 
-* WORKING Data Storage [1/9]
+* WORKING Data Storage [2/9]
 :PROPERTIES:
 :CREATED:  <2016-01-06 Wed 13:14>
 :END:
@@ -88,11 +88,37 @@ To accomplish the goal of storing data within the database system that is Lambda
     (1+ (length (select table))))
 #+END_SRC
 
-** TODO People
+** DONE People
 :PROPERTIES:
 :CREATED:  <2016-01-06 Wed 13:17>
 :END:
 
+This is the People table, used to store the most bare information about a person.  This includes the following:
+
+ - ID :: The ID used to identify the person within the database.
+ - Name :: The name of the person.
+ - Gender :: The gender of the person.  Can be one of:
+   - M
+   - F
+   - T
+ - Father :: The person's father.  This is either an person ID, or 0 if we don't know who the father is.
+ - Mother :: The person's mother.  As with father, this can be either a person ID or 0.
+
+#+Caption: Person Table
+#+Name: person-table
+#+BEGIN_SRC lisp
+  (defattributes
+    :/person-id (unique-in-column :people :/person-id integer)
+    :/person-name #'stringp
+    :/gender (constrain-values "M" "F" "T")
+    :/father (lambda (object)
+               (or (= 0 object)
+                  (funcall (in-table-column :people :/person-id) object)))
+    :/mother (lambda (object)
+               (or (= 0 object)
+                  (funcall (in-table-column :people :/person-id) object))))
+#+END_SRC
+
 ** TODO Births
 :PROPERTIES:
 :CREATED:  <2016-01-06 Wed 13:17>