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

vincular estructura de tablas FOREIGN KEY

Estas en el tema de vincular estructura de tablas FOREIGN KEY en el foro de Mysql en Foros del Web. Tengo la siguiente base de datos, y solo he logrado vincular 2 tablas. el resto no comprendo que ocurren que no se vinculan. Considerar que ...
  #1 (permalink)  
Antiguo 08/07/2014, 14:25
 
Fecha de Ingreso: abril-2005
Ubicación: Piura - Perú
Mensajes: 189
Antigüedad: 19 años, 7 meses
Puntos: 0
vincular estructura de tablas FOREIGN KEY

Tengo la siguiente base de datos, y solo he logrado vincular 2 tablas. el resto no comprendo que ocurren que no se vinculan.

Considerar que la estructura debe de cumplir la siguiente lógica:

TABLA VACUNOS ' TABLA PADRE

' TABLAS HIJAS

TABLA PRODUCCION
TABLA REPRODUCCION
TABLA SANIDAD

A SU VEZ, REPRODUCCION TIENE HIJOS
TABLA SERVICIO
TABLA DIAG
TABLA PARTO
TABLA ABORTO

A SU VEZ, LAS TABLAS HIJOS DE REPRODUCCION, ESTAN VINCULADAS CON LA TABLA VACUNOS POR SU CODIGO

A SU VEZ, SANIDAD TIENE HIJOS
SANIDAD_CONTROL

CODIGO SQL DE LA DB : https://drive.google.com/file/d/0B-2...it?usp=sharing
  #2 (permalink)  
Antiguo 09/07/2014, 02:01
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: vincular estructura de tablas FOREIGN KEY

Como estas creando las tablas?

Recuerda que solo las imnodb soportan las FK.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 09/07/2014, 12:48
 
Fecha de Ingreso: abril-2005
Ubicación: Piura - Perú
Mensajes: 189
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: vincular estructura de tablas FOREIGN KEY

si toda la DB esta en innoDB he subido otro link para ver la estructura en :http://pastebin.com/4LHVG4BS
  #4 (permalink)  
Antiguo 10/07/2014, 01:39
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: vincular estructura de tablas FOREIGN KEY

No es entiende que relaciones quieres crear, y tampoco nos dices que error te da.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 10/07/2014, 14:25
 
Fecha de Ingreso: abril-2005
Ubicación: Piura - Perú
Mensajes: 189
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: vincular estructura de tablas FOREIGN KEY

Buen punto, va asi

TABLA VACUNOS => TABLA PADRE
field de identificación "codigo"

' TABLAS HIJAS

TABLA PRODUCCION , se debe vincular por medio de vacunos.codigo a produccion.codigo
TABLA REPRODUCCION, se debe vincular por medio de vacunos.codigo a reproduccion.codigo
TABLA SANIDAD, se debe vincular por medio de vacunos.codigo a sanidad.vacunocod

A SU VEZ, REPRODUCCION TIENE HIJOS
TABLA SERVICIO , se debe vincular por medio de reproduccion.servicio a servicio.servicioid
TABLA DIAG , se debe vincular por medio de reproduccion.diagnostico a diag.diagnosticoid
TABLA PARTO, se debe vincular por medio de reproduccion.parto a parto.partoid
TABLA ABORTO, se debe vincular por medio de reproduccion.aborto a aborto.id
  #6 (permalink)  
Antiguo 11/07/2014, 00:47
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: vincular estructura de tablas FOREIGN KEY

Bien y esos campos estan en las tablas y son del mismo tipo?

Sin datos en las tablas?

Si la respuesta a las preguntas es SI / SI, como debe ser, no hay ninguna razon para que no se creen las FK.

Cita:
No es entiende que relaciones quieres crear, y tampoco nos dices que error te da.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #7 (permalink)  
Antiguo 11/07/2014, 06:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: vincular estructura de tablas FOREIGN KEY

Cita:
Iniciado por KenMasters Ver Mensaje
Buen punto, va asi

TABLA VACUNOS => TABLA PADRE
field de identificación "codigo"

' TABLAS HIJAS

TABLA PRODUCCION , se debe vincular por medio de vacunos.codigo a produccion.codigo
TABLA REPRODUCCION, se debe vincular por medio de vacunos.codigo a reproduccion.codigo
TABLA SANIDAD, se debe vincular por medio de vacunos.codigo a sanidad.vacunocod

A SU VEZ, REPRODUCCION TIENE HIJOS
TABLA SERVICIO , se debe vincular por medio de reproduccion.servicio a servicio.servicioid
TABLA DIAG , se debe vincular por medio de reproduccion.diagnostico a diag.diagnosticoid
TABLA PARTO, se debe vincular por medio de reproduccion.parto a parto.partoid
TABLA ABORTO, se debe vincular por medio de reproduccion.aborto a aborto.id
Bueno, @KenMasters, tu ya tienes definido cuál es el esquema de dependencias funcionales de las tablas... ¿Cuál es tu duda?

Repasemos que para que se pueda crear una FK debe cumplirse que:
1) Toda tabla tenga una PK. Y digo toda tabla, no puede faltar ninguna.
2) Toda FK apunta a la PK referida.
3) Las FK deben ser del mismo tipo de dato, mismo rango de representación, y si es una PK compuesta, todos sus campos y en el mismo orden.
4) Si la PK es de caracteres (VARCHAR, CHAR), las FK deben ser de misma collation y charset.
5) Toda FK de una relación mandatoria (obligatoria) debe ser declarada NOT NULL.

Adicionalmente, se puede decir:
- Si se intenta crear una FK en una tabla que ya contiene datos, debe verificarse que los datos existentes cumplan previamente la relación con la tabla referida, ya que si al menos uno de los registros no lo cumple, se generará un error de creación.
- Como extensión propia de MySQL, una FK puede apuntar a una clave UNIQUE. En este caso la clave UNIQUE en la tabla referida puede poseer valor NULL, pero sólo un registro en esas condiciones. En ese caso la FK podrá aceptar valores NULL en sus registros.

Nota Bene: Recordar que NULL no es lo mismo que un caracter vacío...
¿Se cumple en tu caso?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 11/07/2014, 19:43
 
Fecha de Ingreso: abril-2005
Ubicación: Piura - Perú
Mensajes: 189
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: vincular estructura de tablas FOREIGN KEY

El problema esta en si en la tabla "reproducción" cuando intento vincular las tablas Hijas aborto, partos, diagnostico y servicios. como se mencina :

A SU VEZ, REPRODUCCION TIENE HIJOS
TABLA SERVICIO , se debe vincular por medio de reproduccion.servicio a servicio.servicioid
TABLA DIAG , se debe vincular por medio de reproduccion.diagnostico a diag.diagnosticoid
TABLA PARTO, se debe vincular por medio de reproduccion.parto a parto.partoid
TABLA ABORTO, se debe vincular por medio de reproduccion.aborto a aborto.id

por ejemplo cuando quiero crear el FK de la tabla parto por su field "partoid" apuntada a el campo "parto" de la tabla reproduccion me sale error Can't create table '.\fazunp\#sql-874_24c.frm' (errno: 150)

siendo la consulta esta:
Código MySQL:
Ver original
  1. Alter table `fazunp`.`parto`  
  2.   add foreign key (`partoid`) references `fazunp`.`reproduccion`(`Parto`)

Considerar que la tabla reproduccion tiene esta forma :

Código MySQL:
Ver original
  1. CREATE TABLE `reproduccion` (
  2.   `codigo` int(10) unsigned NOT NULL,
  3.   `Servicio` int(10) unsigned NOT NULL,
  4.   `diagnostico` int(10) unsigned NOT NULL,
  5.   `Parto` int(10) unsigned NOT NULL,
  6.   `aborto` int(10) unsigned NOT NULL,
  7.   `numero` varchar(10) NOT NULL,
  8.   PRIMARY KEY  (`id`),
  9.   UNIQUE KEY `diagnostico` (`diagnostico`),
  10.   UNIQUE KEY `parto` (`Parto`),
  11.   UNIQUE KEY `aborto` (`aborto`),
  12.   UNIQUE KEY `servicio` (`Servicio`),
  13.   KEY `codigo` (`codigo`)

y la tabla parto la siguiente estructura :

Código MySQL:
Ver original
  1.  
  2. CREATE TABLE `parto` (
  3.   `partoid` int(10) NOT NULL auto_increment,
  4.   `vacunocod` tinyint(4) default NULL,
  5.   `fecha` date default NULL,
  6.   `sexo` varchar(10) default NULL,
  7.   `operador` varchar(100) default NULL,
  8.   `hijocod` varchar(10) default NULL,
  9.   `observacion` longtext,
  10.   PRIMARY KEY  (`partoid`)

Pero sale ese error, ahora bien el resto de tablas tambien deben de vincularse a la misma tabla "reproduccion" por medio de su PK, y no funciona

PD.: las tablas están vacias

Última edición por KenMasters; 11/07/2014 a las 19:48 Razón: Pd.

Etiquetas: estructura, key, sql, tabla, tablas, vincular
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 03:17.