Conceptos básicos:

Anuncio
Conceptos básicos:
Datos: Los datos son valores que describen hechos, condiciones o situaciones. Un dato puede
ser una letra, un número, un signo ortográfico o cualquier símbolo y que representa una
cantidad, una medida, una palabra o una descripción.
Información: Los datos se convierten en información cuando se organizan de forma que
describen un ente o fenómeno.
Campo: Es la mínima unidad de información almacenada, por ejemplo el valor: 3.1416927 por
sí solo no nos dice nada, hasta que lo asociamos a la cantidad de veces que entra el diámetro
de la circunferencia en su perímetro. El valor 30682873864 es solo una serie de números pero
al darle formato 30-68287386-4 podemos decir que se trata de un CUIT. Los campos poseen
características que debemos conocer para poder utilizarlos:
Tipo de dato: Carácter, Numérico, etc.
Longitud: Cantidad de símbolos (bytes) que lo conforman
Cantidad de decimales: Solo para los datos numéricos
Registro: Es un conjunto de campos que están relacionados entre sí, por ejemplo:
30682873864UNLA
UNIVERSIDAD NACIONAL DE LANUS
Podemos ver claramente una cadena de caracteres formada por tres campos:
CUIT
NUMERICO (11, 0)
SIGLA
CARACTER (10)
DENOMINACION
CARACTER (50)
Estos datos podrían haber sido organizados de otras formas para formar un registro, por
ejemplo:
Separados por comas:
30682873864,UNLA,UNIVERSIDAD NACIONAL DE LANUS
Separados por comas y con comillas para las cadenas de caracteres:
30682873864,”UNLA”, ”UNIVERSIDAD NACIONAL DE LANUS”
Separados por tabulaciones:
30682873864
”UNLA”
”UNIVERSIDAD NACIONAL DE LANUS”
U otros cientos de formatos que cada uno puede definir y deben conocer todos los que
necesiten leer la información contenida en el archivo.
Archivo de datos: Es un conjunto de datos almacenados de forma que puedan ser utilizados
por un programa de computadora, los archivos de datos están conformados por una cantidad
de registros; estos pueden tener longitud fija o variable; poseer registros de cabecera y cierre
(registros de control) y estar organizados de forma tal que puedan ser leídos en forma
secuencial, dinámica (random) o ambos
De esta forma la información necesaria para hacer funcionar una aplicación se agrupa en
archivos donde los registros están formados por campos que poseen cierto nivel de relación
definida por el individuo que diseña el sistema.
A lo largo de la vida útil del sistema este puede pasar por las manos de varios diseñadores que
lo modifican agregando campos o archivos; lamentablemente no todos poseemos el mismo
criterio y el dejar ciertas reglas al libre albedrio hace que los sistemas lleguen a un momento
de su vida útil donde un dato en particular puede encontrarse en distintos archivos con
distinto nivel de actualización.
Este es un concepto difícil de comprender porque en un mundo ideal que se les describe todo
el tiempo en los libros la documentación de los sistemas está completa, pero cuando
trabajamos en empresas reales nos encontramos con documentación incompleta, necesidades
de desarrollo (tiempos) que impiden realizar el análisis completo en los archivos y programas
que los utilizan, programas de los que no tenemos los fuentes y por tanto deben seguir
trabajando con la misma estructura de archivo, etc.
Todos estos problemas del mundo real son los que dieron como resultado un caos que pedía a
gritos ser organizado, es así que nace CODASYL acrónimo para "Conference on Data Systems
Languages" que crea en un principio lenguajes estandarizados de programación como COBOL y
luego las bases de datos secuenciales que derivaron en las plex hasta llegar a las relacionales
que conocemos y utilizamos masivamente hoy en día.
Esto no hace que los archivos de datos se hayan dejado de usar, solo que restringió su uso para
algunas determinadas funciones como archivos de parámetros y de intercambio de datos
entre sistemas.
Bases de datos:
Las bases de datos son estructuras de datos almacenadas (en su mayoría) en archivos
monolíticos (enormes archivos donde se almacenan todos los datos); la estructura utilizada
para almacenar estos datos fue variando con las distintas evoluciones de las bases de datos,
pero todas ellas se basaron en dos grandes repositorios de datos: el diccionario de datos y los
datos del sistema. El diccionario de datos es el corazón de las bases de datos y posee
información sobre la forma en que encontraremos almacenados los datos del sistema en la
base de datos (por esto también reciben el nombre de metadata).
Las razones de esta complejidad se deben a la necesidad de extraer de los sistemas
tradicionales la complejidad del manejo de los datos para ponerla en un sistema administrador
de base de datos que se encarga de administrarla: este concepto lo podrán ver reconocer del
análisis orientado a objetos como encapsulación.
La información en todas las bases de datos se encuentra almacenada en tablas que, en un nivel
de abstracción razonablemente alto, podemos ver con una apariencia similar a la de una
planilla de cálculo, poseen filas y columnas con intersecciones donde se almacenan los datos.
La información sobre el formato y contenido de cada tabla se almacena en un sector de la base
de datos llamado diccionario de datos.
La realidad es que son mucho mas complejas, pero en este momento necesitamos verlas
desde un punto de vista simplista para poder comprender como utilizarlas; por tanto y solo
para el objetivo de este apunte simplificaremos las bases de datos como un conjunto de datos
organizados en tablas donde las columnas de cada fila cumplen con ciertas restricciones que
en la teoría veremos como reglas de normalización.
Para poder crear las estructuras de datos y consultarlas utilizaremos un lenguaje estructurado
de consulta que se conoce como SQL (Structured Query Language).
Las instrucciones que se utilizan para crear, actualizar y eliminar las estructuras de datos se
llaman DDL (Data Description Language), las que se utilizan para crear o eliminar filas en las
tablas o para actualizar sus datos se denominan DML (Data Management Language).
Todas las bases de datos relacionales utilizan versiones distintas versiones de SQL adaptadas
del estándar creado por ANSI (American National Standards Institute) en sus distintas
versiones desde que lo lanzara en 1987 y hasta la última revisión del 2013.
Instrucciones DDL:
CREATE
Se utiliza para crear estructuras de datos, vistas, índices de acceso, tipos de datos de usuario,
funciones, procedimientos, disparadores, etc.
ALTER
Se utiliza para modificar estructuras de datos, índices de acceso, tipos de datos de usuario,
funciones, procedimientos, disparadores, etc.
DROP
Se utiliza para eliminar estructuras de datos, índices de acceso, tipos de datos de usuario,
funciones, procedimientos, disparadores, etc.
Instrucciones DML:
INSERT
Se utiliza para agregar datos en una tabla o vista actualizable
UPDATE
Se utiliza para actualizar los datos de una tabla o vista actualizable
DELETE
Se utiliza para eliminar datos de una tabla o vista actualizable
TRUNCATE
Se utiliza para eliminar todos los datos de una tabla
MySQL
Este año trabajaremos sobre la base de datos MySQL en su última versión liberada que pueden
descargar desde http://dev.mysql.com/downloads/ para el sistema operativo que deseen; el
instalador para Microsoft Windows contiene todos los utilitarios necesarios, a los aventureros
que deseen instalarlo sobre alguna versión de Linux, les recomiendo que lo instalen desde los
repositorios de la versión de Linux que tengan instalado (server y cliente suelen estar
disponible en paquetes por separado y deben instalar los dos) y luego descarguen e instalen
MySQL Workbench y MySql Utilities desde http://www.mysql.com/products/workbench/
La http://downloads.mysql.com/docs/refman-5.6-en.pdf encontraran la documentación
completa de la base de datos, incluyendo la del lenguaje SQL utilizado por esta base de datos
relacional.
Subconjunto de instrucciones SQL de MySQL que utilizaremos este año:
Instrucciones DDL en MySQL:
CREATE TABLE
Se usa para crear estructuras de tablas de datos
ALTER TABLE
Se usa para modificar estructuras de tablas de datos, se deben seguir reglas de validación de
datos cuando las tablas de datos tienen contenido
DROP TABLE
Se usa para eliminar estructuras de tablas de datos, cuando se eliminan los datos se pierde la
información almacenada en ellas
CREATE INDEX
Se usa para crear índices de acceso a los datos almacenados en las tablas
ALTER INDEX
Se usa para modificar índices de acceso a los datos almacenados en las tablas
DROP INDEX
Se usa para eliminar índices de acceso a los datos almacenados en las tablas
CREATE VIEW
Se usa para crear vistas a las tablas de datos
DROP VIEW
Se usa para eliminar vistas a las tablas de datos
Instrucciones DML en MySQL:
INSERT
Se usa para agregar filas a las tablas de datos, para que funcione se deben cumplir las
restricciones definidas en el diccionario de datos
UPDATE
Se usa para actualizar los datos de las filas de las tablas, para que funcione se deben cumplir
las restricciones definidas en el diccionario de datos
DELETE
Se usa para eliminar filas de las tablas de datos
TRUNCATE TABLE
Se usa para eliminar todas las filas de una tabla de datos
SELECT
Se usa para recuperar la información de una o mas tablas de datos, para que funcione se
deben cumplir restricciones del diccionario de datos
Instrucciones DDL:
Ejercicio 1:
Crear una base de datos con nombre “unla_introdb” usando la instrucción CREATE DATABASE
Ejercicio 2:
Usando la instrucción CREATE TABLE, crear una tabla con nombre “alumnos” en la base de
datos “unla_introdb” con el siguiente formato:
Columna
Tipo de dato
Restricciones
Adicionales
legajo
int
NOT NULL
PRIMARY KEY
nombre
varchar(50)
NOT NULL
apellido
varchar(50)
NOT NULL
cohorte
smallint
NOT NULL
activo
char(1)
DEFAULT 'S'
Ejercicio 3:
Usando la instrucción CREATE INDEX, crear una indice con nombre “alumnos_ayn” en la tabla
“alumnos” de la base de datos “unla_introdb” con el siguiente formato:
Columna
Orden
nombre
ascendente
apellido
ascendente
cohorte
descendente
Ejercicio 4:
Usando la instrucción ALTER TABLE, modificar la estructura de la tabla “alumnos” de la base
de datos “unla_introdb” agregando las siguientes columnas:
Columna
Tipo de dato
Restricciones
fecha_nacimiento
datetime
NULL
fecha_estado
datetime
DEFAULT CURDATE()
estado
smallint
DEFAULT 0
Estado: {0: activo, 1: regular, 2: libre}
Adicionales
Ejercicio 5:
Usando la instrucción ALTER TABLE, modificar la estructura de la tabla “alumnos” de la base
de datos “unla_introdb” eliminando la columna activo
Ejercicio 6:
Usando las instrucción de los ejercicios 1 a 5 :
1. Crear una base de datos con nombre “ejercicio6”
2. Crear en la base de datos “ejercicio6” las siguientes tablas:
3. Agregar a la tabla “articulos” la columna “precio” (float default 0)
4. Crear un indice por el campo “tipo_articulo_id” con orden ascendente para la tabla
“articulos”
Ejercicio 7:
Usando la instrucción DROP TABLE, eliminar la tabla “tipos_articulo” de la base de datos
“ejercicio6”
Ejercicio 8:
Usando la instrucción DROP DATABASE eliminar la base de datos “ejercicio6”
Ejercicio 9:
Usando la instrucciones SQL que correspondan agregar las siguientes tablas a la base de
datos:
Tabla: “notas_alumno”
Columna
Tipo de dato
Restricciones
Adicionales
nota_id
smallint
NOT NULL
PRIMARY KEY
legajo
int
NOT NULL
PRIMARY KEY
nota_valor
float
DEFAULT 0
Tabla: “notas”
Columna
Tipo de dato
Restricciones
Adicionales
nota_id
smallint
NOT NULL
PRIMARY KEY
nota_desc
varchar(20)
NOT NULL
Tabla: “grupos_tp”
Columna
Tipo de dato
Restricciones
Adicionales
grupo_id
smallint
NOT NULL
PRIMARY KEY
grupo_nombre
varchar(50)
NOT NULL
nota_grupal
float
DEFAULT 0
Ejercicio 10:
Usando la instrucciones SQL que correspondan agregar los siguientes valores a la tabla notas:
nota_id
nota_nom
1
Primer parcial
2
Segundo parcial
3
Tercer parcial
4
Recuperatorio primer parcial
5
Recuperatorio segundo parcial
6
Recuperatorio tercer parcial
7
Final
Ejercicio 11:
Realizar un resguardo (BACKUP o DUMP o EXPORT) de la base de datos y entregarlo al profesor
Instrucciones DML:
Usando:
Usando la base de datos “unla_introdb” se realizarán los ejercicios en forma grupal y se
guardarán los comandos para cada caso, entregándolo al profesor junto con el resguardo del
último ejercicio
Ejercicio 1:
Usando la instrucción INSERT sobre la tabla “alumnos” insertar los datos de los alumnos del
grupo de trabajo (al menos 5 registros).
Ejercicio 2:
Usando las instrucciones DML que corresponda agregar a la tabla “alumnos” la siguientes
columnas:
Columna
Tipo de dato
Restricciones
dni
bigint
NOT NULL
email
varchar(50)
NULL
grupo_id
smallint
Adicionales
DEFAULT 0
Ejercicio 3:
Usando la instrucción UPDATE modificar el contenido de las filas de la tabla “alumnos”
agregando la información para las columnas del punto anterior.
Ejercicio 4:
Usando la instrucción INSERT modificar el contenido de las filas de la tabla “alumnos”
agregando la información de los siguientes alumnos:
Nombre y
Apellido
Legajo
Cohorte
Estado
Fabian Gonzalez
23435
2008
2
Esteban Nagata
23437
2008
2
Carlos Urquiza
23455
2008
2
Carolina Martinez
23502
2008
2
Ejercicio 5:
Usando la instrucción SELECT consultar todos los datos de la tabla “alumnos”.
Ejercicio 6:
Usando la instrucción DELETE eliminar de la tabla “alumnos” los datos de los alumnos libres.
Ejercicio 7:
Usando la instrucciones SQL que correspondan crear la fila para el grupo de los alumnos
ingresados en la tabla “alumnos” del grupo de trabajo práctico que les asigne el profesor.
Ejercicio 8:
Realizar un resguardo (BACKUP o DUMP o EXPORT) de la base de datos y entregarlo al profesor
Uso de la instrucción SELECT:
Usando:
Usando la base de datos “select_introdb” se realizarán los ejercicios en forma grupal y se
guardarán los comandos para cada ejercicio, entregándolo al profesor al finalizar el ejercicio.
Ejercicio 1:
Escribir la sentencia SELECT que permita recuperar la información de la lista de artículos
Ejercicio 2:
Agregar a la sentencia del ejercicio anterior los datos del tipo de artículo y el precio, para
obtener una lista de precios
Ejercicio 3:
Agregar a la sentencia del ejercicio anterior la restricción necesaria para mostrar solo los
artículos del que se poseen existencias, lista de precios de artículos en existencia
Ejercicio 4:
Teniendo en cuenta que se realiza un pedido de artículos semanalmente, escribir la sentencia
SELECT que permita recuperar la información de la lista de artículos cuyas existencias se
encuentren por debajo del punto de reposición
Ejercicio 5:
Modificar la sentencia anterior para mostrar solo los registros que no tengan pedidos
pendientes de semanas anteriores
Ejercicio 6:
Modificar la sentencia anterior para mostrar también los artículos que se traen solo a pedido
(punto de reposición = cero)
Ejercicio 7:
Escribir la sentencia SELECT que permita recuperar la información de la lista de vendedores
Ejercicio 8:
Agregar a la sentencia anterior la información del jefe de grupo de ventas
Entregar al profesor:
Las instrucciones SQL creadas para cada ejercicio
Uso de la instrucción SELECT … BETWEEN:
Usando:
Usando la base de datos “select_introdb” se realizarán los ejercicios en forma grupal y se
guardarán los comandos para cada ejercicio, entregándolo al profesor al finalizar el ejercicio.
Ejercicio 1:
Escribir la sentencia SELECT que permita recuperar la información del monto total de ventas
realizadas mensualmente (año y mes) entre los años 2010 y 2011
Ejercicio 2:
Escribir la sentencia SELECT que permita recuperar la información de la cantidad de artículos
vendidas por tipo de artículo y artículo entre los años 2010 y 2011
Ejercicio 3:
Escribir la sentencia SELECT que permita recuperar la información de la cantidad de artículos y
monto realizado por sus ventas por tipo de artículo y artículo en los dos primeros trimestres de
2011
Entregar al profesor:
Las instrucciones SQL creadas para cada ejercicio
Uso de la instrucción SELECT … GROUP BY:
Usando:
Usando la base de datos “select_introdb” se realizarán los ejercicios en forma grupal y se
guardarán los comandos para cada ejercicio, entregándolo al profesor al finalizar el ejercicio.
Ejercicio 1:
Escribir la sentencia SELECT que permita recuperar la información del monto total de ventas
realizadas mensualmente (año y mes)
Ejercicio 2:
Escribir la sentencia SELECT que permita recuperar la información del monto total de ventas
realizadas semanalmente (año, mes y semana)
Ejercicio 3:
Escribir la sentencia SELECT que permita recuperar la información del monto total de ventas
realizadas trimestralmente (año y trimestre)
Ejercicio 4:
Escribir la sentencia SELECT que permita recuperar la información del monto total de ventas
realizadas mensualmente (año y mes) por artículo
Ejercicio 5:
Escribir la sentencia SELECT que permita recuperar la información del monto total de ventas
realizadas semanalmente (año, mes y semana) por artículo
Ejercicio 6:
Escribir la sentencia SELECT que permita recuperar la información del monto total de ventas
realizadas trimestralmente (año y trimestre) por artículo
Ejercicio 7:
Escribir la sentencia SELECT que permita recuperar la información del monto total de ventas
realizadas mensualmente (año y mes) por tipo de artículo y artículo
Ejercicio 8:
Escribir la sentencia SELECT que permita recuperar la información del monto total de ventas
realizadas semanalmente (año, mes y semana) por tipo de artículo y artículo
Ejercicio 9:
Escribir la sentencia SELECT que permita recuperar la información del monto total de ventas
realizadas trimestralmente (año y trimestre) por tipo de artículo y artículo
Ejercicio 10:
Escribir la sentencia SELECT que permita recuperar la información del monto total de ventas
realizadas mensualmente (año y mes) por grupo de ventas y vendedor
Ejercicio 11:
Escribir la sentencia SELECT que permita recuperar la información del monto total de ventas
realizadas semanalmente (año, mes y semana) por grupo de ventas y vendedor
Ejercicio 12:
Escribir la sentencia SELECT que permita recuperar la información del monto total de ventas
realizadas trimestralmente (año y trimestre) por grupo de ventas y vendedor
Ejercicio 13:
Escribir la sentencia SELECT que permita recuperar la información del promedio de la cantidad
de unidades de cada artículo vendidas por operación
Ejercicio 14:
Escribir la sentencia SELECT que permita recuperar la información del promedio de la cantidad
de unidades de cada artículo vendidas por operación y vendedor
Ejercicio 15:
Escribir la sentencia SELECT que permita recuperar la información del promedio de la cantidad
de unidades de cada artículo vendidas por operación y grupo de ventas
Ejercicio 16:
Escribir la sentencia SELECT que permita recuperar las comisiones de ventas totales por cada
mes (año y mes)
Ejercicio 17:
Idem pero separadas por cada grupo de ventas
Ejercicio 18:
Idem pero separadas por cada vendedor
Entregar al profesor:
Las instrucciones SQL creadas para cada ejercicio
Uso de JOIN:
Usando:
Usando la base de datos “select_introdb” se realizarán los ejercicios en forma grupal y se
guardarán los comandos para cada ejercicio, entregándolo al profesor al finalizar el ejercicio.
Reescribir las instrucciones de la práctica de GOUP BY utilizando JOIN para conectar las tablas
Entregar al profesor:
Las instrucciones SQL creadas para cada ejercicio
Vistas
Usando:
Usando la base de datos “select_introdb” se realizarán los ejercicios en forma grupal y se
guardarán los comandos para cada ejercicio, entregándolo al profesor al finalizar el ejercicio.
Crear vistas para los primeros doce ejercicios de la práctica anterior.
Entregar al profesor:
Las instrucciones SQL creadas para cada ejercicio
Usando MySQL Workbench para diseñar una base de datos:
Diseño de base de datos:
Diseñar una estructura de base de datos para almacenar la información de los turnos de una
peluquería, tener en cuenta que se deben almacenar datos de: clientes, empleados,
especialidades de los empleados e historia de atención a clientes; no entra dentro del alcance
la facturación de los servicios.
Cargar datos para diez empleados (cuatro peluqueros, dos manicuras, dos asistentes y dos
administrativos), dos turnos de atención rotativos semanalmente, no se atiende los lunes,
sábado horario extendido (tres turnos de 4hs)
Para asegurar que la estructura de datos funciona correctamente verificar que se puedan
realizar las siguientes consultas:
1. Agenda del próximo lunes para cada peluquero
2. Historia de atención de un cliente determinado del último mes
3. En que horario se puede hacer corte, manicura y color en forma simultanea para los
próximos tres días
Entregar al profesor:
Entregar el modelo con datos y el prototipo de las consultas en SQL
Descargar