Re: Abbreviation List Tables Design, aka OTLT
- From: "Simon Verona" <nomail@xxxxxxxxxx>
- Date: Sat, 21 Jan 2006 01:07:36 -0000
I kind of agree with your comments..
Remembering that we don't use the ID structure that you describe.. Using
your example we would have 3 records: COLOR STATE and CUSTTYPE.. so
COLOR
<1>=R]B]G
<2>=Red]Blue]Green
etc.
I agree though that the format of the records should be simple - anything
more than a descriptive lookup will get confusing, though we do sometimes
store the odd attribute of extra info,
As far as abiding to laws.. I'm not quite sure how I would mathematically
describe when you stop using this type of stucture and go to a unique file
for the lookup. Personally, I still think along the lines of the old 32kb
item size limit!!!
As for performance, you would notice the difference if you used a lookup
structure as you describe and you had 10,000 different records in the file
(for different types of lookup) and you wanted a list of available
colours... I could do it in one disk read.. you'd have to scan 10,000
records to find it... We would both have the same data in the file...
Regards
Simon
"Brian Bond" <brian@xxxxxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:11t2jo85k85ii16@xxxxxxxxxxxxxxxxxxxxx
> (Please prefix this missive with "IMHO". Thanks.)
>
> Many times I have encountered a file called "codes" that uses the type of
> "prefix*suffix" keys as is currently being discussed. All sorts of items
> typically get placed in such a file, e.g. COLOR*RED, COLOR*BLUE, STATE*WA,
> STATE*MN, CUSTTYPE*ABC, etc.
>
> Unfortunately, what often occurs with a this catch-all file is that one
> type
> of record needs some additional attributes, so attribute 2 for that type
> becomes used for some new specific piece of data related to the
> record type. Then the same thing happens for another type of record, where
> a
> different piece of data is now in attribute 2 for those records. And so
> on
> and so on. At some point you've ended up with many different types of
> data
> in a single file and things have become a mess.
>
> I will also ask, conceptually, where do you stop? How many records of a
> given type can be in this file before you decide that the data should be
> defined in its own file? Ten? Twenty? Heck, let's just put every single
> record in our system (keyed by prefix) into this file; then we only have
> one
> file to open! Going an insane step further, you could then just
> toss everything into the MD and not even worry about having ANY extra
> files <g>.
>
> We should also reference Codd's Rule 2 of "Guaranteed Access" (not that I
> agree with everything he says, but I do in this case) "All data should be
> accessible without ambiguity. This can be accomplished through a
> combination
> of the table name, primary key, and column name." So having attributes
> contain different data based in the type of key seems to me to violate
> this
> rule.
>
> So what do we do when we have "one off" pieces of data? What I have used
> in
> the past to good effect is to create a file called "system attributes",
> containing a single record which contains all the types of attributes that
> would typically
> be found in seperate records of a code file. This record can be read
> either at login, populating
> fields in named common, and/or specifically read at the top of an app.
>
> The record contains all one-off fields such as "COMPANY.NAME,
> COMPANY.ADDRESS, COMPANY.STATE, BUSINESS.LICENSE.NBR, CEO.IQ,
> PIZZA.DELIVERY.NBR, THIS.VALUE, THAT.VALUE, etc. The record may end up
> containing a boatload of attributes, but because it is read infreqently,
> this adds no significant processing overhead. Empty attributes are the
> equivilant of NOF.
>
> The nice aspect of using the system attribute record is that (1) every
> field
> is explicitly defined in a known location, (2) if need be (such as
> testing),
> it is easy enough to load in a different system attribute record and
> immediately change the behavior of your system.
>
> This record should not (generally) contain multi-value data, such as codes
> with corresponding descriptions. That type of data goes onto its own
> file,
> each value-pair corresponding to one record (adding that if you prefer
> having one record with a boatload of value-pair combinations to avoid
> reads, a reasonable alternative is to cache your data as you progress.
> When you need to check a given code file, first check a list of keys read;
> if the value exists, get whatever you need from a matching description
> list. If not, then read the appropriate record and add it to your list to
> avoid further reads. The extra overhead is minimal.)
>
> As you can probably guess, my #1 concern is the structure of the database.
> I prefer not to design to meet a performance goal, but rather that the
> database can accurately define my data. I have not in a very long while
> come up with a situation where the database design following the above
> concepts caused any performance problems, especially with today's fast
> hardware.
>
> Go Seahawks!
>
>
>
>
.
- References:
- Abbreviation List Tables Design, aka OTLT
- From: dawn
- Re: Abbreviation List Tables Design, aka OTLT
- From: Brian Bond
- Re: Abbreviation List Tables Design, aka OTLT
- From: Excalibur
- Re: Abbreviation List Tables Design, aka OTLT
- From: Simon Verona
- Re: Abbreviation List Tables Design, aka OTLT
- From: Peter McMurray
- Re: Abbreviation List Tables Design, aka OTLT
- From: Simon Verona
- Re: Abbreviation List Tables Design, aka OTLT
- From: Brian Bond
- Abbreviation List Tables Design, aka OTLT
- Prev by Date: Re: OT: in the USA - The Southern Part
- Next by Date: Re: in the USA - The Southern Part
- Previous by thread: Re: Abbreviation List Tables Design, aka OTLT
- Next by thread: Re: Abbreviation List Tables Design, aka OTLT
- Index(es):
Relevant Pages
|
Loading