RE: [GENERAL] 88, CREATE FUNCTION ON TABLE

From: "Jackson, DeJuan" <djackson(at)cpsgroup(dot)com>
To: clark(dot)evans(at)manhattanproject(dot)com, pgsql-general(at)postgreSQL(dot)org
Subject: RE: [GENERAL] 88, CREATE FUNCTION ON TABLE
Date: 1999-01-04 20:46:43
Message-ID: F10BB1FAF801D111829B0060971D839F5AEE54@cpsmail
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

> On several occasions I've heard my father, an old cobol hack, cry that
> none of the current databases nor programming languages have an "88".
> Since he's my dad I often ignored him, but finally, some 5 years later
> I now know what he was talking about. In my last contract
> assignment, I was given the job of training / helping a bunch of
> COBOL programmers to convert their code to PL/SQL.
> Their code was "beautiful"... really. It's unfortunate that they had
> to convert to Oracle PL/SQL, which is very much inferior. Anyway,
> in this e-mail I describe exactly what an COBOL level 88 is, and
> suggest an improvement to PostgreSQL.
>
> When defining a data structure, much like a table description,
> a COBOl programmer describes the record by listing its members
> and providing a data type for each. Here is psuto code:
>
> 01 customer
> 10 customer_id pic9(10)
> 10 customer_name picX(30)
> 10 customer_status picX(01)
> 88 active-client value "A" "a".
> 88 historical-client value "H" "h".
> 88 invalid-client value "I" "i".
> 88 potential-client value "P" "p".
> 88 current-client value "A" "a" "P" "p"
> 10 sales_rep pic9(10)

This might be a useful tool to have in postgres.
The way I've always handled this situation in database layout is to use
what I call a valid table.

create table customer (
customer_id int primary key,
customer_name varchar(30),
customer_status char(1),
sales_rep int);
create table valid_c_status (
status char(1) primary key,
active_client boolean DEFAULT FALSE,
historical_client boolean DEFAULT FALSE,
invalid_client boolean DEFAULT FALSE,
potential_client boolean DEFAULT FALSE,
current_client boolean DEFAULT FALSE);

insert into valid_c_status (status, active_client, current_client)
values ('a', TRUE, TRUE);
insert into valid_c_status (status, active_client, current_client)
values ('A', TRUE, TRUE);
insert into valid_c_status (status, historical_client)
values ('h', TRUE);
.
.
.

You basically get the same functionality with a simple join. I realize
that this increases the number of relations, but it also keeps the
amount of duplicate data to a minimum while allowing the use of standard
sql to solve the problem.

Just my $0.02
-DEJ

Browse pgsql-general by date

  From Date Subject
Next Message Anand Surelia 1999-01-04 21:21:25 Regress test failing on Sparc Solaris 2.5.1
Previous Message Greg Youngblood 1999-01-04 18:33:21 Triggers and sql functions not working...