Re: Shall I apply normalization in the following case?

Поиск
Список
Период
Сортировка
От Jorge Godoy
Тема Re: Shall I apply normalization in the following case?
Дата
Msg-id 175c742d1002031756s53aa506cjeb5fa7c061536c8e@mail.gmail.com
обсуждение исходный текст
Ответ на Shall I apply normalization in the following case?  (Yan Cheng Cheok <yccheok@yahoo.com>)
Ответы Re: Shall I apply normalization in the following case?  (Jeff Davis <pgsql@j-davis.com>)
Список pgsql-general
You can always normalize and not use an artificial key.

You'd end up with:


measurement (normalization)
===========
id | value | measurement_unit_id | measurement_type_id
------------------------------------------------------
1   0.23     mm                    width
2   0.38     mm                    width
2   0.72     mm                    width


measurement_unit_id
===================
value
----------
  mm
     m
      cm
      in
      cm²
      m³


measurement_type_id
===================
  value
----------
  width
     area
     depth
     volume



And so on.  You'd benefit from a normalized structure, you'd have constraints checking for valid units and types and you wouldn't need join to get the resulting information.



--
Jorge Godoy     <jgodoy@gmail.com>


On Wed, Feb 3, 2010 at 23:20, Yan Cheng Cheok <yccheok@yahoo.com> wrote:

For example, for the following table,


measurement (without normalization)
===========
id | value | measurement_unit | measurement_type
------------------------------------------------
1   0.23     mm                    width
2   0.38     mm                    width
2   0.72     mm                    width


If I normalize to the following format, I will encounter several problem compared to table without normalization



measurement (normalization)
===========
id | value | measurement_unit_id | measurement_type_id
------------------------------------------------------
1   0.23     1                    1
2   0.38     1                    1
2   0.72     1                    1


measurement_unit_id
===================
id | value
----------
1  | mm


measurement_type_id
===================
id | value
----------
1  | width


(1) When rows grow to few millions in table measurement, the join operation on normalization table, is *much* slower compared to non-normalization table.

One of the most frequent used query, To retrieve "value", "measurement_unit" and "measurement_type",  I need to join measurement + measurement_unit_id + measurement_type_id.

For non-normalization table, I need NOT to join.

Right now, I cannot justify why I need to use normalization. I afraid I miss out several important points when I turn into un-normalize solution. Please advice if you realize I miss out several important points.

Thanks
Yan Cheng CHEOK





--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

В списке pgsql-general по дате отправления:

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: varchar(n) and text
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Why lots of temp schemas are being created