You are on page 1of 3

Relaciones Uno a Uno

Se quiere modelar que cada producto tiene uno y solo un detalle


A la tabla Producto se le conoce como tabla base
A la tabla Producto_ Detalles se le conoce como tabla asociada

(Tabla Base) (Tabla Asociada)

Una relacin One-to-One ocurre cuando a cada registro de la tabla base tiene asociado a
lo ms un registro de la tabla asociada.

Procedimiento:

1. Actualizamos el prompt de MySQL


mysql> prompt \u@\h (\d) mysql>

2. Generamos log de comandos


mysql> tee ejemploUnoAMuchos.txt

3. Creamos la base de datos con la que vamos a trabajar:


mysql>CREATE DATABASE onetoone;
mysql>USE onetoone;

4. Creamos la tabla base:


mysql>CREATE TABLE producto (
producto_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
producto_CODE VARCHAR(10) NOT NULL,
producto_NAME VARCHAR(20) NOT NULL,
PRIMARY KEY (`producto_ID`)
) ENGINE=InnoDB;

Bases de Datos 2016-1 1 Ruiz Salinas Oscar


5. Creamos la tabla asociada:
mysql>CREATE TABLE producto_detalles (
detalle_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
empresa_NAME VARCHAR(100) NOT NULL,
empresa_DESC VARCHAR(255) NOT NULL,
producto_DESC VARCHAR(255) NOT NULL,
fecha_registro DATE NOT NULL,
PRIMARY KEY (`detalle_ID`),
FOREIGN KEY (`detalle_ID`) REFERENCES `producto` (`producto_ID`)
) ENGINE=InnoDB ;

6. Registramos un producto
mysql> insert into producto values (1, 'PEPSI01','Pepsi');
Query OK, 1 row affected (0.02 sec)

7. Registramos un detalle al producto


mysql> insert into producto_detalles values (1,'Pepsi Co','Bebida','600ml',now());
Query OK, 1 row affected, 1 warning (0.02 sec)

8. Al tratar de registrar un segundo detalle marca error


mysql> insert into producto_detalles values (1,'Pepsi Co','Bebida','1L',now());
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

9. Al registrar un detalle a un producto que no existe marca error


mysql> insert into producto_detalles values (1000,'Pepsi Co','Bebida','600ml',now());
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails
(`onetoone`.`producto_detalles`, CONSTRAINT `producto_detalles_ibfk_1` FOREIGN KEY
(`detalle_ID`) REFERENCES `producto` (`producto_ID`))

Preguntas:
Quin es el primary key en la tabla base?
Quin es el primay key y el foreing key en la tabla asociada?

Bases de Datos 2016-1 2 Ruiz Salinas Oscar


En una relacin uno a uno:

Se declara el PK y FK en la misma columna de la tabla asociada para que garantizar que es nico y
que depender de la tabla producto.

Producto producto_detalles
(PK) producto_ID (PK + FK ) detalle_ID
producto_CODE empresa_NAME
producto_NAME empresa_DESC
producto_DESC
fecha_registro

Tarea:

1. Se desea modelar que cada cliente tiene asociada una direccin.


Quin es la tabla base?
Quin es la tabla asociada?
En donde se definirn las llaves primarias
En donde se definir llave fornea?

2. Presenta las instrucciones SQL necesarias para:


- Crear una base de datos llamada ejemploOneToOne
- Crear las tablas cliente y direccin
- Definir una relacin uno a uno entre la tabla cliente y direccin
- Presentar el ejemplo de insertar datos para validar que para cada cliente solo
acepta una direccin.

Bases de Datos 2016-1 3 Ruiz Salinas Oscar

You might also like