summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 2ba0fd3)
raw | patch | inline | side by side (parent: 2ba0fd3)
author | richard <richard@57a73879-2fb5-44c3-a270-3262357dd7e2> | |
Fri, 30 Aug 2002 08:46:07 +0000 (08:46 +0000) | ||
committer | richard <richard@57a73879-2fb5-44c3-a270-3262357dd7e2> | |
Fri, 30 Aug 2002 08:46:07 +0000 (08:46 +0000) |
git-svn-id: http://svn.roundup-tracker.org/svnroot/roundup/trunk@1012 57a73879-2fb5-44c3-a270-3262357dd7e2
doc/gadfly.txt | [new file with mode: 0644] | patch | blob |
diff --git a/doc/gadfly.txt b/doc/gadfly.txt
--- /dev/null
+++ b/doc/gadfly.txt
@@ -0,0 +1,51 @@
+==============
+Gadfly Backend
+==============
+
+This document outlines the design and implementation of the Gadfly (relational
+database) backend.
+
+
+About Gadfly
+============
+
+Gadfly is a collection of python modules that provides relational
+database functionality entirely implemented in Python. It supports a
+subset of the intergalactic standard RDBMS Structured Query Language
+SQL.
+
+
+Basic Structure
+===============
+
+Roundup supports a dynamic schema, something which doesn't map very well to a
+relational database table schema (or at least, it's frowned upon :)
+
+Approaches:
+
+1. Map roundup classes to relational tables. Automatically detect schema
+ changes and modify the gadfly table schemas appropriately. Multilinks
+ (which represent a many-to-many relationship) are handled through
+ intermediate tables.
+ Journals are stored adjunct to the per-class tables.
+2. Map roundup classes to relational tables. Automatically detect schema
+ changes and modify the gadfly table schemas appropriately. Multilinks
+ are handled with string representations of the id lists.
+ Journals are stored adjunct to the per-class tables.
+3. Four tables:
+
+ - classes: class id, name
+ - properties: class id, property id, name, type, options
+ - nodes: class id, node id, property id, value (one row per multilink value)
+ - journals: class id, node id, event, description
+
+ The classes and properties tables will need to be kept in sync with the
+ roundup schema.
+4. Two less efficient tables:
+
+ - nodes: class, property, node id, value (one row per multilink value)
+ - journals: class, node id, event, description
+
+ The classes and properties tables will need to be kept in sync with the
+ roundup schema.
+