| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Mailing Lists -> Oracle-L -> RE: Table Design Question
  Technically, what you have here is a Many to Many relationship that
resolves into a Super-Type/Sub-Type table.  What you need to do here is add
an additional table.
LISTING
* LISTING_ID   INTEGER
  SALES_AGENT (etc)
PARAMETER
* PARAMETER_ID	INTEGER
  PARAMTER_TYPE   VARCHAR2(20)  -- This would be 'DATE', 'MONEY', 'STRING'
  DESCRIPTION	VARCHAR2(200)
LISTING_PARAMTER
* LISTING_ID      INTEGER
PROS:
CONS:
An alternate design, which would be acceptable, is to have the LISTING_PARAMETER table have the columns STRING_VALUE, NUMBER_VALUE, DATE_VALUE. Then you don't need to carry the parameter_type column down and it would be SUMable. This variation is probably how I would do it.
If you have any other questions, let me know.
Jason.
-----Original Message-----
From: Pallav Kalva [mailto:pallav_oracle_at_yahoo.com] 
Sent: Thursday, August 05, 2004 11:05 AM
To: oracle-l_at_freelists.org
Subject: Table Design Question
Hi ,
I am working on an application and need some help designing these 2 tables,
Table1 -> Listing
Columns Datatype Listingid Integer (Pk)
Table2 -> Parameter
Columns      Datatype
Parameterid    Integer  (Pk)
StringVal      Varchar
IntegerVal     Integer
MoneyVal       Money
DateVal        Date
     Each ListingId will have lot of parameters and
all the parameters may not have all the values for
each listing and also there might be more parameters
in the future. Based on this we have decided to go
with these 2 tables instead of having all the
parameter column names in the Listing table. But if we
go with this design in the parameter table we need to
store the values of each parameter which can be of any
data type, we might need to query on these values, so
we thought of having separate columns for each
datatype and there will be NULL values if that
datatype doesnt correspond to the parameter value, so
at any point there will 3 NULLS store for each entry
in Parameter table.
Is this design optimal for performance ? I am hoping this would be bad on performance of queries on Parameter table. Is there an better way of achieving this ?
TIA,
Pallav 
                
-- Archives are at http://www.freelists.org/archives/oracle-l/ FAQ is at http://www.freelists.org/help/fom-serve/cache/1.html ----------------------------------------------------------------- ---------------------------------------------------------------- Please see the official ORACLE-L FAQ: http://www.orafaq.com ---------------------------------------------------------------- To unsubscribe send email to: oracle-l-request_at_freelists.org put 'unsubscribe' in the subject line. -- Archives are at http://www.freelists.org/archives/oracle-l/ FAQ is at http://www.freelists.org/help/fom-serve/cache/1.html -----------------------------------------------------------------Received on Thu Aug 05 2004 - 12:29:16 CDT
![]()  | 
![]()  |