Mercurial > p > roundup > code
diff doc/gadfly.txt @ 995:b59b60306914
gadfly backend docco
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Fri, 30 Aug 2002 08:46:07 +0000 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/gadfly.txt Fri Aug 30 08:46:07 2002 +0000 @@ -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. +
