Introducción a las bases de datos PDF

Document Details

Uploaded by Deleted User

Universidad Internacional de La Rioja

Tags

database programming sql database design database management

Summary

This document introduces the concept of databases. It has an overview of database design including entities relationship modelling, and other aspects of database design. It includes a set of exercises for practice.

Full Transcript

Tema 1 Programación de Bases de Datos Introducción a las bases de datos Índice Esquema 3...

Tema 1 Programación de Bases de Datos Introducción a las bases de datos Índice Esquema 3 Ideas clave 4 1.1. Introducción y objetivos 4 © Universidad Internacional de La Rioja (UNIR) 1.2. El modelo entidad-relación 8 1.3. SQL 16 1.4. Restricciones de integridad 30 1.5. Otras bases de datos relacionales 33 1.6. Diseño de bases de datos relacionales 35 1.7. Cuaderno de ejercicios 36 Esquema © Universidad Internacional de La Rioja (UNIR) Programación de Bases de Datos 3 Tema 1. Esquema Ideas clave 1.1. Introducción y objetivos Para introducirnos en materia de bases de datos, lo primero es analizar el modelo tradicional de crearlas. En este primer tema trabajaremos con una introducción a los sistemas de bases de datos, pero enfatizando en el modelo relacional. Al finalizar el alumno será capaz de:  Conocer la importancia de la implementación de bases de datos con el fin de mejorar y agregar seguridad a la administración de bases de datos.  Saber la historia del desarrollo de las bases de datos y cómo han surgido nuevos modelos de bases de datos que resuelven las limitaciones de otros.  Notar la importancia de nuevas tecnologías como las bases de datos con modelo no relacional, que han sido muy importantes para la proliferación de redes sociales, compra en línea y muchas otras aplicaciones a partir de la web 2.0.  Ser capaz de reconocer e implementar la metodología de diseño de bases de datos E-R (Entidad-Relación).  Expresar el modelo E-R a una forma esquemática, con el objetivo de sintetizar la información para su implementación física. © Universidad Internacional de La Rioja (UNIR) Programación de Bases de Datos 4 Tema 1. Ideas clave Generalidades de diseño La creación de proyectos computacionales como páginas web, aplicaciones de software, apps móviles e incluso proyectos escolares deben llevar un diseño previo el cual está dividido en varias fases, en la actualidad es mucho más común que una de esas fases sea el almacenamiento, distribución e interacción con datos, que en resumen significa implementar una base de datos; esto sucede principalmente por el gran valor que ha adquirido la información en los últimos años y la reducción en costos de implementación gracias a el surgimiento de tecnologías de almacenamiento en la nube. En general, el diseño de una base de datos está ligado a las necesidades de la aplicación y de los usuarios de esta, es imperativo por parte del diseñador manejar especial atención a los detalles y crear restricciones que salvaguarden la integridad de la base de datos. El diseño de una base de datos debe ser pensado en tres niveles, el nivel lógico (como se integra internamente la información), físico (en donde se almacena la información) y de vistas (cómo interactúa la información con el usuario). Diseño por etapas Diseñar una base de datos es una tarea compleja, incluso para aplicaciones pequeñas. Es por eso, que se recomienda que esta actividad sea realizada por un equipo, ya que así se puede garantizar en mayor medida que, entre varias personas, se pueda obtener un esquema completo de las necesidades, limitantes y posibles requerimientos futuros de los datos. La primera etapa de diseño requiere realizar un modelo de datos en alto nivel, en el que se pueda evaluar las necesidades del usuario y de la aplicación, debe existir investigación teórica y de campo, a fin de obtener la mayor cantidad de conocimiento del problema que se desee resolver. El resultado de © Universidad Internacional de La Rioja (UNIR) esta fase de diseño es obtener un amplio panorama de las necesidades tanto de los usuarios como de la aplicación. Programación de Bases de Datos 5 Tema 1. Ideas clave Con el conocimiento adquirido en la etapa de diseño previa, el equipo de trabajo tiene la capacidad de elegir el mejor modelo de datos para satisfacer las necesidades de nuestra aplicación, por ejemplo, un modelo no relacional si lo que nos importa es almacenar información que no maneje una gran cantidad de transacciones simultaneas, un modelo basado en grafos si lo que nos interesa es enfocarnos en las interacciones entre los elementos de la base de datos o trabajar con el modelo entidad-relación, el cual es el más tradicional y ofrece ventajas de consistencia en las transacciones; las transacciones son interacciones usuario–base de datos y viceversa. El modelo entidad-relación será estudiado con más detalle a lo largo del desarrollo de este capítulo, por ser uno de los pioneros y en general el más usado hasta la actualidad. Con el modelo elegido, es posible esquematizar de forma adecuada la representación de la información, para el caso del modelo E-R la forma más adecuada de esquematizar es en tablas. Se analizará el modelo de forma exhaustiva a fin de encontrar errores y datos redundantes, sin perder de vista los requisitos funcionales para optimizar las operaciones sobre la base de datos. Una vez completada la fase de diseño propia del modelo de base de datos elegido, se procede al diseño de la implementación de manera física. En esta fase se especifica, la forma de organizar los archivos y las estructuras internas de almacenamiento, por ejemplo, el uso de llaves foráneas (se estudiarán más adelante) con alguna sintaxis implícita. Esta última fase de diseño es más laxa que las anteriores y permite modificaciones con cierto grado de flexibilidad, a diferencia del diseño del esquema lógico. © Universidad Internacional de La Rioja (UNIR) Programación de Bases de Datos 6 Tema 1. Ideas clave Otros puntos importantes en el diseño Cuando se diseña una base de datos hay que tener en cuenta el diseño de «entidades»; las entidades son abstracciones que representan objetos del mundo real, como usuarios, productos en un inventario o lugares. El diseñador debe aprovechar las características en común sin dejar de lado las divergencias, esto con el fin de mejorar la cohesión dentro de la base de datos. Un buen diseño de una base de datos E-R, es el que todas las entidades dentro de la base de datos tienen algún punto de relación, de no existir podría haber un problema a la hora de realizar operaciones que envuelvan varias entidades. Problemas que se deben evitar en el diseño: 1. Redundancia: significa que un diseño debe ser capaz de no repetir información y ser conciso. Por ejemplo, en una cadena de tiendas como Mercadona, sus bases de datos deben ser capaces de almacenar las notas de compra de todas sus sucursales, pero cada uno debe almacenar información del lugar, dirección o nombre del cajero. 2. Incompletitud: al diseñar un modelo se debe tener en mente las operaciones que se realizarán sobre la base de datos, teniendo contemplados todos los posibles escenarios. Para el ejemplo del Mercadona, si los empleados de una sucursal no se manejan como entidad y más bien como una lista dentro de la entidad sucursal, resulta más difícil agregar nuevos empleados y mucho más difícil de modificar las actividades del empleado o sus horarios. © Universidad Internacional de La Rioja (UNIR) Programación de Bases de Datos 7 Tema 1. Ideas clave 1.2. El modelo entidad-relación El modelado a través del diseño entidad-relación facilita la implementación de bases de datos, a través de la esquematización lógica global de los datos en nuestra aplicación. Este modelo emplea tres elementos básicos: las entidades, las relaciones entre ellos y los atributos de cada entidad. Entidades Una entidad hace referencia a una abstracción de un objeto en el mundo real, este objeto tiene propiedades y valores que lo hacen distinguible entre un conjunto de entidades del mismo tipo. Por ejemplo, dentro de la base de datos del Mercadona una entidad podrían ser los empleados, que tendrán propiedades como el nombre y la actividad que realizan, las cuales lo harán identificable entre el conjunto de todos los empleados. En el modelo E-R, los conjuntos de entidades tienen los mismos atributos, pero los valores de estos pueden ser diferentes. Los atributos son características que describen a las entidades. Como ya hemos mencionado, los valores de esos atributos pueden variar entre el conjunto de entidades del mismo tipo. El uso de atributos le da consistencia a la base de datos y expresa uniformidad en la forma de almacenar los datos. En el diseño de bases de datos se debe tener en cuenta que, para ciertos conjuntos de entidades, debe existir un atributo que identifique de manera única cada elemento del conjunto, este atributo por buena práctica suele ser identificado como el prefijo id seguido por un guion bajo y el nombre de la entidad, por ejemplo, si estamos trabajando con entidades de tipo producto, el atributo sería «id_producto». © Universidad Internacional de La Rioja (UNIR) Usemos un nuevo ejemplo usando la tabla 1 como referencia, tomemos el DNI 32112312, este dato nos servirá como una forma de identificación unívoca para un registro concreto, que, para este caso, representa la entidad persona de una empresa. Sin guardar relación, tenemos otro conjunto de entidades «préstamos», la Programación de Bases de Datos 8 Tema 1. Ideas clave estructura de cada conjunto de entidades es independiente una de otra; tomemos ahora la sucursal P-02, esta identifica unívocamente un préstamo realizado y funciona como id, los id pueden guardar o no alguna estructura creada por el diseñador de la base de datos, para algunos casos será mejor generarlos de manera aleatoria y para otros, como el del préstamo, siguiendo una estructura donde el prefijo P indica que es un préstamo. Cliente Préstamo 32112312 Fermín Pereda P-01 2,000 13928374 Santiago Real P-02 1,300 51456525 Jazmín Goya P-03 3,000 24535124 Jesús Martínez P-04 1,500 17535231 Andrés Islas P-05 400 99743122 Soto Mendoza P-06 100 432858135 Gael Rodríguez P-07 2,400 Tabla 1. Ejemplos de conjuntos de entidades. En un conjunto de entidades como el conjunto de entidades «préstamo», que representa los préstamos concedidos por la sucursal con el identificador P-01, cada una de las entidades que lo constituyen son conocidas como extensiones; es decir, el préstamo P-04 es una extensión del conjunto de entidades préstamo, como también lo es el préstamo P-06. Una aclaración extra que se debe comentar es que los conjuntos de entidades no son necesariamente disjuntos. Para dejarlo más claro, si usamos el conjunto de entidades de todos los empleados que laboran en un banco (conjunto de entidades empleado) y el conjunto de entidades que representa a los clientes de esa sucursal (conjunto de © Universidad Internacional de La Rioja (UNIR) entidades cliente) y al ser disjuntos no tienen ningún elemento en común, incluso si una persona que es empleado también es cliente, podrá tener un id unívoco para cada una de las dos actividades que lo consideraran como dos entidades distintas, esto nos lleva adelantarnos un poco sobre qué son los atributos en una entidad. En Programación de Bases de Datos 9 Tema 1. Ideas clave resumidas cuentas, los atributos nos ayudan a describir cada una de las entidades y esto nos provee de la mayor virtud de las bases de datos, que es guardar información, o, dicho de otro modo, guardar atributos de una entidad. Relaciones Las relaciones hacen referencia a la unión o interacción que existe entre entidades dentro de la base de datos. El agrupamiento de relaciones del mismo tipo se conoce coloquialmente como conjunto de relaciones. Cuando dos entidades se asocian se conoce como participación, mientras que la función que desarrolla una entidad en una relación se denomina rol, aunque semánticamente los roles están implícitos dentro del nombre de la entidad. Por ejemplo, en la relación de una sucursal de Mercadona con su tabla de empleados el rol está implícito en la entidad, es decir, se entiende que los empleados pertenecen a una sucursal del Mercadona que a su vez está relacionada con tabla Madre de sucursales. Las relaciones tienen cardinalidad, donde una entidad de un tipo puede estar relacionada por fuerza con otra entidad obligatoriamente y no pueden existir una sin la otra. Con la cardinalidad podemos clasificar las relaciones en:  Relaciones uno a uno: una entidad se relaciona únicamente con otra y viceversa, no pueden existir una sin la otra. © Universidad Internacional de La Rioja (UNIR) Figura 1. Ejemplo relación uno a uno. Programación de Bases de Datos 10 Tema 1. Ideas clave  Uno a varios o varios a uno: una entidad puede estar relacionada con cero o con varias entidades de otro tipo específico. Por ejemplo, un cargo de empleado puede estar relacionado con varios empleados (en un supermercado hay varias personas que se encargan de las labores de limpieza). Figura 2. Ejemplo uno a varios y varios a uno.  Varios a varios: una o varias entidades pueden estar relacionado con cero, una sola entidad o un conjunto de entidades. Figura 3. Ejemplo de relación varios a varios. Para ejemplificar, usando de nuevo la tabla 1 podemos observar cómo están definidas las entidades de prestatario que denotan la relación que existe entre los clientes y los préstamos que extiende la sucursal de un banco. A continuación, veamos la tabla 2, que muestra gráficamente cuáles son esas asociaciones entre cada cliente y préstamo. Cuando existe una asociación entre dos conjuntos de entidades, se conoce como participación. © Universidad Internacional de La Rioja (UNIR) Programación de Bases de Datos 11 Tema 1. Ideas clave Cliente Préstamo 32112312 Fermín Pereda P-01 2,000 13928374 Santiago Real P-02 1,300 51456525 Jazmín Goya P-03 3,000 24535124 Jesús Martínez P-04 1,500 17535231 Andrés Islas P-05 400 99743122 Soto Mendoza P-06 100 432858135 Gael Rodríguez P-07 2,400 Tabla 2. Ejemplo de un conjunto de relaciones cliente-préstamo. Los esquemas entidad-relación (E-R) como el de la tabla 2, representan la asociación existente entre entidades de una empresa real, de una escuela, de un servicio público, etc. Tomemos la entidad de nuestro conjunto de entidades cliente al registro con el identificador 13928374, de nombre Santiago y apellido Real, visualicemos como esta entidad tiene una relación de uno a varios porque cuenta con dos préstamos, el identificado con el código P-02 y el identificado con el código P-06. Otro concepto para tener en cuenta dentro de las relaciones es el rol, un rol es la función que realiza una entidad en una relación. Propiamente, los roles son implícitos a las entidades debido a que los conjuntos de entidades son distintos, y esos roles no son necesarios de manera explícita para poder entender los diagramas. Aunque también se da el caso contrario, donde pueden ser de utilidad; es decir, cuando un conjunto de entidades tiene varias relaciones más de una vez, por ejemplo, en la base de datos de una institución educativa donde un estudiante de doctorado puede cumplir el rol de profesor y de alumno al mismo tiempo. Este tipo de conjunto de relaciones es conocido como conjunto de relaciones recursiva, donde es obligatorio © Universidad Internacional de La Rioja (UNIR) y fundamental para el buen entendimiento de un diseño de la base de datos, determinar de forma explícita los roles que sean usados en el conjunto de relaciones. Programación de Bases de Datos 12 Tema 1. Ideas clave En las bases de datos relacionales, una relación también puede tener tanto atributos conocidos como atributos descriptivos; en la figura 4 observamos como, nuestro sujeto de pruebas el cliente de apellido Pereda, está relacionado mediante el conjunto de relaciones «impositor» que a su vez relaciona con el conjunto de entidades «cuenta». El atributo «fecha de acceso», está asociado con el conjunto de relaciones «impositor»; este atributo tiene la utilidad de especificar en qué momento hubo un acceso por parte del cliente a su propia cuenta. Retomemos al cliente «Pereda», la relación de tipo impositor muestra como este cliente entró dos veces a dos cuentas distintas, el primer acceso fue realizado el día 09 de enero de 2018 a las cuentas C-532 y C-125. Figura 4. Ejemplo de relaciones con atributos. Para finalizar de hablar sobre las relaciones, debemos de comentar que, si bien las bases de datos tradicionales que usan el modelo relacional y son conocidas de manera coloquial como bases de datos relacionales, aunque su nombre lo indique, no están pensadas para premiar las relaciones. En las implementaciones reales las relaciones no son entidades como tal y eso debe quedar claro, las relaciones se logran © Universidad Internacional de La Rioja (UNIR) compartiendo atributos conocidos como llaves externas. Esos atributos son compartidos por dos o más conjuntos de entidades, por ejemplo. En una empresa existe el conjunto de entidades «empleado» quienes para ejemplificar solo tienen el atributo ID_NOMBRE e ID_DEPARTAMENTO este último es Programación de Bases de Datos 13 Tema 1. Ideas clave el atributo que comparte con un conjunto de entidades «departamentos». Este conjunto de entidades es responsable de almacenar las propiedades de cada departamento de la empresa, la entidad «departamento» tiene tres atributos ID_DEPARTAMENTO, NOMBRE_DEP Y SALARIO_DEP. La relación entre los conjuntos de entidades «empleado» y «departamento» se logra mediante el atributo ID_DEPARTAMENTO, que relaciona a una persona con algún departamento de trabajo. Atributos Los atributos de una entidad describen las entidades dándole unidad a cada elemento del conjunto de entidades. Los atributos tienen restricciones en los posibles valores que pueden almacenar, y ese rango o conjunto de valores es conocido como dominio. Por ejemplo, el dominio de un atributo «nombre_alumno» son todas las posibles cadenas que se pueden formar con una determinada longitud. Las entidades pueden describirse mediante un conjunto de atributos asociado con un conjunto de valores del dominio para cada atributo. Por ejemplo, una entidad «cliente» puede ser descrita mediante pares de valor: id_cliente–valor, nombre_cliente–valor, apellido_cliente–valor... y así sucesivamente hasta completar todos sus atributos y dominios. Los atributos en modelo E-R, pueden ser clasificados en tres tipos:  Simples y compuestos: los atributos simples solo necesitan un valor para ser descritos, mientras que un atributo compuesto está formado por más de un © Universidad Internacional de La Rioja (UNIR) atributo simple. Por ejemplo, el atributo de «nombre_cliente» puede ser un atributo compuesto es decir que para tener sentido necesitar un atributo «nombre» y otro «apellido». Esta forma de entender los atributos se hace con la finalidad, primeramente, de agrupar atributos relacionados y segundo, para Programación de Bases de Datos 14 Tema 1. Ideas clave poder hacer cambios solamente en sub-partes de un atributo compuesto. Un ejemplo sencillo es cuando una persona cambia de domicilio; si este atributo fuera simple habría que modificarlo todo, sin embargo, si está modelado como un atributo compuesto solo habrá que modificar la calle, colonia y código postal, si es que no se mudó de ciudad. Figura 5. Estructura de atributos compuestos.  Monovalorados y multivalorados: los atributos monovalorados son los que solo tienen un valor único, mientras los multivalorados son los que pueden contener más de un valor. El atributo «teléfono_de_contacto» de una persona es un ejemplo de un atributo multivalorado, porque puede tener más de uno solo.  Derivados: son los atributos que necesitan de otros atributos para poder ser obtenidos o calculados, si revisamos una base de datos de calificaciones de alumnos en una universidad, el atributo «promedio_semestral» es un atributo © Universidad Internacional de La Rioja (UNIR) derivado de calcular el promedio de todas las calificaciones en un semestre. Un último punto importante en el tema de atributos es el valor NULL o nulo para ciertos casos. Un valor NULL es aplicado para indicar que se desconoce el valor del atributo, que el valor no es aplicable o que hay un error en el valor. Por ejemplo, Programación de Bases de Datos 15 Tema 1. Ideas clave cuando personas extranjeras llegan a un país y deciden empadronarse, hay países que solo manejan un apellido para cada persona, si el país donde se está empadronando maneja dos, el segundo apellido para esa persona será manejado como nulo y se entiende que no aplica. 1.3. SQL El lenguaje SQL (Structured Query Language; lenguaje de consulta estructurada), es un lenguaje de administración y consulta diseñado para trabajar con bases de datos que utilicen el modelo relacional. Fue desarrollado por IBM a principios de los años setenta, su nombre original era Sequel; hoy en día SQL se ha convertido en el lenguaje estándar para la gestión de bases de datos relacionales y ha adquirido una gran popularidad; actualmente domina el mercado de la gestión de bases de datos. El lenguaje de consulta SQL está regulado y estandarizado por la ANSI (American National Standards Institute) y la ISO (International Standards Organization). La última revisión del estándar fue hecha en 2016 (SQL:2016). Como características nuevas incluye, entre otros, la compatibilidad con ficheros JSON. Existen distintos sistemas bases de datos que utilizan SQL. A continuación, mostramos los tres más importantes en cuanto su popularidad mundial. Figura 6a. Oracle 12C Database. (Esta foto de autor desconocido está bajo licencia CC BY-SA). © Universidad Internacional de La Rioja (UNIR) Programación de Bases de Datos 16 Tema 1. Ideas clave Figura 6b. MySQL Database. (Esta foto de autor desconocido está bajo licencia CC BY-SA). Figura 6c. Microsoft SQL Server Database. (Esta foto de autor desconocido está bajo licencia CC BY-SA). Componentes de SQL 1. Lenguaje de definición de datos (LDD): está compuesto por funciones que permiten la creación, borrado y modificación de los esquemas relacionales, es decir de las estructuras en donde son almacenados los registros dentro de una base de datos. 2. Lenguaje interactivo de manipulación de datos (LMD): proporciona una serie de cláusulas que permiten consultas y realización de transacciones de actualización con la base de datos, las consultas están basadas en el álgebra relacional y en el cálculo relacional de tuplas de datos. Para diferenciarlas, las sentencias LDD definen la estructura de la base de datos, sin embargo, no pueden suministrar o alterar los registros per se, esa es tarea de las © Universidad Internacional de La Rioja (UNIR) sentencias LMD. En la figura 7 se muestran, las sentencias de cada uno de los lenguajes que son más usadas. Programación de Bases de Datos 17 Tema 1. Ideas clave Figura 7. DLL y DML sentencias. Características de SQL  Integridad: SQL permite definir restricciones que garanticen la integridad de la base de datos. Las categorías de integración son: Integridad de entidad: establece que una fila de una tabla es única a través de una llave primaria con valor único. Integridad de dominio: restringe que los valores de un atributo solo pueden estar dentro de su dominio. Integridad referencial: establece que las filas referenciadas en otras tablas no pueden ser borradas. Integridad definida por el usuario: el desarrollador puede definir otras restricciones.  Transacciones controladas: SQL puede definir el ciclo de vida de una transacción sin afectar la consistencia. © Universidad Internacional de La Rioja (UNIR)  SQL incorporado y dinámico: definen la interfaz necesaria para ejecutar instrucciones desde otros lenguajes de programación. Programación de Bases de Datos 18 Tema 1. Ideas clave  Identificación: permite a los administradores definir permisos para otros usuarios, con el fin de generar mayor control. Tipos de datos en SQL  CHAR(n): cadena de caracteres con longitud fija.  VARCHAR(n): cadena de caracteres con longitud variable.  INT (o INTEGER): un valor entero que puede representar del rango 2.147.483.648 al -2.147.483.648.  NUMERIC (p,d): un número real con precisión especificada por el usuario. El número se forma por «p» dígitos, un signo y «d» que representan la parte decimal.  REAL (precisión doble): números de coma flotante con doble precisión.  FLOAT: número de coma flotante dentro del rango -1.79E+308 y 1.79E+308. En el siguiente enlace podrás encontrar una lista más completa, de todos los tipos de datos que pueden ser utilizados usando lenguaje SQL: https://desarrolloweb.com/articulos/2336.php. Lenguaje de Definición de Datos El lenguaje de definición de datos (LDD) permite crear y modificar objetos dentro de © Universidad Internacional de La Rioja (UNIR) la base de datos tales como:  El esquemático de la relación.  El dominio de los atributos.  Restricciones de integridad. Programación de Bases de Datos 19 Tema 1. Ideas clave  Definición de índices.  Usuario para asignar roles y permisos. Las sentencias más usadas en esta sintaxis son CREATE, ALTER y DROP. A continuación, analizaremos cada una de ellas: 1. Sentencia CREATE: el comando CREATE permite establecer una nueva base de datos/esquema, tabla, índice o procedimiento del usuario. Sintaxis: CREATE TABLE [nombre_tabla] ([definición columnar]) [Parámetros de la tabla] Donde la definición columnar se refiere a una lista separada por comas pudiendo tener alguna de las siguientes características:  Una definición de una columna: [Nombre de columna] [tipo de dato] {NULL | NOT NULL} {opciones de columna}  PRIMARY KEY, para definir la integridad de la entidad.  Restricciones. Ejemplo: CREATE TABLE maestros ( id_maestro INTEGER PRIMARY KEY, nombre VARCHAR(40) NOT NULL, apellido VARCHAR(40) NOT NULL, fechadenacimiento DATE NOT NULL ) ; © Universidad Internacional de La Rioja (UNIR) Programación de Bases de Datos 20 Tema 1. Ideas clave Resultado: Si corremos la sentencia en algún sistema de base de datos, se deberá crear una estructura de tabla con los atributos que especificamos, sin embargo, la tabla no debe contar con ningún registro hasta que se utilice DML. Para este y los demás casos posteriores se utilizó el sistema de base de datos MYSQL usando el IDE MySQL Workbench. El resultado en el log de salida de nuestro IDE es el que se muestra a continuación: Figura 8. Ejemplo de salida de una sentencia CREATE. Para comprobar que se cumple que no existe ningún registro en la tabla recién creada, es necesario hacer una consulta de la tabla mediante la sentencia SELECT, que abordaremos su funcionamiento más adelante. Usamos la sentencia: SELECT * FROM maestros; Figura 9. Consulta de una tabla recién creada. Observemos que la tabla que nos arroja como resultado, muestra que el primer registro de la tabla es un apuntador «*» hacia NULL en todos los registros, es decir © Universidad Internacional de La Rioja (UNIR) que están vacíos. Programación de Bases de Datos 21 Tema 1. Ideas clave Una alternativa para la creación de tablas y estructuras de almacenamiento en las bases de datos es utilizar los propios wizard managers incluidos en algunos IDE, que vuelven más gráfica e intuitiva la creación de la base de datos, con el fin de hacerlo más práctico. La figura 10 muestra un pantallazo de como se ve la interfaz de creación de tablas del IDE MySQL Workbench. Es posible listar los atributos, especificar su tipo de datos que almacenará e incluso sus propiedades, como ser una llave primaria o auto-incrementable. Estas propiedades las estudiaremos más adelante porque son muy importantes para un correcto diseño y funcionamiento de la base de datos. Figura 10. Interfaz MySQL para creación de tablas. 2. Sentencia DROP: la sentencia DROP se utiliza para eliminar una base de datos, una tabla, índice o vista. Sintaxis: © Universidad Internacional de La Rioja (UNIR) DROP {tipo de objeto} {nombre del objeto} Ejemplo: DROP TABLE maestros; Programación de Bases de Datos 22 Tema 1. Ideas clave La sentencia borrará completamente una tabla y mostrará en el log, la cantidad de filas o registros que hayan sido afectados al ejecutar esta sentencia. Si es una tabla sin registros, como en nuestro caso, el número de filas afectadas será de valor igual a 0. Figura 11. Log de salida para una sentencia DROP. 3. Sentencia ALTER: se utiliza para cambiar el comportamiento o propiedades de un objeto en una base de datos. Sintaxis: ALTER {tipo de objeto} {nombre del objeto} {parámetros} Donde los parámetros son funciones para agregar, actualizar o eliminar alguna propiedad. Ejemplo para agregar y eliminar una propiedad: ALTER TABLE maestros ADD salario FLOAT ALTER TABLE maestros DROP COLUMN salario Si reconstruimos la tabla que ya habíamos creado, nombrada «maestros» y probamos la sentencia para agregar una propiedad, el resultado se muestra a continuación: Figura 12. Log de salida para una sentencia ALTER de agregación. © Universidad Internacional de La Rioja (UNIR) Programación de Bases de Datos 23 Tema 1. Ideas clave Figura 13. Tabla resultante al agregar una columna. La figura 12 muestra que la sentencia ALTER TABLE ha sido aceptada, sin embargo, pareciera que no ha producido ningún resultado; para verificar que se haya agregado esa nueva columna se debe hacer nuevamente una consulta, en este caso la figura 13 mostrará que la columna salario ahora aparece en la última posición de los atributos. Ahora probemos eliminar esa columna creada y hacer el mismo proceso de verificación (figuras 14 y 15). Figura 14.- Log de sentencia ALTER para un DROP autorizado. Figura 15.- Tabla resultante al hacer el drop de la columna salario. Lenguaje de Manipulación de Datos (DML) © Universidad Internacional de La Rioja (UNIR) El lenguaje de manipulación de datos permite manipular la información de una base de datos a nivel de entidades realizando tareas como agregar, borrar, modificar y consultar elementos que conformen la base de datos. Programación de Bases de Datos 24 Tema 1. Ideas clave Las sentencias más importantes para manipulación de datos en SQL son: INSERT INTO, UPDATE, DELETE y SELECT. 1. Sentencia INSERT: agrega uno o más elementos a una tabla. Sintaxis básica: INSERT INTO tabla (columna1 [, columna2, columna3...]) VALUES (valorf1-1 [, valorf1-2, valorf1-3...]), (valorf2-1 [, valorf2-2, valorf2-3...]),...; Ejemplo: INSERT INTO maestros VALUES (1, 'Jose','Caballero', '1985-08-16'); Resultado: Figura 16. Log del ejemplo de INSERT INTO. Observemos que al revisar el log de salida en la figura 18, ahora, además de haber aceptado la sentencia y ejecutarla, el sistema de base de datos nos muestra que ha sido afectada una columna. Existe la posibilidad de hacer inserciones múltiples, pero por el momento quedémonos con la inserción simple. Comprobemos el estado de nuestra tabla mediante una consulta (figura 17): © Universidad Internacional de La Rioja (UNIR) Figura 17. Tabla resultante al hacer un INSERT INTO. Programación de Bases de Datos 25 Tema 1. Ideas clave La tabla resultante muestra que se ha creado un registro, para el maestro con id univoco de 1 y de nombre José Caballero, percatémonos que ahora el apuntador de la tabla direcciona hacia la siguiente dirección de guardado que tiene los atributos vacíos. 2. Sentencia UPDATE: esta sentencia cambia la información de uno o más récords en una tabla. Sintaxis: UPDATE tabla SET columna = valor1 [, columna2 = valor2...] [WHERE condición] Ejemplo: UPDATE maestros SET nombre = “Raul” WHERE id_maestro = 1 Resultado: Figura 18. Log resultante de hacer un UPDATE. La figura 18 nos indica que la actualización se ha completado de manera correcta. Veamos que MySQL nos informará que ha sido encontrado un registro con la © Universidad Internacional de La Rioja (UNIR) característica que estábamos buscando del ID igual a 1, ha hecho entonces un cambio sobre ese registro. Si observamos la tabla resultante comprobaremos que se ha realizado ese cambio sobre el atributo nombre. Programación de Bases de Datos 26 Tema 1. Ideas clave Figura 19. Tabla resultante de una actualización. 3. Sentencia DELETE: elimina uno o más elementos de una tabla. Sintaxis: DELETE FROM tabla [WHERE condición] Ejemplo: DELETE FROM maestros WHERE nombre = “Raul” Es posible borrar registros utilizando la cláusula WHERE dentro de la sintaxis, esta cláusula no es restrictiva y hará una búsqueda de todos los atributos que cumplan su condición, para el caso de nuestro ejemplo al no usar un atributo único como podría ser un ID si existiesen más registros con el nombre de Raul, se eliminarían todos; esto a veces es un comportamiento indeseable. Un buen administrador de bases de datos debe ser muy cuidadoso al ejecutar este tipo de sentencias, en la vida real se debe respaldar el estado de una base de datos antes de realizar cambios drásticos, y sobre todo los de borrado. Incluso existen ID que cuentan con un modo seguro, que no permite realizar borrados sin especificar un atributo llave en la cláusula (figura 20). Figura 20.- Código de error para un borrado con modo seguro activado en MySQL Workbench. © Universidad Internacional de La Rioja (UNIR) Programación de Bases de Datos 27 Tema 1. Ideas clave Figura 21. Resultado de una sentencia de borrado. 4. Sentencia SELECT y consultas: la sentencia SELECT se utiliza para consultar información dentro de una o varias tablas en una base de datos, la información puede ser un conjunto de elementos o información procesada. La sentencia SELECT está compuesta por varias cláusulas opcionales:  SELECT: funciona como cláusula, define las columnas o expresiones SQL que serán los valores de retorno de la consulta.  AS: opcionalmente se puede renombrar los valores retornados por la cláusula SELECT.  FROM: cláusula que especifica en donde está la información que debe ser consultada.  WHERE: es una cláusula condicional que permite regresar solo los elementos que cumplen con la condición.  GROUP BY: agrupa elementos que comparten un atributo.  ORDER BY: ordena la forma en que se presentan los elementos consultados. Ejemplos: Consulta todas las columnas en una tabla: © Universidad Internacional de La Rioja (UNIR) SELECT * FROM maestros; Programación de Bases de Datos 28 Tema 1. Ideas clave Consulta una sola columna que cumpla una condición: SELECT nombre AS “Lista de Maestros de quimica” FROM maestros WHERE materia = “Química”; Consulta con agrupación: SELECT materia, COUNT(*) FROM maestros GROUP BY materia Figura 22. Ejemplo de consulta compleja en MySQL. (Esta foto de autor desconocido está bajo licencia CC BY-SA). © Universidad Internacional de La Rioja (UNIR) Programación de Bases de Datos 29 Tema 1. Ideas clave 1.4. Restricciones de integridad Las restricciones de integridad funcionan como una forma de garantizar que no se puedan hacer modificaciones que dañen la consistencia global de los datos en una base de datos. Restricciones sobre entidades. Representan restricciones que permiten la consistencia de las entidades, que se guarden en la tabla. Entre las restricciones de entidades destacamos: NOT NULL, UNIQUE, CHECK (). 1. Restricción NOT NULL. El valor NULL es válido para cualquier dominio, es decir, puede ser usado en cualquier valor. Sin embargo, representa una carencia de información que podría ser fundamental, es por eso por lo que en ocasiones es necesario restringir el dominio de algunos atributos para que no acepten este valor como válido. En la declaración de atributos de una tabla es posible usar esta restricción mediante la siguiente sintaxis: nombre_atributo tipo_de_dato NOT NULL 2. Restricción UNIQUE. Restringe que el valor de un atributo no sea el mismo que el de otro atributo de otro © Universidad Internacional de La Rioja (UNIR) elemento insertado con anticipación. Puede aceptar un valor nulo único si no se restringe. Sintaxis: nombre_atributo tipo_de_dato UNIQUE Programación de Bases de Datos 30 Tema 1. Ideas clave 3. Restricción CHECK. La restricción CHECK permite estipular que las tuplas de los atributos cumplan condiciones específicas, como estar dentro de un rango de valores o pertenecer a una lista de valores. La sintaxis de una restricción está sujeta a un predicado donde se establecen las condiciones que se deben cumplir. Ejemplo para verificar restringir valores de un atributo mediante una lista: CREATE TABLE empleados( id_empleado VARCHAR(10) PRIMARY KEY, nombre VARCHAR(20) , cargo CHAR(10), CHECK ( cargo IN (‘Cajero’, ‘Limpieza’)) ); Ejemplo para comprobar un rango: CREATE TABLE empleados( id_empleado VARCHAR(10) PRIMARY KEY, nombre VARCHAR(20) , cargo CHAR(10), salario FLOAT CHECK (salario>=1000) ); Integridad referencial Es una propiedad de las bases de datos relacionales que garantiza que los valores de © Universidad Internacional de La Rioja (UNIR) una tabla puedan aparecer y ser referenciados por otro atributo o conjunto de atributos en otra u otras tablas. Estas claves son especificadas mediante la cláusula foreign key REFERENCES usando DDL. Programación de Bases de Datos 31 Tema 1. Ideas clave Ejemplo: --Tabla clientes-- CREATE TABLE clientes( id_cliente INT NOT NULL, nombre VARCHAR (20) NOT NULL, apellido VARCHAR (20) NOT NULL, direccion CHAR (25) , PRIMARY KEY (id) ); --Tabla ventas, hace referencia a un cliente a traves de su id-- CREATE TABLE ventas ( id_venta int NOT NULL, descripcion VARCHAR(30) NOT NULL, id_cliente int, PRIMARY KEY (id_venta), FOREIGN KEY (id_cliente) REFERENCES clientes(id_cliente) ); Con esta integración, se sabrán detalles de quién realizó la compra a través de un id que hace referencia a otra tabla donde podremos encontrar más información. Asertos Del inglés assert, los asertos son predicados que expresan condiciones a los que la base de datos se verá sometida. Las restricciones de integridad y de dominio también son un tipo de especial de aserto, sin embargo, estas solo pueden ser sencillas. Para crear restricciones complejas se debe crear un aserto explícito mediante la sintaxis: CREATE ASSERTION CHECK © Universidad Internacional de La Rioja (UNIR) Los asertos son una forma definitiva para asegurar la consistencia de los valores en una base de datos, sin embargo, tienen la desventaja de significar un alto computacional a la hora de insertar elementos. Programación de Bases de Datos 32 Tema 1. Ideas clave Los asertos pueden ser declarados después de la creación de las tablas y pueden referenciar valores de todo el esquema de base de datos. Veamos un ejemplo: CREATE ASSERTION suma CHECK( NOT EXISTS (SELECT * FROM sucursales WHERE (SELECT SUM(importe) FROM prestamos WHERE préstamos.nombre_sucursal= sucursales.nombre_sucursal) >= (SELECT SUM(saldo) FROM cuenta WHERE cuenta.nombre_sucursal = sucursal.nombre_sucursal))) Figura 23. Asertos SQL. (Esta foto de Autor desconocido está bajo licencia CC BY-SA). 1.5. Otras bases de datos relacionales SQL es solo un lenguaje de consulta que es usado por varios sistemas de gestión de base de datos como Db2 (de IBM), MS SQL SERVER (de Microsoft), MySQL (Oracle), © Universidad Internacional de La Rioja (UNIR) PostgreSQL (libre), entre otros. Sin embargo, SQL no es el único lenguaje que implementa el modelo relacional, existen lenguajes como QBE y Datolog que también están pensados para implementar un modelo relacional. Programación de Bases de Datos 33 Tema 1. Ideas clave  QBE es un lenguaje gráfico mediante el cual se realizan consultas similares a tablas, es muy usado en sistemas de bases de datos para computadoras personales.  Datalog hereda la sintaxis del lenguaje Prolog, de manera comercial no es popular, pero tiene un nicho de uso entre la comunidad científica. Figura 24. Características Datalog. (Esta foto de autor desconocido está bajo licencia CC BY-SA). © Universidad Internacional de La Rioja (UNIR) Programación de Bases de Datos 34 Tema 1. Ideas clave 1.6. Diseño de bases de datos relacionales Cuando se diseña una base de datos relacional el principal objetivo que se debe cumplir es obtener un conjunto de esquemas relacionales donde se permita el almacenamiento de información evitando redundancias y que, al mismo tiempo, la base datos sea lo suficientemente completa para obtener información relevante y de manera sencilla. Siempre se debe tener en cuenta los objetivos del cliente y con eso pensar la forma más sintetizada de cumplir las necesidades de la aplicación en cuestión del almacenamiento de datos. Figura 25. Ejemplo de diseño esquemático de una base de datos. (Esta foto de autor desconocido está bajo licencia CC BY-SA). © Universidad Internacional de La Rioja (UNIR) Las bases de datos son una pieza fundamental dentro de las tecnologías de la información actual; hoy en día los datos se han convertido en un importante recurso por parte de las naciones. El aprender a usarlas es un proceso que exige dedicación y Programación de Bases de Datos 35 Tema 1. Ideas clave constancia, es importante comenzar a practicar buscando ejemplos de implementaciones. Actualmente existen múltiples herramientas que vuelven más práctico el desarrollo de proyectos enlazados con una capa de datos. 1.7. Cuaderno de ejercicios  Ejercicio 1. Crea una base de datos (Schema). Respuesta: CREATE SCHEMA `test`;  Ejercicio 2. Crea una tabla para tu base de datos. Respuesta: CREATE TABLE `test`.`persona` ( `id_persona` INT NOT NULL PRIMARY KEY AUTO_INCREMENT, `nombre` VARCHAR(45) NOT NULL, `apellido` VARCHAR(45) NOT NULL );  Ejercicio 3. Agrega una columna a la tabla. Respuesta: ALTER TABLE test.persona ADD salario INT NULL;  Ejercicio 4. Inserta 3 valores a la tabla. © Universidad Internacional de La Rioja (UNIR) Respuesta: INSERT INTO persona(nombre, apellido, salario) VALUES('JUAN', 'SANCHEZ', 2000); INSERT INTO persona(nombre, apellido, salario) VALUES('KARLA', 'LARA', 900); Programación de Bases de Datos 36 Tema 1. Ideas clave INSERT INTO persona(nombre, apellido, salario) VALUES('JESUS', 'HERRERO', 1000);  Ejercicio 5. Consulta todas las filas de la tabla. Respuesta: SELECT * FROM persona;  Ejercicio 6. Consulta una sola fila. Respuesta: SELECT * FROM persona WHERE id_persona=2;  Ejercicio 7. Elimina una sola fila. Respuesta: INSERT INTO persona(nombre, apellido, salario) VALUES ('JAIME', 'ALTOZANO', 400); SELECT * FROM persona; DELETE FROM persona WHERE id_persona=4;  Ejercicio 8. Obtén el promedio de la columna de salario. Respuesta: SELECT AVG(salario) FROM persona;  Ejercicio 9. Consulta las filas de la tabla ordenadas. Respuesta: © Universidad Internacional de La Rioja (UNIR) SELECT * FROM persona ORDER BY salario; SELECT * FROM persona ORDER BY salario DESC; Programación de Bases de Datos 37 Tema 1. Ideas clave  Ejercicio 10. Actualiza una fila. Respuesta: UPDATE persona SET nombre = 'Carlos', apellido='Caballero' WHERE id_persona=3; SELECT * FROM persona; © Universidad Internacional de La Rioja (UNIR) Programación de Bases de Datos 38 Tema 1. Ideas clave

Use Quizgecko on...
Browser
Browser