JD, Chris, > The long and short of it is this. Core believes that data integrity > belongs with your data,
Or, in less abstract terms, we expect that people will want to create plug-ins and interoperability modules for LedgerSMB with other software. The best way to make sure that extensions of LedgerSMB cannot mess up the base financial data is to create a bulletproof data API for them to plug into instead of the base tables. While such an API could be created in middleware, creating a middleware API which would be programming-language agnostic and sufficiently robust and secure would be significantly greater effort (as in 3x to 10x) than doing it inside the database. Especially given our pool of expertise, which includes several PostgreSQL experts. > which means we will be > implementing data type constraints, custom domains, RI, triggers, rules > and any other method required (including functional check constraints) > to insure that the data of ledgersmb is impeccable. I've done this with other financial databases. Generally I end up implementing a full abstraction layer in the database, consisting of numerous views and functions replacing direct table access. I would tend to lean against triggers/rules on base tables, except for data auditing, as they are difficult to manage from a development perspective and can easily have unintended effects. Views and data-push functions, or pseudo-tables, allow front-loading of business rules in a way which can be easily isolated to specific data regions. -- Josh Berkus PostgreSQL @ Sun San Francisco ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Ledger-smb-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ledger-smb-devel
