Expandamos el ejemplo de persona. Esta vez agregaremos una tabla que posea las direcciones para las personas. A esta tabla la relacionaremos por el campo idDireccion de la tabla Persona (Notar que este campo ya no es más un Texto) .
Esta relación indica que una persona posee una dirección y esta equivale a la que posea el mismo idDireccion en la tabla de direcciones.
Es bueno destacar, que al existir esta relación cualquier cambio en una de las tablas afectará el comportamiento de la otra.
Las sentencias SQL para generar ambas tablas son :
Tabla dirección
CREATE TABLE Direccion (
`idDireccion` INT NOT NULL AUTO_INCREMENT ,
`direccion` VARCHAR(100) NULL ,
`comuna` VARCHAR(45) NULL ,
`pais` VARCHAR(45) NULL ,
PRIMARY KEY (`idDireccion`) )
Tabla Persona
CREATE TABLE Persona(
`rut` INT NOT NULL ,
`Nombre` VARCHAR(45) NULL ,
`Apellido` VARCHAR(45) NULL ,
`Telefono` INT NULL ,
`idDireccion` INT NOT NULL ,
PRIMARY KEY (`rut`) ,
INDEX `fk_direccion` (`idDireccion` ASC) ,
CONSTRAINT `fk_direccion`
FOREIGN KEY (`idDireccion` )
REFERENCES `mydb`.`Direccion` (`idDireccion` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
Preguntas Propuestas
- Como generaríamos una clase Alumno y Profesor ? Asumamos que son parte de una Universidad.
- Si quisiéramos que los alumnos sean parte de un portal que entidades o tablas deberíamos agregar a las relaciones. ?