Re: Is there a bitfield type field in oracle?
Date: Wed, 30 Jan 2008 14:17:36 -0500
Message-ID: <13q1jahdvlea1ba@corp.supernews.com>
tb wrote:
> Solution 3) looks like a relational database. Go one step more.
>
> REF_TBL_TRAIN (ID, NAME) reference table for all trains
> (1,'TRAIN A')
> (2,'TRAIN B')
> (3,'TRAIN C')
> REF_TBL_WEEK (ID,WEEK) reference table for all weeks in
> the year (54 entries for one year)
> (1,'Week 1') ... (52,'Week 52')
>
> REF_TBL_DAY_WEEK (ID,RUNNING_DAY) reference table to specify the
> days a train is running (create only combinations you need)
> (1,'YYYYYYY'), (2,'YYYYYYN') or something more simpler.
I've had to work with 'NYNNY' data designs like this, and all I can say is that the label is apt.
- Composite fields (i.e. a column that holds more than one piece of information) are a red flag for bad data design.
- Representing date information by "rolling your own" means a lot of extra work, and probably errors (from leap years etc.)
A relational database that takes advantage of the date datatype would look something like this:
TRAINS (ID NUMBER PK,
NAME Varchar2(64) )
> (1,'TRAIN A') > (2,'TRAIN B') > (3,'TRAIN C') TRAIN_RUN_DATES (ID NUMBER FK to TRAINS table, D DATE constraint trunc(d)=d (or use a trigger), IS_RUNNING varchar2(1) ) > (1,01/01/2008,'Y')
> (1,01/02/2008,'Y')
> (2,01/01/2008,'N')
//Walt Received on Wed Jan 30 2008 - 13:17:36 CST