Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Necesito ayuda con mysql

Estas en el tema de Necesito ayuda con mysql en el foro de Mysql en Foros del Web. Verán, necesito crear 3 tabalas ( usuarios, usuarios_registros y registros ). Sería algo así: - Usuarios ( id_usuarios, nombre.....) - usuarios_registros (id_usuario, id_registro) - registros ...
  #1 (permalink)  
Antiguo 25/08/2008, 02:34
 
Fecha de Ingreso: agosto-2008
Mensajes: 4
Antigüedad: 15 años, 8 meses
Puntos: 0
Necesito ayuda con mysql

Verán, necesito crear 3 tabalas ( usuarios, usuarios_registros y registros ). Sería algo así:

- Usuarios ( id_usuarios, nombre.....)

- usuarios_registros (id_usuario, id_registro)

- registros (id_registro....)


en la tabla usuarios_registros tiene que a ver una clave foranea ( id_usuarios, evidentemente ) y la tabla registros tambien tiene que ir enlazada con usuarios_registros.

En la primera tabla pongo lo siguiente y me da error de systaxi, a ver si alguien me puede ayudar bien, corrigiendome el error o poniendome como crear bien las 3 tablas con sus claves foraneas y todo.

Esto es lo que pongo y me da error:


CREATE TABLE `usuarios` (
`id_usuario` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`nombre` VARCHAR( 20 ) NOT NULL ,
`apellido` VARCHAR( 20 ) NOT NULL ,
`pais` VARCHAR( 20 ) NOT NULL ,
`comunidad` VARCHAR( 20 ) NOT NULL ,
`profesion` VARCHAR( 20 ) NOT NULL ,
`estudios` VARCHAR( 20 ) NOT NULL ,
`nacimiento` VARCHAR( 20 ) NOT NULL ,
`usuario` VARCHAR( 20 ) NOT NULL ,
`password` VARCHAR( 10 ) NOT NULL ,
`descripcion` TEXT CHARACTER SET utf8 COLLATE utf8_spanish_ci,
`email` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_spanish_ci DEFAULT NULL ,
`fecha` DATE NOT NULL ,
PRIMARY KEY ( `id_usuario` ) ,
INDEX ( `id_usuario` ) REFERENCES `usuarios_registros`( `id_usuario` ),
) TYPE = INNODB;



Gracias por la ayuda
  #2 (permalink)  
Antiguo 25/08/2008, 06:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Necesito ayuda con mysql

1. La tabla USUARIO_REGISTROS es la que debe tener las dos FK. Es una regla del modelo: El ID pertenece a la entidad primaria, que en este caso son siempre las PK de USUARIO y REGISTROS (en tu ejemplo no queda claro para qué sirve REGISTROS), porque de lo contrario, si ID_REGISTRO también es parte de la PK de USUARIO_REGISTROS, estarías violando una regla de normalización (una PK compuesta debe estar completa en las tablas donde sea FK).

2. El tema es que no está claro el modelo de la relación:

- El usuario puede tener un sólo registro. La tabla USUARIO_REGISTROS no tiene utilidad. La PK de REGISTRO debería ser FK en USUARIO ya que no puede haber REGISTRO sin USUARIO. Usuario sería primaria (1:1).

- El usuario puede tener más de un registro, USUARIO_REGISTROS puede no ser necesaria si no tiene algún atributo adicional ya que la relación sería USUARIO <- REGISTROS (1:N) y en cada registro aparecerá la FK de USUARUI.

- Si USUARIO_REGISTROS tiene atributos propios, USUARIO_REGISTROS contiene las FK de ambos y la relación es USUARIO <-USUARIO_REGISTROS (1:N) y USUARIO_REGISTROS <-> REGISTRO (N:N).

3. No aclaras que versión de MySQL estás usando. En la 5.0 el tipo de tablas no se indica "TYPE=INNODB", sino "ENGINE=INNODB". Puede ser ese el problema.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:28.