Re: Ejemplo de una organización de tablas

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Carolina Roman Salgado <rossyr(at)abulafia(dot)ciencias(dot)uchile(dot)cl>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Ejemplo de una organización de tablas
Date: 2009-07-06 15:06:36
Message-ID: 20090706150636.GB5861@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Carolina Roman Salgado escribió:

> Mi primera pregunta es cómo es adecuado almacenar la información. No sé
> si es mejor algo como
>
> artículo_id | área de investigación id
> ---------------------------------------
> n | j
> n | k
> n | l
> m | k
>
> o
>
> artículo_id | área de investigación id
> ---------------------------------------
> n | j,k,l
> m | k

Definitivamente la primera forma. Este es uno de los pasos de la
normalización: evita tener atributos que representen más de un valor.

> Sé que hay un costo al tomar la cadena y tener que procesarla con php,

¿Procesar la cadena con PHP? Argh. Olvídate de eso. La forma
conveniente de hacer estas cosas es decirle al motor qué datos quieres
(las descripciones de todos los artículos de tal autor), en vez de traer
los ID de artículos del autor para volver a preguntarle al motor qué
descripción tiene cada uno de esos artículos.

Idealmente deberías ser capaz de generar el resultado final en una sola
consulta SQL.

> Por otro lado, me pregunto si cuando uno crea una tabla para un objeto,
> debe considerar todos los campos posibles que pueda tener, aunque
> algunos sean vacíos. Por ejemplo, en la tabla artículos se almacena el
> título, resumen, la localización en el server del artículo en pdf, el
> tamaño del archivo, una dirección web y otras cosas más. ¿Es conveniente
> armar una tabla articulos que contenga solo los campos obligatorios
> (año, autores, título, páginas, etc) y otra, por ejemplo articulos_extra
> que contenga todo lo que es opcional (el pdf, la url, por ejemplo)? O es
> mejor contener todo eso dentro de una sola tabla?

Algunos opinan que hay que evitar los valores NULL a toda costa, otros
dicen que no importa tener NULL cuando son naturales al modelo. En tu
caso de arriba no creo se justifique tener articulos_extra (sobre todo
porque Postgres implementa eficientemente los NULL).

--
Alvaro Herrera http://planet.postgresql.org/
"I must say, I am absolutely impressed with what pgsql's implementation of
VALUES allows me to do. It's kind of ridiculous how much "work" goes away in
my code. Too bad I can't do this at work (Oracle 8/9)." (Tom Allison)
http://archives.postgresql.org/pgsql-general/2007-06/msg00016.php

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jorge Romeo 2009-07-06 15:53:58 A tortas con la replicación
Previous Message Alvaro Herrera 2009-07-06 14:42:31 Re: Problemas con los sequences