Está en la página 1de 3

¿Qué tablas se necesitan?

Para la primera pregunta debe relacionar los requerimientos de datos


en columnas y tablas. Debe identificar las columnas que se necesitan para la salida y las tablas
intermedias necesarias para conectar otras tablas. Por ejemplo, si usted quiere enlazar las tablas
Student y Offering, debe incluir la tabla Enrollment, ya que proporciona la conexión entre estas
tablas. Las tablas Student y Offering no se pueden enlazar de forma directa. Todas las tablas
necesarias para la consulta deben enlistarse en la cláusula FROM. ¿Cómo se relacionan las tablas?
Segunda pregunta: la mayoría de las tablas se combinan por un operador de enlace. En el capítulo
9 utilizará los operadores del enlace externo (outer join), diferencia y división para combinar las
tablas. Por ahora, sólo enfóquese en la combinación de las tablas con enlaces. Requerirá
identificar las columnas relacionadas para cada enlace. En la mayoría de los enlaces, la llave
primaria de la tabla madre se relaciona con una llave externa de una tabla hija relacionada. En
algunas situaciones, la llave primaria de la tabla madre contiene muchas columnas. En este caso
necesita relacionar ambas columnas. En ocasiones, las columnas relacionadas no involucran una
combinación de llave primaria con llave foránea. Puede realizar un enlace mientras las columnas
relacionadas tengan tipos de datos compatibles. Por ejemplo, cuando se enlazan las tablas de
clientes de diferentes bases de datos es posible que no tengan una llave primaria común. Quizá
sea necesario el enlace de otros campos, tales como nombre, dirección, etcétera. ¿La salida se
relaciona con filas individuales o con grupos de filas? Para la tercera pregunta, revise los cálculos
que involucren funciones agregadas en la sentencia del problema. Por ejemplo, el problema “liste
los nombres y los promedios de los grados de los estudiantes” contiene un cálculo agregado. Los
problemas que se refieren a una función agregada indican que la salida se relaciona con un grupo
de filas. Por ende, la sentencia SELECT requiere una cláusula GROUP BY. Si el problema contiene
condiciones con funciones agregadas, una cláusula HAVING debe Sentencia del problema
Representación de base de datos Sentencia en un lenguaje de base de datos TABLA 4.20 Resumen
de las preguntas críticas para la generación de consultas Preguntas Consejos para el análisis ¿Qué
tablas se necesitan? Relacione las columnas con los requerimientos de los datos de salida y con las
condiciones a probar. Si las tablas no están relacionadas directamente, identifique las tablas
intermedias para proveer una ruta de enlace entre las tablas. ¿Cómo se relacionan las tablas? La
mayoría de las tablas se combinan mediante el uso de una llave primaria de una tabla madre
relacionada con una llave externa de una tabla hija. Los problemas más difíciles pueden incluir
otras condiciones de enlace, al igual que otros operadores de combinación (enlace externo,
diferencia o división). ¿La salida requiere de la relación Identifique las funciones agregadas
utilizadas en los de filas individuales requerimientos de los datos de salida y en las condiciones a o
de filas agrupadas? probar. La sentencia SELECT requiere una cláusula GROUP BY si se necesitan
funciones agregadas. La cláusula HAVING es necesaria si las condiciones usan las funciones
agregadas. FIGURA 4.3 Proceso de generación de consultas Capítulo 4 Formulación de consultas
con SQL 103 acompañar a la cláusula GROUP BY. Por ejemplo, el problema “liste el número de
cursos ofrecidos, impartidos con más de 30 estudiantes”, necesita una cláusula HAVING con una
condición que incluya la función COUNT. Después de responder estas preguntas, estará listo para
convertir la representación de la base de datos en una sentencia del lenguaje de base de datos.
Para ayudarle e

Esta sección finaliza con un comentario acerca de las tres principales lecciones del proceso
conceptual de evaluaciones. Es más importante recordar estas lecciones que los detalles
específicos del proceso conceptual. • La conceptuación de GROUP BY ocurre después de la
sentencia WHERE. Si se tiene algún error en la sentencia SELECT que incluya la sentencia WHERE o
GROUP BY, el problema probablemente esté en la cláusula WHERE. Puede revisar los resultados
intermedios después de la cláusula WHERE al ejecutar la sentencia SELECT sin la cláusula GROUP
BY. • La agrupación sólo sucede una vez en el proceso de evaluación. Si su problema incluye más
de un cálculo independiente agregado, puede que necesite más de una sentencia SELECT. • El uso
de tablas de los ejemplos puede ayudarle a analizar problemas difíciles. Generalmente no es
necesario revisar el proceso de evaluación por completo. En su lugar, use tablas de ejemplo que le
ayuden a comprender sólo la parte difícil. La sección 4.5 y el capítulo 9 ilustran el uso de tablas de
ejemplo para ayudarle a analizar problemas difíciles. 4.4 Preguntas críticas para la generación de
consultas preguntas críticas para la generación de consultas proporcionan una lista para convertir
la sentencia de algún problema en una representación de base de datos con tablas, columnas,
operaciones para conectar tablas y requerimientos de agrupación de filas. El proceso de
evaluación conceptual ilustrado en la figura 4.2 debe ayudarle a entender el significado de la
mayoría de las sentencias SELECT, pero probablemente no le ayude a generar consultas. La
generación de consultas incluye la conversión de la sentencia de algún problema en una sentencia
de lenguaje de base de datos, como SQL, tal como se muestra en la figura 4.3. Entre la sentencia
del problema y la sentencia del lenguaje de base de datos, usted transforma la sentencia del
problema en una representación de base de datos. Comúnmente, la parte más difícil es convertir
la sentencia del problema en una representación de base de datos. Esta conversión incluye un
conocimiento detallado de las tablas y sus relaciones, así como de mucha atención a posibles
ambigüedades de la sentencia del problema. Las preguntas críticas que se presentan en esta
sección proporcionan un proceso estructurado que convierte la sentencia del problema en una
representación de base de datos. En la conversión de la sentencia del problema en una
representación de base de datos, usted debe responder alg

de filas en lugar de renglones individuales. Si la salida se relaciona con registros individuales en


lugar de grupos de registros, se omite la cláusula GROUP BY. Cuando se utiliza la cláusula GROUP
BY debe incluir cada columna de la cláusula SELECT, excepto las expresiones que involucran a una
función agregada.4 La tabla 4.15 muestra el resultado del paso 2 ordenado por CourseNo y
O.OfferNo. Observe que las columnas han sido reacomodadas para facilitar la lectura del
resultado. 4. El cuarto paso solamente es necesario si existe una cláusula GROUP BY. El cuarto
paso calcula la(s) función(es) agregada(s) para cada grupo de filas y reduce cada grupo a una sola
fila. Todos los registros de un grupo tienen los mismos valores para las columnas GROUP BY. En la
tabla 4.16 existen tres grupos {, , }. Las columnas calculadas se suman para las funciones agregadas
de las cláusulas SELECT y HAVING. La tabla 4.16 muestra dos columnas nuevas para la función AVG
de la cláusula SELECT, así como para la función COUNT de la cláusula HAVING. Observe que las
columnas restantes se eliminan en este punto, ya que no se necesitan en los siguientes pasos. 5. El
quinto paso elimina las filas que no satisfacen la condición de la cláusula HAVING. La tabla 4.17
muestra que el primer registro de la tabla 4.16 se elimina porque no cumple con la condición de la
cláusula HAVING. Observe que la cláusula HAVING especifica las operaciones de restricción para
grupos o filas. La cláusula HAVING no puede presentarse sin que la preceda antes la cláusula
GROUP BY. Las condiciones de la cláusula HAVING siempre se relacionan con grupos de filas y no
con filas individuales. Comúnmente las condiciones de la cláusula HAVING incluyen funciones
agregadas. 6. El sexto paso ordena los resultados de acuerdo con la cláusula ORDER BY. Observe
que la cláusula ORDER BY es opcional. La tabla 4.18 muestra el resultado de la tabla después de
haberla ordenado. 7. El séptimo paso realiza el proceso de una proyección final. Las columnas que
aparecen en el resultado del paso 6 se eliminan cuando no aparezcan en la cláusula SELECT. La
tabla 4.19 (idéntica a la tabla 4.12) muestra el resultado obtenido después de la proyección del
paso 6. La columna Count(*) se elimina ya que no aparece en la sentencia SELECT. El séptimo paso
(proyección) ocurre después del sexto paso (ordenación), ya que la cláusula ORDER BY puede
incluir las columnas que no aparecen en la lista de la sentencia SELECTcompuestas por pixeles. Los
pixeles están dispuestos en forma de una matriz rectangular de puntos casi perfectamente
cuadrados y cada uno puede brillar de un color independiente de los demás. A continuación se
presenta una imágen que se usará para esquematizar en este capítulo cómo funcionan algunos
algoritmos: La cuadrícula 3.1 representa un grupo de nueve pixeles de una computadora. Las
líneas gruesas de guiones representan las fronteras entre dichos pixeles y las intersecciones de las
líneas continuas delgadas representan los centros geométricos de ellos. Bien, habiendo
establecido esta nomenclatura, se procederá a describir uno de los mejores algoritmos de dibujo
de líneas rectas: El algoritmo de línea de punto medio (también conocido como algoritmo de línea
de Bresenham). 3.4. Algoritmo de línea de punto medio Antes de abordar la resolución general del
dibujo de segmentos de recta, se abordará un caso particular más sencillo que permite describir la
lógica del algoritmo.

También podría gustarte