On Fri, Mar 14, 2008 at 11:42 AM, Nathan Andelin wrote:
It seems that no matter how well you plan your database, you'll have some users that want to track additional data in user defined fields.
For example, in your employee record you may have fields for first, middle, and last names; but one of your users may want to track an additional set of attributes for some or many employees that weren't included in your initial database design. Perhaps the data is not generally applicable to most users.
So I'm planning on writing a utility to enable the maintenance of data elements that users define themselves, and wondered if list members would be willing to share their input to help me define requirements for the utility.
The user interface will be browser-based. My general idea is to attach a tab to standard maintenance screens to evoke the utility which would display the additional attributes that users may define for any given subject (employees, customers, products, ...).
When the tab is clicked, I envision the utility generating a screen that displays input elements, scrollable text areas, drop-down lists, check boxes, popup selection lists, popup calendars (for date fields), according to the data types and other parameters pertaining to each field.
I've begun defining table to store user defined field definitions and have so far come up with the following layout:
Subject ID (employee, customer, product, and so forth) (a key)
Sequence Number (to enable the user to order the fields when displayed on the screen) (a key)
Attribute ID (each attribute would have a unique ID within the subject) (a key)
Field Label (the field label displayed on the maintenance screen)
Data Type (character, number, date, boolean, stream file, etc.)
Number of Decimal Positions (for numeric data types)
I may also need to define a few basic data validation stuff:
Required Flag (must be filled in Y/N)
From Range (numeric data values)
To Range (numeric data values)
Uppercase Flag (Y/N)
Output Edit Mask (###-##-####, for example)
Input Edit Mask ((###) ###-####, for example)
Popup List ID (refers to a popup definition - a separate definition)
Dropdown List ID (refers to a dropdown list ID - a separate definition)
Any other thoughts? If there's interest, I could provide a hyperlink after I've completed the utility.