Sentencias SQL Creacion Tablas y Claves Primarias y Foraneas
Transcript of Sentencias SQL Creacion Tablas y Claves Primarias y Foraneas
7/21/2019 Sentencias SQL Creacion Tablas y Claves Primarias y Foraneas
http://slidepdf.com/reader/full/sentencias-sql-creacion-tablas-y-claves-primarias-y-foraneas 1/14
Empresa
TELECOMUNICACIONES
CALLTEL
Tiene
SedesDispositivo
VendedorClientes
codigocliente
DocumentoCliente Nombre
Direccion
Telefono
Coordina
CodigosedeCodigo
Dispositivo
Supervisor
Empleados
Compra
Alquila
Puntos de VentaTraslados
Pais
Ciudad
Codigo
sede
Sistema
Gestor de BD
MYSQL
Modelo
Conceptual
Modelo
Relacional
Normalizado
PLANTEAMIENTO DE
LA EMPRESA CALLTEL
PARA ORGANIZAR SU
INFORMACION
BASE DE DATOS
CALLTEL
7/21/2019 Sentencias SQL Creacion Tablas y Claves Primarias y Foraneas
http://slidepdf.com/reader/full/sentencias-sql-creacion-tablas-y-claves-primarias-y-foraneas 2/14
Sede
1
Repara
FechaAlquiler
FechaDevolución
Vende Alquila
Dispositivo
Vendedor
Cliente
Idcliente
NIT
CC
pasaporte
Nombre
Direccion
Telefono
Coordina IdCargo
Idsede
N
IdDispositivo
Supervisor
IdCargo
Empleado
Por cargo
Compra
Alquila
FechaAlquiler
FechaDevolución
Empresa
Por
vinculo
Por
Ubicacion
Punto de Venta
Idsede
1 1
1N Traslada
FechaTraslado
Pais
Ciudad
FechaCompra
1
N
FechaVenta FechaReparacion
PerteneceN1
Modelo
Conceptual
7/21/2019 Sentencias SQL Creacion Tablas y Claves Primarias y Foraneas
http://slidepdf.com/reader/full/sentencias-sql-creacion-tablas-y-claves-primarias-y-foraneas 3/14
Modelo Relacional
Normalizado hasta 3FN
CLIENTES
IdCLIENTE
DNICLIENTENOMBRES
APELLIDOS
TELEFONO
DIRECCION
DISPOSITIVOS
IdDISPOSITIVONUMREFDISPOSITIVO
IdESTADO
NOMBRE
PRECIODISPFECHAINICIOENSEDE
FECHAFINALENSEDE
TRANSACCIONES
IdTRANSAC
IdCLIENTE
IdDISPOSITIVO
IdSERVICIO
IdTRABAJADOR
IdSEDE
IdDOCUMENTO
IdTIPOTRANSAC
TOTALTRANSACFECHAINICIO
FECHAFIN
SEDE
IdSEDEIdDISPOSITIVO
PAIS
CIUDAD
PUNTODEVENTA
IdPUNTOVENTA
IdSEDE
DOCUMENTO
IdDOCUMENTO
IdTRANSAC
NOMBREDOC
FECHADOC
TRABAJADORES
IdTRABAJADOR
IdCARGONOMBRESTRABAJADOR
APELLIDOSTRAB
GENERO
FECHAINGRESOFECHARETIRO
REFDISPOSITIVO
NUMREFDISPOSITIVO
NOMBREREFERENCIA
IdCARGO
NOMBRECARGO
CARGOS
TIPOTRANSACCION
IdTIPOTRANSACIMPUESTO
SERVICIO
IdSERVICIONOMBRESERVICIO
PRECIO
ODISPOSITIVO
IdESTADO
ESTADO
7/21/2019 Sentencias SQL Creacion Tablas y Claves Primarias y Foraneas
http://slidepdf.com/reader/full/sentencias-sql-creacion-tablas-y-claves-primarias-y-foraneas 4/14
Diccionario de datos
E li ió d l li ió
7/21/2019 Sentencias SQL Creacion Tablas y Claves Primarias y Foraneas
http://slidepdf.com/reader/full/sentencias-sql-creacion-tablas-y-claves-primarias-y-foraneas 5/14
Explicación de la normalización
N li ió 1N P i F N l
7/21/2019 Sentencias SQL Creacion Tablas y Claves Primarias y Foraneas
http://slidepdf.com/reader/full/sentencias-sql-creacion-tablas-y-claves-primarias-y-foraneas 6/14
Normalización: 1N Primera Forma Normal
MIS ATRIBUTOS YA TIENEN VALORES ATOMICOS Y CADA TABLA TIENE POR
LO MENOS UNA LLAVE PRIMARIA POR LO TANTO ESTAN EN 1FN
NO DEBE EXISTIR DEPENDENCIAS PARCIALES. TODOS LOS ATRIBUTOS NO
CLAVE DEBEN DEPENDER POR COMPLETO DE LA CLAVE PRIMARIA.
NINGUN VALOR PUEDE DEPENDER DE OTRO
7/21/2019 Sentencias SQL Creacion Tablas y Claves Primarias y Foraneas
http://slidepdf.com/reader/full/sentencias-sql-creacion-tablas-y-claves-primarias-y-foraneas 7/14
PRIMERA FORMAL NORMAL (1FN)
Al examinar estos registros, podemos darnos cuenta que contienen un grupo repetido para
NUMREFDISPOSITIVO, NOMBREDISP, CANT y PRECIODISP.La 1FN prohíbe los grupos repetidos, por lo tanto tenemos que convertir a la primera forma
normal. Los pasos a seguir son:
Tenemos que eliminar los grupos repetidos.
Tenemos que crear una nueva tabla con la PK de la tabla base y el grupo repetido.
Los registros quedan ahora conformados en dos tablas que llamaremos
TRANSACCIONES y DISPOSITIVOS
IdTRANS
ACCION
FECHA IdCLIEN
TE
NOMBRESCLI
ENTE
ESTADODISP NUMREFDI
SPOSITIVO
NOMBREDISPOS
ITIVO
CANT PRECIODISP TOTALTRA
NSACCION
1 20/01/13 1 SANDRA ALQUILADO 3110 DECO DVR HD 1 100000 100000
2 10/02/13 2 CARLOS
ALBERTO
EN
MANTENIMIENTO
3120 DECO DVR MINI 2 50000 100000
3 15/03/13 3 DIANA
MARCELA
DISPONIBLE
PARA VENTA
3130 DECO DVR
FULLHD
5 150000 750000
IdTRA
NSAC
FECHA IdCLIENTE NOMBRESCLI
ENTE
1 20/01/13 1 SANDRA
2 10/02/13 2 CARLOS
ALBERTO
3 15/03/13 3 DIANA
MARCELA
IdTRANS
ACCION
ESTADOD
ISP
NUMREF
DISPOSIT
IVO
NOMBRE
DISPOSIT
IVO
CAN
T
PRECIODISP TOTALTRA
NSACCION
1 ALQUILA
DO
3110 DECO
DVR HD
1 100000 100000
2 EN
MANTENI
MIENTO
3120 DECO
DVR MINI
2 50000 100000
3 DISPONIB
LE PARA
VENTA
3130 DECO
DVR
FULLHD
5 150000 750000
TRANSACCIONES DISPOSITIVOSTRANSACCIONES
7/21/2019 Sentencias SQL Creacion Tablas y Claves Primarias y Foraneas
http://slidepdf.com/reader/full/sentencias-sql-creacion-tablas-y-claves-primarias-y-foraneas 8/14
SEGUNDA FORMAL NORMAL (2FN)
Ahora procederemos a aplicar la segunda formal normal, es decir, tenemos que eliminar
cualquier columna no llave que no dependa de la llave primaria de la tabla. Los pasos a seguir
son:
Determinar cuáles columnas que no son llave no dependen de la llave primaria de la tabla.
Eliminar esas columnas de la tabla base.
Crear una segunda tabla con esas columnas y la(s) columna(s) de la PK de la cual dependen.
La tabla TRANSACCIONES está en 2FN. Cualquier valor único de ID_TRANSACCION determina un
sólo valor para cada columna. Por lo tanto, todas las columnas son dependientes de la llave
primaria ID_TRANSACCION.
Por su parte, la tabla TRANSACCIONES DISPOSTIVOS no se encuentra en 2FN ya que las
columnas PRECIODISP y NOMBREDISP son dependientes de NUMREFDISPOSITIVO, pero no son
dependientes de ID_TRANSACCION. Lo que haremos a continuación es eliminar estas columnasde la tabla TRANSACCIONES DISPOSTIVOS y crear dos tablas con dichas columnas y las llaves
primarias de la que dependen.
Las tablas quedan ahora de la siguiente manera.
IdTRANS
ACCION
IdESTAD
ODISPOSI
TIVO
NUMREF
DISPOSIT
IVO
NOMBRE
DISPOSIT
IVO
CAN
T
TOTALTRA
NSACCION
1 1 3110 DECO
DVR HD
1 100000
2 2 3120 DECO
DVR MINI
2 100000
3 3 3130 DECO
DVR
FULLHD
5 750000
TRANSACCIONES DISPOSITIVOS
NUMREF
DISPOSIT
IVO
NOMBRE
DISPOSIT
IVO
CAN
T
PRECIODISP
3110 DECO
DVR HD
1 100000
3120 DECO
DVR MINI
2 50000
3130 DECODVR
FULLHD
5 150000
DISPOSITIVOS
IdESTADODISP
OSITIVO
ESTADODISPOS
ITIVO
1 ALQUILADO
2 ENMANTENIMIEN
TO
3 DISPONIBLE
PARA VENTA
ESTADO
DISPOSITIVO
IdREFDISPOSITI
VO
NUMREFDISPO
SITIVO
1 ALQUILADO
2 ENMANTENIMIEN
TO
3 DISPONIBLE
PARA VENTA
NUMREFDISPOSITIVO
TERCERA FORMAL NORMAL (3FN)
7/21/2019 Sentencias SQL Creacion Tablas y Claves Primarias y Foraneas
http://slidepdf.com/reader/full/sentencias-sql-creacion-tablas-y-claves-primarias-y-foraneas 9/14
TERCERA FORMAL NORMAL (3FN)
La tercera forma normal nos dice que tenemos que eliminar cualquier columna no llave que sea
dependiente de otra columna no llave. Los pasos a seguir son:
Determinar las columnas que son dependientes de otra columna no llave.
Eliminar esas columnas de la tabla base.
Crear una segunda tabla con esas columnas y con la columna no llave de la cual son
dependientes.
Al observar las tablas que hemos creado, nos damos cuenta que tanto la tabla DISPOSITIVOS,
como la tabla TRANSACCIONES se encuentran en 3FN. Sin embargo la tabla TRANSACCIONES no
lo está, ya que NOMBRESLIENTE y ESTADO son dependientes de ID_CLIENTE, y esta columna no
es la llave primaria.
Para normalizar esta tabla, moveremos las columnas no llave y la columna llave de la cual
dependen dentro de una nueva tabla CLIENTES. Las nuevas tablas CLIENTES y TRANSACCIONESse muestran a continuación.
IdTRA
NSAC
FECHA IdCLIENTE
1 20/01/13 1
2 10/02/13 2
3 15/03/13 3
TRANSACCIONES
IdCLIENTE NOMBRESCLI
ENTE
1 SANDRA
2 CARLOS
ALBERTO
3 DIANA
MARCELA
CLIENTES
7/21/2019 Sentencias SQL Creacion Tablas y Claves Primarias y Foraneas
http://slidepdf.com/reader/full/sentencias-sql-creacion-tablas-y-claves-primarias-y-foraneas 10/14
SENTENCIAS SQL CREACION DE LAS TABLAS
CREACION TABLA CLIENTES
create table clientes (
idCLIENTE INT(10) NOT NULL PRIMARY KEY
dniCLIENTE INT(15) NOT NULL,
NOMBRESCLIENTE VARCHAR(30) NOT NULL,
APELLIDOSCLIENTE VARCHAR(30) NOT NULL,
TELEFONO VARCHAR(15),EMAIL VARCHAR(30),
DIRECCION VARCHAR(30));
CREACION TABLA DISPOSITIVOS
create table dispositivos (
idREFDISPOSITIVO INT(10) NOT NULL PRIMARY KEY,
NOMBREDISPOSITIVO VARCHAR(30) NOT NULL,
PRECIOCOMPRADISP INT(10) NOT NULL,
FECHAINICIOSEDE DATE NOT NULL,
FECHAFINSEDE DATE NOT NULL);
7/21/2019 Sentencias SQL Creacion Tablas y Claves Primarias y Foraneas
http://slidepdf.com/reader/full/sentencias-sql-creacion-tablas-y-claves-primarias-y-foraneas 11/14
CREACION TABLA ESTADO DISPOSITIVO
create table estadodispositivo (
idESTADODISPOSITIVO INT(10) NOT NULL PRIMARY KEY
ESTADO VARCHAR(15) NOT NULL);
CREACION TABLA REFDISPOSITIVO
create table refdispositivo (
idREFDISPOSITIVO INT(10) NOT NULL PRIMARY KEY,
NUMREFDISPOSITIVO VARCHAR(10) NOT NULL);
CREACION TABLA DOCUMENTO CONTABLE
create table doccontable (
idDOCCONTABLE INT(10) NOT NULL PRIMARY KEY,NOMBREDOC VARCHAR(30) NOT NULL,
FECHADOC DATE NOT NULL);
CREACION TABLA SERVICIO
create table servicio (idSERVICIO INT(10) NOT NULL PRIMARY KEY,
NOMBRESERVICIO VARCHAR(15) NOT NULL,
PRECIO SERVICIO INT(10) NOT NULL);
CREACION TABLA TRABAJADORES
7/21/2019 Sentencias SQL Creacion Tablas y Claves Primarias y Foraneas
http://slidepdf.com/reader/full/sentencias-sql-creacion-tablas-y-claves-primarias-y-foraneas 12/14
CREACION TABLA TRABAJADORES
create table trabajadores (
idTRABAJADOR INT(10) NOT NULL PRIMARY KEY,
NOMBRETRAB VARCHAR(30) NOT NULL,
APELLIDOSTRAB VARCHAR(30) NOT NULL,GENERO VARCHAR(15) NOT NULL,
FECHAINGRESO DATE NOT NULL,
FECHARETIRO DATE NOT NULL);
CREACION TABLA CARGO
create table cargo (
idCARGO INT(10) NOT NULL PRIMARY KEY,
NOMBRECARGO VARCHAR(15) NOT NULL);
CREACION TABLA SEDE
create table sede (
idSEDE INT(10) NOT NULL PRIMARY KEY,
PAIS VARCHAR(15) NOT NULL,
CIUDAD VARCHAR(15) NOT NULL);
CREACION TABLA PUNTODEVENTA
create table puntodeventa (
idPUNTOVENTA INT(10) NOT NULL PRIMARY KEY,
NOMBREPUNTOVENTA VARCHAR(15) NOT NULL);
7/21/2019 Sentencias SQL Creacion Tablas y Claves Primarias y Foraneas
http://slidepdf.com/reader/full/sentencias-sql-creacion-tablas-y-claves-primarias-y-foraneas 13/14
CREACION TABLA TIPOTRANSACCION
create table tipotransaccion (
idTIPOTRANSACCION INT(10) NOT NULL PRIMARY KEY,
IMPUESTO INT(15) NOT NULL);
CREACION TABLA TRANSACCIONES
create table transacciones (
idTRANSACCION INT(10) NOT NULL PRIMARY KEY,
TOTALTRANSAC INT(15) NOT NULL,
CANTDISPOSITIVO INT(10) NOT NULL,
FECHAINICIO DATE NOT NULL,
FECHAFIN DATE NOT NULL);
7/21/2019 Sentencias SQL Creacion Tablas y Claves Primarias y Foraneas
http://slidepdf.com/reader/full/sentencias-sql-creacion-tablas-y-claves-primarias-y-foraneas 14/14
Alter table transacciones add foreign key (idSERVICIO) references servicio(idSERVICIO);
Alter table transacciones add foreign key (idTRABAJADOR) references
trabajadores(idTRABAJADOR);Alter table transacciones add foreign key (idSEDE) references sede(idSEDE);
Alter table transacciones add foreign key (idDOCCONTABLE) references
doccontable(idDOCCONTABLE);
Alter table transacciones add foreign key (idTIPOTRANSACCION) references
tipotransaccion(idTIPOTRANSACCION);
CREACION CLAVES FORANEAS
Alter table dispositivos add foreign key (idREFDISPOSITIVO) references
refdispositivo(idREFDISPOSITIVO);
Alter table dispositivos add foreign key (idESTADODISPOSITIVO) references
estadodispositivo(idESTADODISP);
Alter table doccontable add foreign key (idTRANSACCION) references
doccontable(idTRANSACCION);
Alter table trabajadores add foreign key (idCARGO) references cargo(idCARGO);
Alter table sede add foreign key (idDISPOSITIVO) references dispositivo(idDISPOSITIVO);Alter table puntodeventa add foreign key (idSEDE) references sede(idSEDE);
Alter table transacciones add foreign key (idCLIENTE) references clientes(idCLIENTE);
Alter table transacciones add foreign key (idDISPOSITIVO) references
dispositivos(idDISPOSITIVO);
Alter table transacciones add foreign key (idDISPOSITIVO) references
dispositivos(idDISPOSITIVO);