Re: [pgsql-es-ayuda] relación a una tabla u a otra tabla

From: Jaime Casanova <jaime(at)2ndquadrant(dot)com>
To: Laura Martinelli <lmartinelli(at)unlu(dot)edu(dot)ar>
Cc: POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: [pgsql-es-ayuda] relación a una tabla u a otra tabla
Date: 2014-04-15 16:07:53
Message-ID: CAJKUy5j54-K-nNSzq=Y--0c=P5joDcqpMq9-+g0kw2iMPKJCJw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

2014-04-14 9:25 GMT-05:00 Laura Martinelli <lmartinelli(at)unlu(dot)edu(dot)ar>:
> Tengo la siguiente situacion que no sé resolver.
>
> Una tabla "inscripciones" se relaciona con la tabla "materias" donde una
> materia puede tener muchas inscripciones de estudiantes por lo que tengo una
> clave foránea en inscripciones de uno a muchos.
>
> Ahora me surgió la necesidad de reflejar que una inscripción pueda tener una
> relación en la tabla "materias" o en una nueva tabla "talleres", es decir
> que la relación pueda ser algo así como optativa, o bien es una inscripción
> a una materia o bien es una inscripción a un taller.
>
> Mi duda es como reflejo esta situación ya que cree la nueva tabla y cree una
> nueva clave foránea a esta tabla pero el problema es que cuando quiero hacer
> un insert falla debido a uno de los dos constraint. Por otro lado quisiera
> poder asegurarme que al hacer el insert hay una relación existente en alguna
> de las dos tablas.
>

Saludos,

Supongo que en la tabla "inscripciones" creaste un nuevo campo, es
decir que uno deberias usar el mismo campo que hace la relacion con
"materias" para "talleres".

Ambos campos deberian aceptar NULL, creas los dos FK y te aseguras de
que si registras una inscripcion a una materia el campo de talleres
vaya en NULL y si se inscriben a un taller el campo de materias vaya
en NULL.

Finalmente, para asegurarte que este el uno o el otro agregas un
constraint check de este modo:
CHECK ((codigo_materia IS NOT NULL AND codigo_taller IS NULL) OR
(codigo_materia IS NULL AND codigo_taller IS NOT NULL))

--
Jaime Casanova www.2ndQuadrant.com
Professional PostgreSQL: Soporte 24x7 y capacitación
Phone: +593 4 5107566 Cell: +593 987171157

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message FRANCISCO JOSE PALAO VILLANUEVA 2014-04-15 16:19:47 Re: [pgsql-es-ayuda] Numero de filas estimadas mayor al número de filas de la tabla.
Previous Message Laura Martinelli 2014-04-15 15:20:07 Re: relación a una tabla u a otra tabla