Está en la página 1de 35

Facultad de Ingeniería y Arquitectura

Escuela Profesional de Ingeniería de Sistemas

SESIÓN
DISEÑO FÍSICO DE UNA BD
LENGUAJE SQL
RESULTADO DE
APRENDIZAJE
Al finalizar la sesión el estudiante
crea una base de datos usando
sentencias SQL, demostrando
autonomía y responsabilidad.

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


Agenda
Diseño Físico de la Base de Datos:
❑ Revisión del Proceso de Diseño
❑ Editor SQL:
- SQL Server Management Studio
- Oracle Developer
❑ Laboratorio

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


https://www.youtube.com/watch?v=PXuMYHvvFrA
¿Qué es SQL y cuál es el uso?
¿Se utilizan en un Script?
Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas
EL LENGUAJE DE LAS BASES
DE DATOS RELACIONALES

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


Originalmente , SQL se llamaba SEQUEL , por Structured English
QUEry Language o Lenguaje estructurado de consultas en Inglés.
Fue diseñado e implementado en el laboratorio de investigación
de San José de IBM a mediados de los 70 y se basa en el álgebra
relacional. En 1980 el producto se rebautizó como SQL.

En 1986, ANSI e ISO publicaron una norma SQL llamada SQL-86.


La versión actual de la norma SQL ANSI/ISO es la norma SQL- 92.

Es el lenguaje de acceso a los datos que se aplica en muchos


SGBD comerciales como ORACLE, DB2, SYBASE, SQL Server,
INFORMIX, SQLBase, Ingres, etc

Los comandos SQL pueden ser usados en forma interactiva, como


un lenguaje de consulta, o pueden insertarse en programas de
aplicación. En este último caso son procesados por un
precompilador.
Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas
¿ Qué es el SQL ?
SQL: Structured Query Language
Es un Lenguaje de alto nivel con el cual los DBMS
relacionales interactúan con las aplicaciones del usuario.
Características:
❖ Es un lenguaje estandarizado (ANSI/ISO)
❖ Maneja instrucciones declarativas
❖ Estructuras de datos simples
❖ Utiliza Operadores potentes
❖ Es parecido al lenguaje natural - Inglés
❖ Mejora la independencia de datos
❖ Permite la optimización

ANSI - American National Estándar Institute (1982 - 1986)


ISO – International Standards Organizations (1987)
Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas
7
Estructura de Almacenamiento
del Modelo Relacional

❑ Relaciones y Entidades 🡪 TABLAS


❑ Atributos 🡪 COLUMNAS
❑ Tuplas 🡪 FILAS
Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas
8
Tipos de Sentencias
ó Instrucciones
Las sentencias SQL pueden dividirse en cuatro tipos
según la acción que realicen sobre los objetos de la
BD :
Definición de datos (DDL)
Control de datos (DCL)
Manipulación de datos (DML)
** Programacion con SQL (PL)

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


9
DDL Proporciona órdenes para definir tablas, eliminar
relaciones, crear índices y modificar esquemas de
relación.

Sentencia DDL Objetivo

Alter procedure Recompilar un procedimiento almacenado

Alter table Añadir o redifinir una columna, modificar la


asignación de almacenamiento
Create table (index, Crear una tabla
vista, procedure, …)
Drop table (ó index) Eliminar una tabla (ó indice)

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


10
DML ❖ Interactivo: lenguaje de consulta basado en el
álgebra relacional y el cálculo relacional de tuplas.
También incluye órdenes para insertar, suprimir y
modificar tuplas de la base de datos
❖ Inmerso: lenguaje diseñado para utilizar dentro de
otros lenguajes.

Sentencia DML Objetivo

Insert Añadir filas de datos a una tabla

Delete Eliminar filas de datos de una tabla

Update Modificar los datos de una tabla

Select Recuperar los datos de una tabla

Truncate Eliminar todas las filas de una tabla

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


11
DML Incluye órdenes que permiten especificar controles
de seguridad a los datos almacenados como
definición de vistas, especificación de privilegios de
acceso, comprobación de condiciones de
integridad y control de concurrencia

Sentencia DCL Objetivo

Commit Confirmar como permanentes las


modificaciones realizadas
Rollback Deshacer todas las modificaciones
realizadas desde la última confirmación
(último commit)
Exec Ejecuta un procedimiento almacenado
Grant Conceder privilegios a un usuario

Revoke Retirar los permisos de un usuario

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


12
PL Lenguaje para la creación de procedimientos
almacenados

✔ Sintaxis:
Create Procedure <nombre_procedimiento>
( @param1 <tipo de dato> <nulidad>
, @param2 <tipo de dato> <nulidad>, ...)
AS
<Código SQL>
End
✔ Ejecución:
EXEC <nombre_procedimiento> param1, param2, ...

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


13
SENTENCIAS
TIPO DDL

Definiendo
Estructuras

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


Tipos de Datos
Se definen en la fase de Diseño Físico y de acuerdo al SGBD que se utilizará:

char(n). Cadena de longitud fija. La longitud es n caracteres.


varchar(n). Cadena de longitud variable. La longitud máxima es n caracteres. (text)
int/integer. Entero.
smallint. Entero corto.
numeric(p,d). Numero en formato de coma fija, con precisión de p dígitos, con d dígitos
a la derecha de la coma decimal. (1-> 0.9999)
real, double precision. numero en coma flotante y número en coma flotante con doble
precisión.
float(n). Número en coma flotante con una precisión no menor de n dígitos.

El valor NULL esta permitido para todos los atributos, a menos que se prohíba
explícitamente. NOT NULL prohíbe el uso del valor NULL.

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


Día y Hora

date. Fecha (día del año), año (4 dígitos), mes y dia


• Ej. date ‘2001-7-27’

time. hora del día, en horas, minutos y segundos.


• Ej. time ’09:00:30’
time ’09:00:30.75’

timestamp: día y hora


• Ej. timestamp ‘2001-7-27 09:00:30.75’

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


Creación de Tablas
CREATE TABLE.
Es necesario especificar (al menos) el nombre de la tabla, los nombres de
las columnas y el tipo de dato. Por ejemplo:

CREATE TABLE mi_tabla


(
nombre1 char(20),
nombre2 integer
);

DROP TABLE
DROP TABLE mi_tabla;
Todos los comandos CREATE tienen un comando DROP

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


Valores por Defecto
SECUENCIACIÓN
CON SECUENCIA:
CREATE SEQUENCE producto_seq;

CREATE TABLE producto


( IdProducto integer PRIMARY KEY
DEFAULT next value ('producto_seq'),
nombre varchar(20),
precio decimal(10,2) DEFAULT 9.99
);

CON IDENTITY:
CREATE TABLE producto
( IdProducto integer PRIMARY KEY IDENTITY,
nombre varchar(20),
precio decimal(10,2) DEFAULT 9.99
);

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


Restricciones
“Check”, Restricción arbitraria

“Not-Null”, El atributo no acepta valores nulos

“Unique”, El atributo no acepta valores repetidos

“Primary Key”, El atributo es clave primaria

“Foreign Key”, El atributo es clave extranjera (foránea)

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


CHECK
Permite especificar que los valores de una columna deben satisfacer una
expresión. Por ejemplo ser positivo.

CREATE TABLE producto


( Idproducto integer,
nombre varchar(20),
precio decimal(10.2) CHECK (precio > 0)
);
La restricción debe definirse DESPUES del tipo de dato. Se define usando la palabra
CHECK seguida de una expresión entre paréntesis

“CHECK” se satisface si la expresion evaluada es “TRUE” o “NULL”.

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


CHECK
Las restricciones pueden involucrar varias columnas pero no varias tablas.

CREATE TABLE producto


( idProducto integer,
nombre varchar(20),
precio decimal(10,2)CHECK (precio > 0),
precio_rebajado decimal(10,2) CHECK (precio_rebajado > 0),
CHECK (precio > precio_rebajado )
);

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


NOT NULL
Indica que el atributo no puede valer “NULL”

CREATE TABLE producto


( idProducto integer NOT NULL,
nombre varchar(20) NOT NULL,
precio decimal(10,2) CHECK (precio > 0)
); Pueden existir varias
restricciones referidas al
mismo atributo, el order
no importa.

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


UNIQUE
• Asegura que un determinado valor no esta repetido
en una columna.

CREATE TABLE producto


( idProducto integer UNIQUE,
nombre varchar(20),
precio decimal(10,2)
);

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


UNIQUE
¿Estas tablas serán equivalentes?

CREATE TABLE producto


( idProducto integer UNIQUE,
nombre varchar(20) UNIQUE,
precio decimal(10,2)
);

CREATE TABLE producto


( idProducto integer UNIQUE,
nombre varchar(20) UNIQUE,
precio decimal(10,2),
UNIQUE (idProducto, nombre)
);

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


UNIQUE vs CHECK
CREATE TABLE example
CREATE TABLE example
(
(
a integer,
a integer,
b integer,
b integer,
c integer,
c integer,
CHECK (a > 0 AND b > 0)
UNIQUE (a, c)
);
);

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


Clave Primaria ¿Es equivalente UNIQUE a
PRIMARY KEY?

CREATE TABLE producto


( idProducto integer PRIMARY KEY,
Forma N° 1
nombre varchar(20),
precio decimal(10,2)
);

CREATE TABLE producto


( idProducto integer,
nombre varchar(20),
Forma N° 2 precio decimal(10,2),
PRIMARY KEY (idProducto)
);
CREATE TABLE producto
( idProducto integer NOT NULL,
nombre varchar(20),
precio decimal(10,2) Forma N° 3
);
ALTER TABLE producto ADD PRIMARY KEY (idProducto);

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


Clave Foránea
• La restriccion “REFERENCES” asegura que los valores de una determinada
columna debe ser idénticos a los valores que aparecen en otra determinada
columna que puede estar en otra tabla
CREATE TABLE producto
( idProducto integer PRIMARY KEY,
nombre varchar(20),
precio decimal(10,2)
);

CREATE TABLE pedido


( idPedido integer PRIMARY KEY,
idProducto integer REFERENCES producto (idProducto),
cantidad integer
);

No se podrá crear pedidos sobre productos que no existan.


¿Qué pasa si se borra el idProducto en la tabla producto?
¿Qué pasa si se borra/cambia el idProducto en la tabla productos?
Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas
Triggers (una interrupción)
• Un “trigger” es un pedazo de codigo SQL que se ejecuta automaticamente cuando se
invoca una cierta acción
• Por ejemplo: Para evitar eliminar un registro

CREATE TABLE producto


( idProducto integer PRIMARY KEY,
nombre varchar(20),
precio decimal(10,2)
);

CREATE TRIGGER evita_eliminar ON producto


FOR DELETE
AS
if (select count(*) from deleted) > 1
begin
raiserror('No puede borrar registro',16,1)
rollback transaction
end;

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


Añadir/Modificar una restricción
ALTER TABLE producto
ADD CHECK (nombre <> '');
ALTER TABLE producto
ADD CONSTRAINT some_name UNIQUE(idProducto);
ALTER TABLE producto
ADD FOREIGN KEY (idCategoria)
REFERENCES Categoria (idCategoria);

ALTER TABLE producto


ALTER COLUMN idProducto SET NOT NULL;
ALTER TABLE producto
ALTER COLUMN precio SET DEFAULT 7.77;
ALTER TABLE producto
RENAME COLUMN idProducto TO product_id;
Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas
Etc…
• Las tablas son los objeto “centrales” en una base de datos pero no son los
únicos objetos que existen en una base de datos:
• Vistas
• Funciones
• Packages
• Triggers
• Secuencias,
• Indices
• Vistas
• Tipos de Datos
• etc…

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


Conclusiones Finales

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


METACOGNICIÓN
Preguntas: ● ¿Qué fue lo más interesante de la clase de hoy?
● ¿Para qué te sirve lo aprendido?
● Resumen de los logros alcanzados en la sesión.
● Reflexión sobre los desafíos enfrentados y lecciones aprendidas.
● Recomendaciones para futuras mejoras en el desarrollo de la clase.

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


Observa el siguiente video:
https://www.youtube.com/watch?v=hnH_IrQ2bjE
Y complementa lo aprendido en clase hoy.
Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas
Referencias Bibliográfica
Bibliografía Básica:

● Martínez López, F. J. y Gallegos Ruiz, A. (2017). Programación de bases de datos relacionales. Editorial RA-MA
https://university.odilo.es/info/programacion-de-bases-de-datos-relacionales-mf0226-3-00468349

● Martínez López, F. J. y Gallegos Ruiz, A. (2017). Programación de bases de datos relacionales. RA-MA Editorial.

● Nieto Bernal, W. y Nieto Bernal, W. (2017). Diseño de base de datos. Barranquilla, Colombia: Universidad del Norte.

● Sarasa, A. (2019). Introducción a las bases de datos NSQL: clave-valor usando Redis. Barcelona, Editorial UOC.

Bibliografía Complementaria

● El Agha, M. I.; Jarghon, A. M.; y Abu-Naser, S. S. (2018). SQL Tutor for Novice Students. International Journal of Academic
Information Systems Research, 2(2), 1–7. http://dstore.alazhar.edu.ps/xmlui/handle/123456789/123

● Harrison, G. (2016). Next Generation Databases: NoSQL, NewSQL, and Big Data. Nueva York, USA. Editorial Apress®.
https://www.academia.edu/40346447/Next_Generation_Databases_NoSQL_NewSQL_and_Big_Data_What_every_profess
ional_needs_to_know_about_the_future_of_databases_in_a_world_of_NoSQL_and_Big_Data_Guy_Harrison

● Taylor, A. G. (2019). SQL for Dummies. 9a. Edición. New Jersey: USA. John Wiley & Sons, Inc. Editorial For Dummies.
https://www.pdfdrive.com/sql-for-dummies-e185753443.html

Otras fuentes: Herramientas y Utilitarios

● Google Drive: https://drive.google.com/

● Lucidchart: https://www.lucidchart.com/

Facultad de Ingeniería y Arquitectura – Escuela Profesional de Ingeniería de Sistemas


ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS

También podría gustarte