|
Posted by Mike on 12/08/05 14:46
Thnx for answers.
On Wed, 7 Dec 2005 22:10:53 +0000 (UTC), Erland Sommarskog wrote:
> Mike (peroos_7@hotmail.com) writes:
>> Can anyone tell me what is best practices to define relationships between
>> tables and to define their primary key?
>>
>> For example...
>> One table is Orders and other is OrderDetails.
>> For ease of accessing datas from table OrderDetails I have fields copied
>> from Orders like year_of_order, order_number, client_id.
>
> That is usually not a good idea. For this pair of tables I would
> expect order_number to appear in both tables. Further more I would expect
> order_number to be the primary in Orders, and I would expect it to be
> the first colunm of a two-column key in OrderDetails. (The second
> column would be a row number or a product id.)
>
> But year_of_order or client_id should be in Orders only. There are cases
> where it's right to denormalise and duplicate data, but the better
> optimizers in modern RDBMS get, the less often there is a reasone for this.
> And, in any case, before you start to denormalise, you need to learn
> to normalise. (Unless you are into data-warehousing where they de-
> normalize all day long.)
>
> What is normalisation about? Basically about avoiding redudancy. The
> Orders/OrderDetails is maybe a poor example, as a lot of order data is
> static. But assume that the ClientID can change. If you have duplicated
> the column, you need to update it both tables, and if you fail to do
> that you have an anomaly.
Navigation:
[Reply to this message]
|