[AccessD] One-to-One relationships

Arthur Fuller fuller.artful at gmail.com
Fri Jul 20 08:24:08 CDT 2007


I would respectfully suggest that you're overlooking something in your
analysis, Susan, but to observe it you need millions of rows in the given
table. But suppose that you have a table called Customers, which as
previously suggested in this thread might include both corporations and
persons. The first rule of database development is performance, above all
other considerations. Therefore one ought to identify the columns of
immediate interest (CustomerID, CustomerName, etc.) and store those in a
single table, pushing all the other attributes to one or more related tables
with a 1:1 relationship. This way, I can search a small table with multiple
indexes very quickly, and not bother with fetching the rest of the data
until you explicitly request it, at which point it would be a
lightning-quick sproc that receives a CustomerID and sends back the rest of
the data. If you really want to push the performance button, then you won't
return a rowset either. Instead you'll declare as many parameters as you
have columns of interest, and declare them all Output parameters. When you
want exactly one record, that's the quickest method.

I hope I didn't obscure the point here. The point is what I call the Sally
Rand principle. (You might have to be older than even I to understand the
reference -- she was a famous stripper, back when stripping meant that you
still retained most of your clothes.) Her point was, show them as little as
possible to still maintain their interest. That's my motto in terms of
database design. Never open an entire table. Show them only enough to pique
their curiosity, as it were.

On 7/20/07, Susan Harkins <ssharkins at setel.com> wrote:
>
> Yes, if it has a purpose. A one-to-one relationship almost always flows
> from
> need rather from the data itself. If you need to force a one-to-one, I'd
> say
> do it. However, if there's no business rule saying, "there can be only
> one..." it might be unnecessary, even if the data is presenting that
> picture
> right now. Listen to the data.
>
> Susan H.
>
> Is there any purpose/advantage in creating a one-to-one relationship in a
> database (e.g., CustomerId and CustomerName in one table and all the other
> customer data (e.g., sex, address,  phone, etc) in another table?
>
>
> --
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
>



More information about the AccessD mailing list