Re: Relacion de uno a uno o a ninguno

From: Marcos Matamala <marcos(at)betazeta(dot)com>
To: Jaime Casanova <jaime(at)2ndquadrant(dot)com>
Cc: Gaston Rider <gastonrider(at)hotmail(dot)com>, Postgres Lista <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Relacion de uno a uno o a ninguno
Date: 2011-04-06 17:31:39
Message-ID: BANLkTim283vBC833deELoeaStzPpRgU9WQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El día 6 de abril de 2011 13:58, Jaime Casanova
<jaime(at)2ndquadrant(dot)com> escribió:
> 2011/4/6 Marcos Matamala <marcos(at)betazeta(dot)com>:
>>
>> Yo usaría un esquema como el siguiente.
>>
>> CREATE TABLE person(id BIGSERIAL PRIMARY KEY, lastname varchar(68) NOT
>> NULL UNIQUE);
>> CREATE TABLE person_email(id BIGSERIAL PRIMARY KEY, email varchar(200)
>> NOT NULL, person_id BIGINT REFERENCES person(id), UNIQUE(email,
>> person_id));
>>
>>
>
> Es decir que mantendrias dos índices unicos (el del PK y el del
> UNIQUE) y como los dos campos del índice del UNIQUE son NOT NULL es
> por definición candidato a PK... porque no poner como PK (email,
> person_id) y mantener un solo índice?

el unique(email, person_id) es por el caso de que un email es usado
por mas de un usuario(que si existen casos) aun que de todas formas
siempre creo una columna id en todas tabla ya que uso ORM's como
Doctrine (en su versión 1.2) que siempre esperan que la tabla
contengan una columna id
si bien puede ser un error o una mejorar no tener esa columna(id
innecesaria) para mi trabajo el beneficio de usar un ORM es mayor al
error, se entiende ?

Saludos.-

CREATE TABLE person(name varchar(64) PRIMARY KEY);
CREATE TABLE person_email(email varchar(200) NOT NULL, person_name
varchar(64) REFERENCES person(name), UNIQUE(email, person_name));

--
Marcos Matamala Fernández
Desarrollador Web

Betazeta Networks
Av. Providencia 929, Piso 4, Santiago, Chile
Fono: +56 (2) 6552215
www.betazeta.com

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Guillermo Villanueva 2011-04-06 17:43:47 Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Actualización de servidor
Previous Message Jaime Casanova 2011-04-06 16:58:07 Re: Relacion de uno a uno o a ninguno