¿Sabéis si hay algún problema con tener más de una clave primaria en
una tabla a la hora de hacer un “Save” en la base de datos?
El caso es que no me permite hacer Save teniendo dos claves primarias
y si pongo una sola clave Id auto-incremental sí me lo permite.
Mi caso es el siguiente:
Tengo 3 tablas :
Encuestas
Cod_encuesta: clave primaria
Preguntas
Cod_encuesta: clave foránea
Cod_pregunta
(estas dos deben ser primarias)
Respuestas
Cod_encuesta: clave foránea
Cod_pregunta: clave foránea
Cod_respuesta
(las tres deben ser claves primarias)
El problema es que si añado claves “id” como única clave primaria para
que no me de problemas al guardar rompo la Integridad Referencial al
no poder poner como foráneas el resto de claves.
¿A alguien le ha pasado algo similar?
Muchas gracias
--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a symfo...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a symfony-es+...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/symfony-es?hl=es.
> > Muchas gracias- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -
--
On 26 feb, 14:39, Jose Antonio Pio Gil <joseto...@latizana.com> wrote:
> Estas usando Doctrine y MySQL?
>
> > symfony-es+...@googlegroups.com<symfony-es%2Bunsubscribe@googlegroups.com>
> > Para tener acceso a más opciones, visita el grupo en
> >http://groups.google.com/group/symfony-es?hl=es.- Ocultar texto de la cita -
Encuestas
Cod_encuesta: clave primaria
Preguntas
Cod_encuesta: clave foránea Cod_encuesta
Cod_pregunta: clave primaria
Respuestas
Cod_encuesta: clave foránea Cod_encuesta (prodría sobrar ya
que con el Cod_pregunta obtendira el Cod_encuesta)
Cod_pregunta: clave foránea Cod_pregunta
Cod_respuesta: clave primaria
Puede ser una solución
> > > - Mostrar texto de la cita -- Ocultar texto de la cita -
Encuestas
Cod_encuesta: clave primaria
Preguntas
Cod_pregunta: clave primaria
PreguntasPorEncuestra
Cod_encuesta: clave foránea Cod_encuesta
Cod_pregunta: clave foránea Cod_pregunta
Respuestas
Cod_pregunta: clave foránea Cod_pregunta
Cod_respuesta: clave primaria
Creo que así puedes repetir las preguntas en diferentes encuestas
Cooperativa
id_cooperativa: clave primaria
Vivienda:
numero: clave primaria
id_cooperativa: clave primaria
id_socio: clave foránea
Socio:
dni: clave primaria
id_cooperativa: clave foranea
Así, no puede haber dos viviendas con el mismo número y mísmo
id_cooperativa.
¿Has encontrado la solución?
Yo de momento aún estoy peleándome con los formularios para añadir una
nueva Vivienda, por ejemplo.
No, se puede ni se debe tener más de un clave primaria en un tabla, lo
que puedes tener es un clave primaria compuesta, y para tener un clave
foránea solo necesitas que en la tabla foránea esta sea primaria(osea
unica) y exista.
Un modelo adecuado seria algo como esto:
create table encuesta(id int primary key);
create table pregunta(id int primary key, encuesta_id int references
encuesta(id), unique(id, encuesta_id));
create table respuesta(id int primary key, pregunta_id int references
pregunta(id), unique(id, pregunta_id));
select * from encuesta e, pregunta p, respuesta r where p.encuesta_id
= e.id and r.pregunta_id = p.id;
--
Marcos Matamala Fernández:
Analista Programador
Teléfono: 95962482
On 26 feb, 16:14, Marcos Matamala
<marcos.analista.programa...@gmail.com> wrote:
Yo he estado experimentando el mismo problema con llaves primarias
compuestas y no he encontrado soluci�n. Si mal no recuerdo le� en la
lista de Doctrine que esto en este momento no estaba soportado por el
ORM. Si me equivoco que alguien me corrija
--
Saludos
ReynierPM
Insisto una tabla no puede tener dos clave primarias
tabla(id_uno primary key, id_dos primary key)
sino que debe ser tabla(id_uno, id_dos, primary key(id_uno, id_dos))
Yo siempre uso un campo id primary key y uso unique, el uso de una
columna id como primary key es para ayudar al ORM...
saludos.-
Puedes darme los datos(modelo) para hacer pruebas, no entiendo el problema.
On 26 feb, 18:51, Marcos Matamala
<marcos.analista.programa...@gmail.com> wrote:
Tabla:
indexes:
encuesta_pregunta:
fields: [pregunta_id, encuesta_id]
type: unique
--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a symfo...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a symfony-es+...@googlegroups.com