1.2.3 De edición para crear Esquemas y Consultas de Base de Datos Un esquema es un conjunto lógico de tablas, como la base de datos. Usualmente, se piensa en él simplemente como “la base de datos”, pero una base de datos puede contener más de un esquema. Por ejemplo, un esquema estrella está compuesto de tablas, donde una gran y central tabla tiene toda la información importante, con la que se accede, vía claves ajenas, a tablas dimensionales, las cuales tienen información de detalle, y pueden ser usadas en una unión para crear informes detallados. Un esquema en estrella es aquel que tiene una tabla fact de hechos que contiene los datos de análisis, rodeada de las tablas lookup o de dimensiones. Este aspecto, de tabla de hechos (o central) más grande rodeada de radios o tablas más pequeñas es lo que asemeja con una estrella. Una tabla fact o tabla de hechos es la tabla central de un esquema dimensional y contiene los valores de las medidas de negocio. Cada medida se toma mediante la intersección de las dimensiones que la definen. Este esquema es ideal por su simplicidad y velocidad para ser usado para análisis: Data Marts? (Mercado de datos) y EIS (Sistemas de información ejecutiva). Permite acceder tanto a datos agregados como de detalle. Además, permite reducir el número de joins entre tablas y deja a los usuarios establecer jerarquías y niveles entre las dimensiones. Finalmente, es la opción con mejor rendimiento y velocidad pues permite indexar las dimensiones de forma individualizada sin que repercuta en el rendimiento de la base de datos en su conjunto. Esquema Snowflake La diferencia del esquema snowflake comparado con el esquema estrella, está en la estructura de las tablas lock_up: las tablas lock_up en el esquema snowflake están normalizadas. Cada tabla lock_up contiene sólo el nivel que es clave primaria en la tabla y la foreign key de su parentesco del nivel más cercano del diagrama.
Esquema de relación y esquema relacional
En un esquema de relación debemos especificar los atributos y dominios sobre los que se define la relación, así como las restricciones de integridad que se deben cumplir para que la relación constituya una ocurrencia válida del esquema; es decir, aquellas restricciones que afectan a cada uno de los elementos que forman parte del correspondiente esquema de relación (restricciones intraelementos).
Por tanto, podremos definir un esquema de relación como:
R <A:D, S>
Siendo R el nombre de la relación, A la lista de atributos, D los dominios sobre los que están definidos los atributos y S las restricciones de integridad, intraelementos.
El esquema de la base de datos relacional será una colección de esquemas de relación y de restricciones de integridad ínter elementos. Esto se puede representar:
E < {Ri}, {Ii}>
Donde E es el nombre del esquema relacional, {Ri} es el conjunto de esquemas de relación, e {Ii} representa el conjunto de restricciones de integridad ínter elementos.
Podemos definir una base de datos relacional –“variable relacional” siguiendo la terminología de DATE (1995) –como un esquema relacional junto con una ocurrencia válida de dicho esquema, es decir, una ocurrencia que cumple todas las restricciones descritas en el esquema.
La creación de esquemas se lleva a cabo mediante la sentencia:
<Definición de esquemas>::=
CREATE SCHEMA <cláusula de nombre del esquema> [<Especificación del conjunto de caracteres del esquema>] [<Elementos de esquemas>…]
<Cláusula de nombre del esquema> ::=
<Nombre del esquema> | AUTHORIZATION <id. Autorización del esquema› | <Nombre del esquema› AUTHORIZATION <id. Autorización Del esquema>
Podríamos, por ejemplo, crear el siguiente esquema:
CREATE SCHEMA biblioteca
AUTHORIZATION uc3m;
Diferencia entre una simple consulta de fila y una múltiple consulta de filas
Primero, para cubrir lo obvio, una consulta de una sólo fila es una consulta que sólo devuelve una fila como resultado, y una consulta de múltiples filas es una consulta que devuelve más de una fila como resultado. Si una consulta devuelve una fila o más esto depende enteramente del diseño (o esquema) de las tablas de la base de datos. Como escritor de consultas, debes conocer el esquema, estar seguro de incluir todas las condiciones, y estructurar tu sentencia SQL apropiadamente, de forma que consigas el resultado deseado (aunque sea una o múltiples filas). Por ejemplo, si quieres estar seguro que una consulta de la tabla Propietarios _ antigüedades devuelve sólo una fila, considera una condición de igualdad de la columna de la clave primaria, ID _ propietario. Tres razones vienen inmediatamente a la mente de por qué esto es importante. Primero, tener múltiples filas cuando tú sólo esperabas una, o viceversa, puede significar que la consulta es errónea, que la base de datos está incompleta, o simplemente, has aprendido algo nuevo sobre tus datos. Segundo, se estás usando una sentencia Update o Delete, debes de estar seguro que la sentencia que estás escribiendo va a hacer la operación en la fila (o filas) que tú quieres… o sino, estarás borrando o actualizando más filas de las que querías. Tercero, cualquier consulta escrita en SQL embebido debe necesitar ser construida para completar el programa lógico requerido. Si su consulta, por otra parte, devuelve múltiples filas, deberás usar la sentencia Fetch, y muy probablemente, algún tipo de estructura de bucle para el procesamiento iterativo de las filas devueltas por la consulta. ¿Hay algún filtro en general que pueda usar para hacer mis consultas SQL y bases de datos mejores y más rápidas (optimizadas)? Puedes intentar, si puedes, evitar expresiones en Selects, tales como SELECT Columna A? + Columna B, etc. La consulta optimizada de la base de datos, la porción de la DBMS que determina el mejor camino para conseguir los datos deseados fuera de la base de datos, tiene expresiones de tal forma que puede requerir más tiempo recuperar los datos que si las columnas fueran seleccionadas de forma normal, y las expresiones se manejaran programáticamente. • Si estas usando una unión, trata de tener las columnas unidas por índices (desde ambas tablas). • Cuando tengas dudas, índice. • A no ser que tengas múltiples cuentas o consultas complejas, usa COUNT (*) (el número de filas generadas por la consulta) mejor que COUNT (Nombre _ columna). Escribiendo y Editando Consultas Manualmente La tarea realizada mas común con el MySQL Query Browser es ejecutar consultas y analizar sus resultados. La manera más directa de crear consultas es escribirlas directamente sobre el área de consultas. Con forme se va escribiendo en el área de resultados, las porciones de sintaxis de SQL (SELECT, FROM, WHERE, etc.) se van resaltando en azul. Una vez que se escriba la consulta, el área de consultas se expandirá desde tres líneas iniciales de altura a un máximo de diez líneas de altura. Para espacio adicional, usted puede presionar la tecla F11 para maximizar el área de consultas. También puede seleccionar la opción Maximizar Área de Consulta de el menú Ver para maximizar el área de consultas. Cuando una consulta es maximizada, el número de líneas es desplegado para la consulta, y el área de consulta puede ser redimensionada haciendo click y arrastrando la línea que divide el área de consulta con el área de resultado. Para reestablecer el área de consultas, presione nuevamente la tecla F11. Una vez que capturada la consulta, dar un click en el botón Ejecutar y los resultados de la consulta serán desplegados en el área de resultados. Usted puede también presionar las teclas ctrl.+ Aceptar para ejecutar la consulta. Si hay algún error en su consulta un área de errores aparecerá en la parte de abajo de el área de resultados desplegando el mensaje de error y el código del error. En adición para cargar resultados de consultas en el área de resultados activa, usted puede también crear una nueva área de resultado para los resultados de su consulta o dividir su área de resultado actual y cargar los resultados dentro de la nueva sección. Para ejecutar una consulta y cargar los resultados en un área de resultados nueva click en la flecha hacia abajo en la parte baja del botón Ejecutar y escoja la opción Ejecutar en nueva Pestaña o presione las teclas ctrl.+Shift+Aceptar. Para dividir el área de resultado activa y desplegar los resultados de la consulta dar click en la flecha hacia abajo en la parte baja del botón Ejecutar y escoja la opción Dividir Pestaña y Ejecutar o presione las teclas ctrl.+Alt+Enter. Usted debe establecer una base de datos por defecto antes de que usted pueda consultar la base de datos satisfactoriamente. Puede establecer la base de datos por defecto en la pantalla de conexión, o click-derecho en la base de datos en el navegador de base de datos y eligiendo la opción Hacer Esquema por Defecto, o eligiendo la opción Cambiar el esquema por defecto del menú Archivo. Editando Consultas desde una Herramienta de Desarrollo En orden de ayudar a programadores a optimizar y depurar sus consultas más eficientemente, el MySQL Query Browser puede copiar consultas desde el código de aplicaciones usando su entorno (IDE) favorito. Esta funcionalidad está solamente disponible para la versión de MySQL Query Browser para Windows. El siguiente código PHP será usado como ejemplo:
$SQL = “SELECT Id, Name, Country FROM City” .
“WHERE Name LIKE $cityname”;
Para copiar la consulta dentro de el MySQL Query Browser, copie el bloque de código (incluyendo la porción de asignación), click derecho dentro de el área de consultas del MySQL Query Browser, y elegir la opción Pegar Contenido del portapapeles como código PHP. Las porciones que no son consulta serán removidas y la consulta será pegada dentro del área de consultas. Los elementos dinámicos de la consulta son convertidos en parámetros locales, visibles en el navegador de parámetros: SELECT Id, Name, Country FROM City WHERE Name LIKE: cityname Para establecer un valor a un parámetro local, seleccione el valor en el navegador de parámetros y presione F2. Usted también puede dar doble-click sobre el valor para editarlo. El valor que asigne será usado cuando la consulta sea ejecutada. Después de editar una consulta, click-derecho dentro del área de consultas y elegir la opción Copiar Consulta Como Código PHP. El código PHP que corresponde será re-insertado junto con la consulta modificada. Esta funcionalidad permite editar consultas rápidamente mientras programa.
lic. Adrian jimenez cerino