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
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 |