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

Tablas relacionadas

Estas en el tema de Tablas relacionadas en el foro de Bases de Datos General en Foros del Web. Quiero crear dos tablas, una que se llame Persona y otra que se llame Nacionalidad. Nacionalidad solamente tendrá dos campos un id, y descripción. Y ...
  #1 (permalink)  
Antiguo 16/09/2011, 18:31
Avatar de bandolera  
Fecha de Ingreso: abril-2009
Mensajes: 613
Antigüedad: 15 años, 6 meses
Puntos: 7
Pregunta Tablas relacionadas

Quiero crear dos tablas, una que se llame Persona y otra que se llame Nacionalidad.
Nacionalidad solamente tendrá dos campos un id, y descripción.
Y en Persona habrá un campo que se llame "nacionalidad" donde se guardará el id de la nacionalidad que figura en su tabla.
Así cada registro en Persona tendrá un código de nacionalidad.
Quiero saber si este código está bien para este caso.

Código PHP:
CREATE  TABLE `Nacionalidad` (
  `
idVARCHAR(2NOT NULL ,
  `
descripcionVARCHAR(45NULL ,
  
PRIMARY KEY (`id`) )

CREATE  TABLE `Socios` (
 `
codigo_sociosVARCHAR(6NOT NULL ,
  `
ap_paternoVARCHAR(45NULL ,
  `
ap_maternoVARCHAR(45NULL ,
  `
nombresVARCHAR(45NULL ,
  `
nacionalidadVARCHAR(2NULL ,
  `
Nacionalidad_idVARCHAR(2NOT NULL ,
  
PRIMARY KEY (`codigo_socios`, `Nacionalidad_id`) ,
  
INDEX `fk_Socios_Nacionalidad` (`Nacionalidad_idASC) ,
  
CONSTRAINT `fk_Socios_Nacionalidad`
    
FOREIGN KEY (`Nacionalidad_id` ) 
Gracias.
__________________
Todos somos iguales. NO! a la violencia de género.
  #2 (permalink)  
Antiguo 17/09/2011, 00:50
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 21 años, 3 meses
Puntos: 105
Respuesta: Tablas relacionadas

Holas,

Creo podrias mejorarlo asi:

Código MySQL:
Ver original
  1. CREATE  TABLE `Nacionalidad` (
  2.   `id_nacionalidad` VARCHAR(2) NOT NULL ,
  3.   `nacionalidad` VARCHAR(45) NULL ,
  4.   PRIMARY KEY (`id`) )
  5.  
  6. CREATE  TABLE `Socios` (
  7.  `codigo_socios` VARCHAR(6) NOT NULL ,
  8.   `ap_paterno` VARCHAR(45) NULL ,
  9.   `ap_materno` VARCHAR(45) NULL ,
  10.   `nombres` VARCHAR(45) NULL ,
  11.   `id_nacionalidad` VARCHAR(2) NOT NULL ,
  12.   PRIMARY KEY (`codigo_socios`) ,
  13.   INDEX `fk_Socios_Nacionalidad` (`id_nacionalidad` ASC) ,
  14.   CONSTRAINT `fk_Socios_Nacionalidad`
  15.     FOREIGN KEY (`id_nacionalidad` )

El campo `nacionalidad` VARCHAR(2) NULL , quite de la tabla Socios, ya que en la tabla Nacionalidad ya lo tienes con el campo nacionalidad (antes descripcion). Y el PRIMARY KEY de tu tabla Socios, no era necesario que tengas a id_nacionalidad, el PRIMARY KEY es para tu tabla Socios por lo que codigo_socios es el unico UNIQUE de tu tabla.

Trata de no usar VARCHAR para tu campos id, ponles algo mas fijo como INT o CHAR.

Saludos
__________________
.: Gildus :.

Etiquetas: relacionadas, tabla, tablas, campos, bases-de-datos
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 20:35.