gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Data Dictionary Concept


From: J. Childers
Subject: Data Dictionary Concept
Date: Sun, 18 Aug 2002 09:00:39 -0700 (PDT)

Derek,

Has any kind of data dictionary or data structures definition been started yet? 
If not, I have a
concept that I've been using over the last couple years in our development that 
seems to really
shorten development time. Basically, it works like this (lots of detail left 
out of course):

Define Possible Properties (think fields in this case) of Objects (think 
tables) as one of a few
pre-defined types:

1- Primary key (one per object, user-invisible)

2- Surrogate key (user-visible object key e.g. customer, item, vendor "ID" 
number. All characters
allowed, read/write)

3- Local value ("data"; e.g. units ordered, contact phone no, company name, etc)
        - list/option values can be set and edited right in data dictionary for 
combo/list fields 
          this can be a list of values or a SQL statement that returns the list
        - generic data types (char, int, date, logical, etc.)
        - meta-types: e.g. phone number, zip code, currency, etc.

4. Composite value (i.e. "calculated field". The dictionary stores the SQL or 
object name used to
calculate this field at runtime for any time it is used or displayed. Logic in 
the object class
handles calculating the value on the fly whenever the property for this field 
is accessed from the
object. Nothing is actually stored in the table - this is a logical field with 
no physical
counterpart). Examples: line item subtotal, order total, order tax, order 
freight, A/R account
distribution total for invoice, inventory on-hand quantity, etc. So ALL 
subtotal or aggregated
fields are calculated on the fly. It becomes very easy to edit / maintain the 
calculations at the
data dictionary level, and avoids many data integrity errors.


Now you add default logic to your base classes for data entry controls that 
determine behavior
when the control is created on a form depending on the data type. The only 
property you are
required to set locally is the field ID - the control looks up the typing and 
other information
from the data dictionary.

TYPE                    BUILT-IN BEHAVIOR
================        
====================================================================
Primary keys    Never shown, only possible behavior is set self to read only)

Surrogate keys  Implement lookup logic when in edit mode via right click menu 
or 
                        create a small lookup button next to field on init 
etc). E.g. 
                        Order No control on Invoice form lets you "lookup" the 
                        original order form. Customer no control lets you 
"lookup" the
                        customer card and/or select a different customer. 
                        Implement optional search logic to trigger lookup 
form/utility.

Local value     Set all properties for control from base data type definition:
                        E.g. "list" fields get a combo box, "phone no" fields 
have their 
                        input mask set to system default, general validations 
are set, etc.

Composite value Read only at runtime. However, right click or runtime-level 
control
                        allows "drill down" to the records that are used to 
calculate the 
                        value. E.g. right-click on AR Debit balance field and 
see all the 
                        individual postings that make up the figure. You can do 
a lot more
                        with this.

You could define a couple more types (e.g. true "drill-down" and "drill-up" 
types) but you get the
idea. Here's where the advantages start:

1) The data dictionary becomes the central place where much application 
behavior and logic can set
set or modified (think end-user customizations like the ability to change list 
values easily). 

2) Data dictionary can now be used to enforce core validations at all levels of 
the application.
E.g. you can open the entire table for browsing in a grid -- each individual 
cell control relies
on the dictionary settings to validate, calculate, format, etc. 

3) Adding controls to forms requires only to set the field ID to enable the 
majority of
functionality that you typically want. There could be a single control that 
even includes the
object's caption (from the data dictionary). Designers could just use that 
single control when
building forms and not have to worry about 10 different widgets - the control 
will self-select the
appropriate widget.

4) Upgrading the base control class can upgrade application-wide behavior.

5) Key modules such as lookup forms, drill-down and drill-up become automated 
and can be
maintained in a single place.

Detail record entry (e.g. sales order lines) can be easily handled in a grid 
where each cell is a
baseclass control. If the wxPython grid widget isn't working sufficiently well 
to handle this we
can create our own grid control without enormous effort I think.

What do you think? If you like it, I could flesh it out into something more 
tangible for peer
review and comment.


Regards,

Jeff Childers


-----Original Message-----
From: address@hidden [mailto:address@hidden Behalf Of Derek
Neighbors
Sent: Friday, August 16, 2002 4:25 PM
To: J. Childers
Cc: address@hidden
Subject: Re: Supply Chain Spec Volunteer


Yes we woudl love it, the source of that pdf is in cvs and is actually
in docbook (xml).  You can submit patches to it via address@hidden or
address@hidden

Neil Tiffin was heading up specs, but has other committments now, so
sending to the core will work until we find a new 'head' of application
speficication.  It's really a great job, in fact it even pays well, a
200% increase per day is *GUARANTEED*.  (assuming one is foolish enough
to believe 0*200 = something valuable)

-Derek
On Thu, 2002-08-15 at 14:22, J. Childers wrote:
> Hey, do you guys want somebody to start fleshing out the SupplyChain.pdf 
> document? I assume that
> it's a spec of sorts...
> 
> I would love to work on that. I have lots of detailed ERP product experience 
> (from coding to
> implementation) and tons of opinions :).  Who's in charge of specs anyway?
> 
> Regards,
> 
> Jeff Childers
> 
> __________________________________________________
> Do You Yahoo!?
> HotJobs - Search Thousands of New Jobs
> http://www.hotjobs.com
> 
> 
> _______________________________________________
> Gnue mailing list
> address@hidden
> http://mail.gnu.org/mailman/listinfo/gnue
> 




_______________________________________________
Gnue mailing list
address@hidden
http://mail.gnu.org/mailman/listinfo/gnue


__________________________________________________
Do You Yahoo!?
HotJobs - Search Thousands of New Jobs
http://www.hotjobs.com




reply via email to

[Prev in Thread] Current Thread [Next in Thread]