Nombre de la asignatura:
Taller de Bases de Datos
Carrera:
Ingeniería en Sistemas Computacionales
Clave de la asignatura:
SCA-1025
SATCA:
0-4-4
Tema o Unidad 1: Lenguaje de Definición de Datos (DDL) Subtema 1.1 Instalación de un SGBD
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
COMPETENCIAS ESPECIFICAS El alumno: Utiliza procedimientos de instalación de SGBD para diversas plataformas.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
CONTENIDO PROCEDIMENTAL Al terminar la siguiente lección el alumno podrá: Identificar los elementos que conforman a un SGBD. Identificar las características para la evaluación adecuada de un SGBD. Comparar las ventajas y desventajas de los diversos SGBD. Identificar los requerimientos de instalación y configuración de los SGBD.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
CONTENIDO CONCEPTUAL
Requerimientos del SGBD Instalación del SGBD Configuración del SGB Resumen
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
¿Qué es un SGBD? Los Sistemas de Gestión de Bases de Datos (SGBD), son aplicaciones que permiten a los usuarios definir, crear y mantener las bases de datos y proporcionan un acceso controlado a la misma. Los SGBD es la aplicación que interactúa con los usuarios de los programas y las bases de datos. Algunos de los SGBD más conocidos son: SQL, DB2, SLQ/DS, ORACLE, INGRES, INFORMIX, SYBASE, PARADOX, DBASE, ACCESS, FOXPRO, R, RM/T y RM/V2, MySQL.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Objetivos del SGBD Definir la base de datos mediante el Lenguaje de Definición de Datos (DDL), el cual permite especificar la estructura, tipo de datos y las restricciones sobre los datos, almacenándolo todo en la base de datos. Separar la descripción y manipulación de los datos, permitiendo un mayor entendimiento de los objetos, además de flexibilidad de consulta y actualización de los datos (Datos-Metadatos). Permitir la inserción, eliminación, actualización, consulta de los datos mediante el Lenguaje de Manipulación de Datos (DML), lo que permite resolver el problema que presentan los sistemas de archivos, donde hay que trabajar con un conjunto fijo de consultas o la necesidad de tener muchos programas de aplicaciones. Existen dos tipos de programas de manejo de datos, los cuales se diferencian por la forma en que acceden a los datos.
Continua… Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Objetivos del SGBD Lenguajes procedurales: Manipulan la base de datos, registro a registro y se deben especificar las operaciones a realizar para obtener los datos resultado. Lenguajes no procedurales: Manipulan la base de datos en conjuntos de registros y se especifican qué datos deben obtenerse como resultado sin plantear las forma de hacerlo. El lenguaje no procedural más utilizado es SQL (Structure Query Languaje) que se ha convertido en un estándar y el lenguaje por defecto de los SGBD relacionales. Proporcionar acceso controlado a la base de datos. Seguridad: Los usuarios no autorizados no pueden acceder a la base de datos. Integridad: Mantiene la integridad y consistencia de la base de datos.
Continua… Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Objetivos del SGBD Control de concurrencia: Permite el acceso compartido a la base de datos. Control de recuperación: Restablece la base de datos después de producirse un fallo de software o hardware. Diccionario de datos: Contiene la descripción de los datos de la base de datos y es accesible por el usuario. Proporcionar un mecanismo de vistas, que permita a cada usuario tener su propia vista o visión de la base de datos. El DDL nos permite definir las vistas como subconjuntos de la base de datos, permitiendo: Un nivel de seguridad que excluye datos para que no sean vistos por determinados usuarios. Permiten que los usuarios vean los datos en el formato deseado. Eliminar la redundancia de datos, establecer una mínima duplicidad en los datos y minimizar el espacio en disco utilizado.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Arquitectura del SGBD Usuarios
Servidor BD’s B’sD’s
Tablas de usuario
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Diccionario de datos
Arquitectura del SGBD Servidor de BD´s: Es el software (SGBD), que tiene la capacidad de administrar distintas bases de datos. Diccionario de datos: Es un archivo que contiene metadatos, es decir, "datos acerca de los datos". Este archivo se consulta antes de leer o modificar los datos reales en el sistema de base de datos. En otras palabras contiene la información de las diferentes bases de datos que contenga el SGBD y la definición de las tablas. Usuarios: Existen 3 tipos de usuarios. Usuario Final: Usa la Base de Datos realizando consultas, actualizaciones de datos etc., a través de un lenguaje de consulta, o a través de un programa mediante el lenguaje de consulta el usuario queda libre para poder hacer cualquier operación y mediante un programa el usuario queda restringido a lo que en este se estableció. Segundo Usuario: Programador de aplicaciones, desarrolla los sistemas necesarios para permitir la posibilidad de comunicación o extensión de información desde la Base de Datos. Administrador de la Base de Datos (DBA): Dentro de sus funciones podemos mencionar. Mantener en forma optima y eficiente la base de datos controlando procedimientos, instalaciones, procesos, etc., Realizando funciones de auditoria, manejando la seguridad de la Base de Datos, además de crear usuarios y accesos permitidos. Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Arquitectura del SGBD SGBD => ITSJR
Servidor SII BD ALUMNOS BD FINANCIEROS
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Servidor IDIOMAS
BD IDIOMAS
Arquitectura del SGBD Base de Datos BD ALUMNOS
Tabla: Alumnos noctrol nomalu 1023 JAVIER 4567 VICENTE 6789 FERNANDO 1234
FERNANDO
apepatalu LOPEZ FERNANDEZ DE TAPIA
apematalu CHABELO
FERNANDEZ
Tabla: Materias
CONIN
id_materia 1 2 3
nommat PROGRAMACION BASE DE DATOS GRAFICACION
SANCHEZ
4
MATEMATICAS
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Arquitectura del SGBD Base de datos: Es un conjunto exhaustivo no redundante de datos estructurados organizados independientemente de su utilización y su implementación en máquina, accesibles en tiempo real y compatibles con usuarios concurrentes con necesidad de información diferente y no predicable en tiempo. Ventajas de las BD´s: Se evita la inconsistencia de la información. Se evita la redundancia de la información Mantiene la integridad en los datos. Los datos pueden ser compartidos por varias aplicaciones o usuarios. Se mantienen niveles de seguridad en los datos. Desventajas de las BD´s: Al perder o dañarse la base de datos se hace irrecuperable las tablas, informes, consultas, etc., que en ella existen. Al tener una base de datos con demasiada información su acceso es lento ya que varios usuarios pueden estar haciendo uso de esta. Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Arquitectura del SGBD Estructura general de una tabla
Columna
nocontrol
nomalu
------------- ----------------
apepatalu
---------------------
1023 JAVIER
LOPEZ
4567 VICENTE
FERNANDEZ
6789 FERNANDO
DE TAPIA
1234 FERNANDO
FERNANDEZ
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Campo Registro Dato
Arquitectura del SGBD Tabla de usuario: Se refiere al tipo de modelado de datos, donde se guardan los datos recogidos por un programa, el cual esta definido por: Registro: Es el conjunto de datos relacionados pertenecientes a una entidad. Este conjunto de datos es una colección finita, ordenada y posiblemente heterogénea en sus elementos que son tratados como una unidad. Columna: Es un conjunto de valores de un mismo tipo de dato. Campo: Es un área específica de un registro, usada para representar una clase particular de información la cual define una característica de un individuo u objeto. Dato: Es la representación de un hecho o una entidad; conjunto de caracteres con algún significado.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Requerimientos del SGBD Cada fabricante de los SGBD, determina los requerimientos mínimos y recomendados que el SGBD requiere para su instalación y ejecución: Software (sistema operativo). Hardware (espacio en disco duro y memoria RAM).
Cada SGBD, tiene capacidades diferentes en relación a: Número de accesos concurrentes que soporta. Número de bases de datos que soporta. Número de tablas por base de datos. Capacidad de almacenamiento por base de datos. Capacidad de memoria cache para atender peticiones de usuario. Existen SGBD, que: Requieren el pago de licencias para su uso (servidor y usuarios). Son considerados como software libre.
Continua… Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Requerimientos del SGBD Requerimientos del sistema de base de datos a crear, que se derivan de análisis de requerimientos definidos por el usuario: Cantidad de datos a almacenar. Necesidades de accesos concurrentes. Capacidad para el control de reglas del negocio. Capacidad para el control de seguridad e integridad de la información.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
CONTENIDO CONCEPTUAL
Requerimientos del SGBD Instalación del SGBD Configuración del SGB Resumen
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Instalación del SGBD La instalación en cada SGBD, es diferente de acuerdo a su nivel de seguridad y control en los datos que se desee configurar para las bases de datos que este controle. La mayoría de SGBD, cuentan con instaladores automáticos, en donde el usuario o administrador de la base de datos debe proporcionar algunos parámetros como: Tamaño de dispositivos de almacenamiento a utilizar, para el control de datos y el log de transacciones. Tamaño de página para la manipulación de datos. Dirección lógica donde se almacenen los diferentes componentes del SGBD. Nombre del servidor a crear para el control de la base de datos. Direcciones de protocolo de comunicación a utilizar.
Continua… Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Instalación del SGBD Para realizar la instalación se deba asegurar que se cumple con todos y cada uno de los requisitos determinados por el fabricante del SGBD así como este cubrirá las necesidades de administración de los datos a contener en el base de datos.
Se deberá asegurar que el SGBD, que se esta instalando cumpla con los requerimientos legales para su uso: Pago de licencias de servidor. Pago de licencias para usuario.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
CONTENIDO CONCEPTUAL
Requerimientos del SGBD Instalación del SGBD Configuración del SGB Resumen
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Configuración del SGBD Gran parte de la configuración del SGBD se realiza en el momento de su instalación, como ya describió en los apartados anteriores. Una vez instalado el SGBD, se deben definir los servidores de base de datos a utilizar, las base de datos que contendrá cada servidor y los esquemas de las bases de datos, es decir, la tablas de las bases de datos, para posteriormente pasar a la fase de explotación de la base de datos.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
ACTIVIDADES Actividad 1-1: Instalación y Configuración de SGBD´s. En esta actividad usted podrá: Identificar los requerimientos y características generales de SGBD. Instalar y configurar distintos SGBD. Conocer el entorno de la consola de comandos del SGBD.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
CONTENIDO CONCEPTUAL
Requerimientos del SGBD Instalación del SGBD Configuración del SGB Resumen
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Resumen Un SGBD, esta conformado por: Usuarios, quienes crean, administran y explotan la base de datos. Software, permite mantener los controles sobre la de la base de datos (Sistema operativo, aplicación, servidor de base de datos). Hardware, equipo físico para el uso de software y almacenamiento de los datos. Las bases de datos son utilizadas para el almacenamiento de información de diferentes tipos de sistemas como de transacciones, inteligencia artificial, sistemas expertos, medicina, educación, entre otros. La instalación y configuración de los SGBD, dependen básicamente de sus características predefinidas por su fabricante y el rendimiento que este tenga para el control y seguridad sobre los datos que almacene.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Nombre de la asignatura:
Taller de Bases de Datos
Carrera:
Ingeniería en Sistemas Computacionales
Clave de la asignatura:
SCA-1025
SATCA:
0-4-4
Tema o Unidad 1: Lenguaje de Definición de Datos (DDL) Subtema 1.2 Creación del esquema de la base de datos
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
COMPETENCIAS ESPECIFICA El alumno: Construye esquemas de base de datos para proyectar las necesidades de un cliente en base a las reglas sintácticas del lenguaje de definición de datos.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
CONTENIDO PROCEDIMENTAL Al terminar la siguiente lección el alumno podrá: Definir esquemas de base de datos en SQL. Analizar y determinar los requerimientos de usuario. Describir los tipos de datos que puede ser usados para definir las columnas de una tabla. Crear tablas en un base de datos. Modificar la definición de las tablas. Borrar objetos en la base de datos creados por el usuario.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
CONTENIDO CONCEPTUAL
Creación del esquema de la Base de Datos
Actualización modificación y eliminación del esquema de la Base de Datos Resumen
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Lenguaje de Definición de Datos (DDL) Las instrucciones de DDL, son un subconjunto de sentencias SQL para crear, modificar o eliminar las estructuras de base de datos. Estas declaraciones tienen un efecto inmediato sobre la base de datos, y también se registra la información en el diccionario de datos. Para crear una tabla, un usuario debe tener el permiso CREATE TABLE y un área de almacenamiento en el que la creación de objetos. El administrador de la base de datos utiliza los datos de Lenguaje de Control de Datos (DCL) declaraciones, que están cubiertos en una lección posterior, para otorgar privilegios a los usuarios.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Lenguaje de Definición de Datos (DDL) Otros comando Para crear una bases de datos. Sintaxis: CREATE DATABASE nom_db Para crear un índice. Sintaxis: CREATE INDEX nom_ind ON nom_tab (col,….) Para crear vistas. Sintaxis: CREATE VIEW nom_vis AS sentencia_select
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Definiendo tablas Una tabla, es un objeto de la base de datos que almacena datos en renglones y columnas. Antes de crear una tabla, se debe diseñar su estructura: Determinar el nombre de la tabla y sus columnas. La elección de tipo de dato para cada columna. Determinación de restricciones para cada columna.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Nombrando las tablas y columnas Salvo indicaciones especificas del SGBD que se utilice, se recomienda que los nombres de las tablas y columnas que se crean en un SGBD cumplan con las siguientes reglas: No usar más de 30 caracteres de longitud. El primer carácter debe ser un alfabético. Únicamente debe contener caracteres alfabéticos, numéricos o uno de los siguientes símbolos, _, $, #. No duplicar el nombre. No utilizar palabras reservadas del SGBD. Utilice nombres descriptivos para las tablas y columnas. Utilice el mismo nombre de columna para el mismo dato en diferentes tablas.
Existen SGBD que soportan 255 caracteres para nombrar sus objetos.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Tipos de datos Un tipo de dato es un atributo asignado a una columna que especifica el tipo de dato que se pude almacenar en la columna. A la hora de elegir un tipo de dato se debe considerar que este: Tenga la precisión deseada de los valores. Pueda almacenar todos los posibles valores. Tenga un almacenamiento eficiente. Permita el crecimiento futuro. Requiera el menor espacio de almacenamiento.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Tipos de datos Hay que recordar que las reglas de negocio son requerimientos que la organización impone a los datos. Los tipos de datos puede hacer cumplir las reglas de negocio para un fin determinado, como por ejemplo un alumno no puede tener una calificación negativa, entre 1 y 69 o superior a 100 por lo que se debe elegir un tipo de dato entero corto. Los tipos de datos no se encuentran estandarizados entre los SGBD, aunque existen similitudes se recomienda conocer anticipadamente las características de estos antes de ser utilizados en la definición de un esquema de una base de datos. Los tipos de datos que maneja cada SGBD, aunque pudiesen llamarse igual podrían tener diferentes características, como la longitud, precisión, bytes de almacenamiento, por lo que se recomienda que antes de iniciar con la asignación del tipo de dato, se debe conocer los tipos de datos que soporta el SGBD a utilizar así como sus propiedades de cada uno de ellos. Para el SGBD MySQL se puede consultar los diferentes tipos de datos que soporta por medio de los siguientes comandos: Sintaxis HELP DATA TYPES; -- Muestra un listado de los diferentes tipos de datos que soporta MySQL. HELP tipo_dato; -- Muestra las características especificas del tipo de datos consultado. Ejemplo HELP INT; -- Mostrara la descripción y propiedades de tipo de datos int. Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Restricciones para columnas Las restricciones de columnas son utilizadas para: Hacer cumplir las reglas de negocio Implementar la integridad en la información a nivel de tabla. Seguridad referencial integral .
Los tipos de restricciones comunes entre los SGBD son: Null, Not Null. Default. Primary Key. Foreign Key. Check. Una restricción puede ser creada al momento o después de la creación de una tabla.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Null, Not Null
Un valor Null, representa un valor desconocido: Para valores numéricos, Null no es igual que cero. Para valores de carácter, Null no es igual a espacio en blanco.
Un valor Null no es considerado como menor, mayor o igual a cualquier otro valor.
Dos valores Null, no son considerados como iguales entre uno y otro.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Null, Not Null
Alumnos nocontrol
nomalu
apepatalu
1023
JAVIER
LOPEZ
4567
VICENTE
FERNANDEZ
apematalu CHABELO
fecnac 1940-12-23 1941-01-05
...
NOT NULL (Ninguna fila de esta columna puede contener valores nulos)
NULL (Cualquier fila de esta columna puede contener valor nulo)
NULL, NOT NULL, permite restringir lo valores nulos en los datos. Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Null, Not Null Definiendo restricciones Not Null en la columna:
CREATE TABLE alumnos (nocontrol VARCHAR(7) , nomalu VARCHAR(20) NOT NULL, apepatalu VARCHAR(20) NOT NULL, apematalu VARCHAR(20) NULL, rfc VARCHAR(13) NULL, fecnac DATE NOT NULL, status BIT NOT NULL) ENGINE = INNODB;
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Null, Not Null Ejecutar los script U2script1.sql, para crear la tablas alumnos. U2script2.sql, para insertar registros validos. U2script3.sql, para intentar insertar registros no validos. El cliente mysql se usa normalmente de forma interactiva, sin embargo, es posible poner comandos SQL en un script y decirle a mysql que lea ese script. Para ejecutar un script desde la ventana de comandos de mysql , se debe usar el comando SOURCE o \. Ejemplo mysql> source c:\alumnos\Unidad2\U2script1.sq o mysql> \. c:\alumnos\Unidad2\U2script1.sql
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Default Un Default, proporciona un valor para una columna dada, si no hay valor previstos para la columna durante un Insert. Una columna únicamente puede tener un Default. Un Default no puede ser usados en columnas de tipo identity, autoincrementales, etc.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Default Alumnos nocontrol
nomalu
apepatalu
apematalu
fecnac
1023
JAVIER
LOPEZ
CHABELO
1940-12-23
1
4567
VICENTE
FERNANDEZ
1941-01-05
1
Insertando registros 6789 1234
FERNANDO FERNANDO
DEAlmacena TAPIA ambos CONINregistros 1910-01-05 (status = 1) SANCHEZ FERNANDEZ 1990-01-05
PRIMARY KEY: Campo o conjunto de campos que identifica de manera única a un registro, por lo que no pueden existir dos registros con la misma llave primaria. Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
status
Default Definiendo restricciones Default en la columna:
CREATE TABLE alumnos (nocontrol nomalu apepatalu apematalu rfc fecnac status ENGINE =
VARCHAR(7), VARCHAR(20) NOT NULL, VARCHAR(20) NOT NULL, VARCHAR(20) NULL, VARCHAR(13) NULL, DATE NOT NULL, BIT NOT NULL DEFAULT 1) INNODB;
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Default Ejecutar U2script4.sql, para crear la tablas alumnos usando default U2script5.sql, para insertar un registro donde no se envía el valor para status
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Primary Key PRIMARY KEY
Alumnos nocontrol
nomalu
apepatalu
apematalu
fecnac
status
1023
JAVIER
LOPEZ
CHABELO
1940-12-23
1
4567
VICENTE
FERNANDEZ
1941-01-05
1
Insertando registros 1023
JORGE RODRIGO
No lo almacena (nocontrol-1023 ya existe) FALCON SANCHEZ 1950-06-07 ARREOLA VACA 1970-10-23 No lo almacena (nocontrol es null)
1 1
Restricciones PRIMARY KEY Crea una clave principal de la tabla. Sólo una clave primaria puede ser creada para una tabla. La clave principal es una columna o conjunto de columnas, que identifica de forma única cada registro de una tabla. Asegura que no hay una columna que forma parte de la clave principal puede contener un valor nulo.
Primary Key
Definiendo restricción de Primary Key en la columna.
CREATE TABLE alumnos (nocontrol nomalu apepatalu apematalu rfc fecnac status ENGINE
VARCHAR(7) PRIMARY KEY, VARCHAR(20) NOT NULL, VARCHAR(20) NOT NULL, VARCHAR(20) NULL, VARCHAR(13) NULL, DATE NOT NULL, BIT NOT NULL DEFAULT 1) = INNODB;
La PRIMARY KEY • De una sola columna pueden ser definidas a nivel de columna o de nivel de tabla. • De dos o mas columnas se crea a nivel de tabla. Nota: Un índice UNIQUE se crea automáticamente al definir una PRIMARY KEY.
Primary Key Ejecutar U2script6.sql, para crear la tablas alumnos. U2script7.sql, para intentar insertar registros no validos.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Foreign Key
PRIMARY KEY
Materias
Alumnos
Id_materia nommat -------1 TALLERBD 2 FISICA ...
Nocontrol NOMALU …. ------ ---------- -------1023 JAVIER 3456 VICENTE ...
status 1 1
caralu FOREIGN KEY
nocontrol
id_materia
1023 3456 ...
1 2
calificacion
….
90 100
Insertando registro
7571 1 3456 87
100 80
No es almacenado * nocontrol--7571 no existe en la tabla alumnos
... ... Id_materia— 87 no existe en la tabla materias
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Foreign Key Definiendo restricciones de Foreign Key en la columna:
CREATE TABLE caralu (nocontrol VARCHAR(7), id_materia INTEGER NOT NULL, calificacion TINYINT NOT NULL DEFAULT 0, semmat TINYINT NOT NULL, oportunidad TINYINT NOT NULL DEFAULT 1, PRIMARY KEY (nocontrol, id_materia), FOREIGN KEY (nocontrol) REFERENCES alumnos(nocontrol), FOREIGN KEY (id_materia) REFERENCES materias(id_materia) ) ENGINE = INNODB;
FOREIGN KEY: Define la columna o columnas de la tabla secundaria (hija).
RERERENCES: Identifica la tabla y la columna o columnas de la tabla primaria (maestra).
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Foreign Key Ejecutar U2script8.sql, para crear las tablas alumnos, materias y caralu. U2script9.sql, para insertar registros validos. U2script10.sql, para intentar insertar registros no validos.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Check CREATE TABLE caralu ( nocontrol VARCHAR(7), id_materia INTEGER NOT NULL, calificacion TINYINT NOT NULL DEFAULT 0, semmat TINYINT NOT NULL, oportunidad TINYINT NOT NULL DEFAULT 1, fecreg DATE NOT NULL, PRIMARY KEY (nocontrol, id_materia), FOREIGN KEY (nocontrol) REFERENCES alumnos(nocontrol), FOREIGN KEY (id_materia) REFERENCES materias(id_materia), CONSTRAINT calificacion_ck CHECK (calificacion = 0 OR calificacion BETWEEN 70 AND 100) ) ENGINE = INNODB;
Una columna puede tener varias restricciones CHECK.
Un CHECK no puede hacer referencia a otros valores en otras filas.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Check Ejecutar U2script11.sql, para crear las tablas alumnos, materias y caralu. U2script12.sql, para intentar insertar registros no validos.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Unique La restricción UNIQUE asegura que todos los valores en una columna sean distintos.
CREATE TABLE clientes (SID integer Unique, Last_Name varchar (30), First_Name varchar(30) ) ENGINE = INNODB;
La columna “SID” no puede incluir valores duplicados. Note que una columna que se especifica como clave primaria también puede ser única. Al mismo tiempo, una columna que es única puede o no ser clave primaria.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Eligiendo el motor de almacenamiento El motor de almacenamiento (storage-engine) se encarga de almacenar, manejar y recuperar información de una tabla. Los motores más conocidos son MyISAM e InnoDB. La elección de uno u otro dependerá mucho del escenario donde se aplique. En la elección se pretende conseguir la mejor relación de calidad acorde con nuestra aplicación. Si necesitamos transacciones, claves foráneas y bloqueos, tendremos que escoger InnoDB. Por el contrario, escogeremos MyISAM en aquellos casos en los que predominen las consultas SELECT a la base de datos. InnoDB dota a MySQL de un motor de almacenamiento transaccional (conforme a ACID) con capacidades de commit (confirmación), rollback (cancelación) y recuperación de fallos. Estas características incrementan el rendimiento y la capacidad de gestionar múltiples usuarios simultáneos. Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Eligiendo el motor de almacenamiento MyISAM es el motor por defecto. Para crear una tabla InnoDB se debe especificar la opción ENGINE = InnoDB o TYPE = InnoDB en la sentencia SQL de creación de tabla. InnoDB • Soporte de transacciones • Bloqueo de registros • Permite tener las características ACID (Atomicity, Consistency, Isolation and Durability), garantizando la integridad de nuestras tablas. • Es probable que si nuestra aplicación hace un uso elevado de INSERT y UPDATE notemos un aumento de rendimiento con respecto a MyISAM. MyISAM • Mayor velocidad en general a la hora de recuperar datos. • Recomendable para aplicaciones en las que dominan las sentencias SELECT ante los INSERT / UPDATE. • Ausencia de características de atomicidad ya que no tiene que hacer comprobaciones de la integridad referencial, ni bloquear las tablas para realizar las operaciones, por lo tanto,mayor velocidad.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
CREACIÓN DE TABLAS Sintaxis MySQL: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(] LIKE old_tbl_name [)]; create_definition: column_definition | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) | KEY [index_name] [index_type] (index_col_name,...) | INDEX [index_name] [index_type] (index_col_name,...) | [CONSTRAINT [symbol]] UNIQUE [INDEX] [index_name] [index_type] (index_col_name,...) | [FULLTEXT|SPATIAL] [INDEX] [index_name] (index_col_name,...) | [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) [reference_definition] | CHECK (expr) Continua… Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
CREACIÓN DE TABLAS Nomenclatura de Sintaxis • • • •
Las palabras mayúsculas se utilizan para palabras reservadas. Las palabras cursivas para elementos proporcionados por el usuario. [ ] Se utilizan para denotar elementos opcionales. {opción1 | opcion2} Se utiliza para denotar un elemento necesario, con dos o más opciones.
La sintaxis que se muestra es para el SGBD MySQL, versión 5.0.45, aunque es muy similar a la de otros SGBD se debe consultar la sintaxis del SGBD que se este utilizando. Para crear una tabla en una base de datos, se debe tener permisos para crear la tabla de la base de datos. Las únicas personas que puede eliminar una tabla de la base de datos son el dueño o el administrador.
Continua… Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
CREACIÓN DE TABLAS Sintaxis MySQL : column_definition: col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'string'] [reference_definition] type: TINYINT[(length)] [UNSIGNED] [ZEROFILL] | SMALLINT[(length)] [UNSIGNED] [ZEROFILL] | MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL] | INT[(length)] [UNSIGNED] [ZEROFILL] | INTEGER[(length)] [UNSIGNED] [ZEROFILL] | BIGINT[(length)] [UNSIGNED] [ZEROFILL] | REAL[(length,decimals)] [UNSIGNED] [ZEROFILL] | DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL] | FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL] | DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL] Continua… Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
CREACIÓN DE TABLAS Sintaxis Mysql: type: | NUMERIC(length,decimals) [UNSIGNED] [ZEROFILL] | DATE | TIME | TIMESTAMP | DATETIME | CHAR(length) [BINARY | ASCII | UNICODE] | VARCHAR(length) [BINARY] | TINYBLOB | BLOB | MEDIUMBLOB | LONGBLOB | TINYTEXT [BINARY] | TEXT [BINARY] | MEDIUMTEXT [BINARY] Continua… Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
CREACIÓN DE TABLAS Sintaxis MySQL: type: | LONGTEXT [BINARY] | ENUM(value1,value2,value3,...) | SET(value1,value2,value3,...) | spatial_type index_col_name: col_name [(length)] [ASC | DESC] reference_definition: REFERENCES tbl_name [(index_col_name,...)] [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE] [ON DELETE reference_option] [ON UPDATE reference_option]
Continua… Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
CREACIÓN DE TABLAS Sintaxis MySQL: reference_option: RESTRICT | CASCADE | SET NULL | NO ACTION table_options: table_option [table_option] ... table_option: {ENGINE|TYPE} = engine_name | AUTO_INCREMENT = value | AVG_ROW_LENGTH = value | [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name] | CHECKSUM = {0 | 1} | COMMENT = 'string' | MAX_ROWS = value | MIN_ROWS = value | PACK_KEYS = {0 | 1 | DEFAULT} Continua… Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
CREACIÓN DE TABLAS Sintaxis MySQL: | DELAY_KEY_WRITE = {0 | 1} | ROW_FORMAT = {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT} | RAID_TYPE = { 1 | STRIPED | RAID0 } RAID_CHUNKS = value RAID_CHUNKSIZE = value | UNION = (tbl_name[,tbl_name]...) | INSERT_METHOD = { NO | FIRST | LAST } | DATA DIRECTORY = 'absolute path to directory' | INDEX DIRECTORY = 'absolute path to directory' select_statement: [IGNORE | REPLACE] [AS] SELECT ... (Some legal select statement)
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
CREACIÓN DE TABLAS Usando subconsultas Sintaxis MySQL: CREATE TABLE table [column(, column...)] AS subquery;
Se puede crear una tabla y copiar sus registros mediante la combinación de la sentencia CREATE TABLE y el uso de subconsultas. Debe coincidir con el número de columnas con el especificado en la subconsulta.
Creación de una tabla y copiado de registros desde otra tabla. • Un segundo método para crear una tabla es la aplicación de subconsultas que tanto crear la tabla e copia los registros devueltos par la subconsulta. • La tabla se crea con los nombres de columna, y los registros recuperados por la sentencia SELECT se inserta en la tabla. • La definición de columna sólo puede contener el nombre de la columna y el valor predeterminado. • Si no se especifican las columna, los nombres de las columnas en la tabla son los mismos que los nombres de columna en la subconsulta.
Creación de tablas usando subconsultas Sintaxis MySQL: CREATE TABLE personas AS SELECT nocontrol, CONCAT(apepatalu,’ ‘,apematalu,’ ‘,nomalu) AS alumno FROM alumnos; DESCRIBE personas; Field Type Null Default Extra --------- ---------- ------- -------- -----nocontrol varchar(7) NO alumno double YES
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Creación de tablas usando subconsultas Ejecutar U2script13.sql, para crear una tabla usando una subconsulta.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
CONTENIDO CONCEPTUAL
Creación del esquema de la Base de Datos
Actualización modificación y eliminación del esquema de la Base de Datos Resumen
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Actualización. Modificación y eliminación del esquema de la base de datos Después de crear las tablas o por mantenimiento a la base de datos, puede que tenga que cambiar su estructura de las tablas, ya que es necesario agregar o eliminar una columna o simplemente cambiar su definición. Esto de puede hacer mediante instrucciones del Lenguaje de Definición de Datos DDL. ALTER TABLE Igualmente por cambio en el esquema de la base de datos, en ocasiones es necesario eliminar completamente una tabla. DROP TABLE
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Alter table ALTER TABLE, es utilizado para la actualización de la definición de una tabla con la que se podrán agregar, modificar o borrar columnas en la tabla, entre otras opciones. Sintaxis en MySQL: ALTER [IGNORE] TABLE tbl_name alter_specification [, alter_specification] ...
alter_specification: ADD [COLUMN] column_definition [FIRST | AFTER col_name ] | ADD [COLUMN] (column_definition,...) | ADD INDEX [index_name] [index_type] (index_col_name,...) | ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) | ADD [CONSTRAINT [symbol]] UNIQUE [index_name] [index_type] (index_col_name,...) Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Continua…
Alter table | ADD [FULLTEXT|SPATIAL] [index_name] (index_col_name,...) | ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) [reference_definition] | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} | CHANGE [COLUMN] old_col_name column_definition [FIRST|AFTER col_name] | MODIFY [COLUMN] column_definition [FIRST | AFTER col_name] | DROP [COLUMN] col_name | DROP PRIMARY KEY | DROP INDEX index_name | DROP FOREIGN KEY fk_symbol | DISABLE KEYS | ENABLE KEYS | RENAME [TO] new_tbl_name | ORDER BY col_name | CONVERT TO CHARACTER SET charset_name [COLLATE collation_name] Continua… Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Alter table | [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name] | DISCARD TABLESPACE | IMPORT TABLESPACE | table_options
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Agregando columna Alumnos
“…Se agrega una nueva columna a la tabla alumnos…”
Nueva columna
nocontrol nomalu apepatalu ------ ---------- -------1023 JAVIER LOPEZ 4567 VICENTE FERNANDEZ
…
tel
...
Alumnos nocontrolo nomalu apepatalu ------ ---------- -------1023 JAVIER LOPEZ 4567 VICENTE FERNANDEZ ...
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
…
tel
Agregando columna Se adiciona la columna usando la siguiente instrucción. ALTER TABLE alumnos ADD COLUMN(tel varchar(15)); DESCRIBE alumnos; Field Type Null Default Extra --------- ---------- ------- -------- -----nocontrol varchar(7) NO … tel
varchar(15) YES
NULL
Directrices para agregar una columna A UNA TABLA. • No se puede especificar en que posición de la tabla se agregue la columna, por default la agrega como última columna. • Si la tabla ya contiene registros, cuando se agrega una columna, la columna nueva es inicialmente nula para todas las filas ya existentes.
Agregando columna Ejecutar U2script14.sql, para agregar una columna a la tabla alumnos.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Modificando columna Se adiciona la columna usando la siguiente instrucción. ALTER TABLE MODIFY
alumnos nomalu VARCHAR(10);
DESCRIBE alumnos; Field Type Null Default Extra --------- ---------- ------- -------- -----nocontrol varchar(7) NO nomalu varchar(10) YES NULL … tel
varchar(15) YES
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
NULL
Modificando columna • Puede modificar una definición de columna mediante la instrucción ALTER TABLE con la cláusula de MODIFY. • La modificación de la columna pueden incluir cambios en tipo de datos de una columna, el tamaño y el valor por defecto. • Puede aumentar el ancho o la precisión de una columna numérica o disminuir el ancho de una columna si la columna contiene valores nulos o sólo si la tabla no tiene filas. • Cambiar el tipo de datos si la columna contiene valores nulos. • Convertir una columna CHAR con el tipo de datos VARCHAR o convertir una columna VARCHAR al tipo de datos CHAR si la columna contiene valores nulos o si no cambiar el tamaño. • Un cambio en el valor predeterminado de una columna sólo afecta a las inserciones posteriores a la mesa.
Modificando columna Ejecutar U2script15.sql, para modificar la longitud del tipo de dato en la columna nomalu de la tabla alumnos.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Borrando columna Se borra una columna usando la siguiente instrucción. ALTER TABLE DROP
alumnos tel;
Una vez que se elimina la columna se pierden los valores almacenados en ella.
Sólo se puede borrar las columnas. • Si no es la llave primaria • Si no es parte de una llave foránea. • Si no es parte de un índice.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Borrando columna Ejecutar U2script16.sql, para borrar la columna tel a la tabla alumnos.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
Borrando tablas DROP TABLE, es utilizado para el borrado de una tabla.
Sintaxis en MySQL: DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
Ejemplo. DROP TABLE
alumnos;
Una vez que se ejecuta la instrucción los datos y la tabla son eliminados. Todas las transacciones pendientes se destruyen. Todos los índices relacionados con la tabla se borran. Sólo el creador de la tabla o un usuario con el privilegio puede eliminar una tabla. La instrucción DROP TABLE, una vez ejecutado, es irreversible.
Borrando tablas Ejecutar U2script17.sql, para borrar la tabla alumnos.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
ACTIVIDADES Actividad 2-1: Administración de esquema de una base de datos. En esta actividad usted deberá: Crear un esquema de base de datos, utilizando el Lenguaje de Definición de Datos (DDL) en un SGBD.
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
CONTENIDO CONCEPTUAL
Creación del esquema de la Base de Datos
Actualización modificación y eliminación del esquema de la Base de Datos Resumen
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López
RESUMEN
Instrucción
Descripción
CREATE TABLE
Crea un tabla
ALTER TABLE
Modifica la estructura de una tabla
DROP TABLE
Borra la tabla y sus registros
Realizado por: Ing. María Patricia Uribe Rodríguez e Ing. Guillermo Badillo López