= Architecture = [[Image(Architecture.png)]] Sahana Eden uses a [wiki:S3XRC/RESTfulAPI WebServices] architecture API documentation is available in Epydoc format: * http://pub.nursix.org/eden/s3/ ER diagrams can be built using MySQL Workbench dbwrench could also be used as a E-R diagram modelling tool for Postgres database == !Key/Value Tables == This is a fairly common pattern for storing flexible data models. If you need massive scale then using a dedicated NoSQL database for this does have it's advantages, however it is rarely useful for normal Eden tables due to performance limitations & the inability to use database constraints here (like Foreign Keys). Another disadvantage is that it is [http://howfuckedismydatabase.com/nosql/ unable to be queried easily]. For these reasons there is currently no support for this model in CRUD, although it would be easy to add if-required. If there is a strong need for this pattern for the non-foreign keys, then it is best to encode all the key/value pairs into a single text field, e.g. in JSON (like deleted_fk). Then need to add widget to handle the user presentation, validation & encoding/decoding. A Metavalidator could be used for server-side validation, if required. ---- DeveloperGuidelines