martes, 13 de septiembre de 2011

TALLER 1

EJERCICIO 1

Una nueva clínica de la ciudad tiene la necesidad de crear la forma de manipular y almacenar todo tipo de información que pueda estar relacionada con ella. Para que se pueda realizar el correspondiente trabajo la clínica tiene los siguientes requerimientos:
  • La clínica cuenta con una estructura física de tres torres, dos para hospitalización y cirugías y una para consulta. En cada torre lleva el registro de cada habitación o consultorio, es decir, la ubicación (piso, numero), longitud (ancho y largo), dotación (baño, closets, cama), ventanas(si/no), tipo (habitación o consultorio), valor metro cuadrado, propia o alquilada, nombre del propietario, teléfono del propietario, dirección del propietario, nombre del arrendatario, dirección del arrendatario, teléfono del arrendatario, valor administración, ultima fecha de remodelación. Para la clínica es importante conocer quien está ocupando una habitación y por cuanto tiempo.
  • La clínica ofrece varios tipos de servicios: consulta, hospitalización, exámenes, urgencias, cirugía, cirugía ambulatoria, cuidados intensivos, unidad cardiovascular, fisioterapia. De cada tipo de servicio, según lo requiera, se lleva el registro de: tipo de servicio, cédula del paciente, nombre del paciente, dirección, teléfono, servicio por eps o prepagada, entidad de servicio de salud, exámenes practicados (tipo de examen, costo del examen, medico que practico el examen, máquinas utilizadas, resultados del examen), identificación del médico, especialidad, fecha de consulta o ingreso, fecha de salida, droga utilizada (referencia, nombre de la droga, dosis suministrada); es importante anotar en la mayoría de servicios se tiende a suministrar droga; si es un servicio de hospitalización se lleva la siguiente información (valor habitación, numero de días de hospitalización del paciente, valor servicio de restaurante, valor suministros varios (estos suministros pueden ser guantes, servilletas, pitillos, papel higiénico, etc.), numero de visitas del médico, nombre del médico visitante).
  • Para la clínica es importante mantener activos los pacientes, con su información básica y enfermedades y cirugías antes de prestarle un servicio. Además lleva un historial de los servicios que se le han prestado dejando registro de tipo de servicio, fecha inicio, fecha final, valore del servicio, doctor responsable del servicio.
  • En cuanto a la información que lleva de su personal, esta lo clasifica en: personal administrativo (personal, contabilidad, finanzas), personal de planta (doctores, enfermeras y auxiliares) y personal operativo (cocineros, aseadores y oficios varios). Se tienen las siguientes características importantes: un doctor puede dirigir un área específica como decir: pediatría, cardiología, etc. Para un jefe de área es importante saber que personal está disponible o qué tiene a cargo. Cada doctor se el exige llenar una ficha por cada visita que hace a los pacientes que tiene a su cargo. Esta contiene la siguiente información: hora de visita, paciente atendido, tratamiento sugerido, droga sugerida, estado del paciente. Una enfermera profesional está encargada de la dirección de un piso de la clínica y tiene a su cargo otras enfermeras y auxiliares.
Esta es la información más importante que desea manipular la clínica. Para dar solución a esto usted debe hacer el diseño de forma conceptual a través del modelo E-R, que resuelva el problema anteriormente descrito.

EJERCICIO 2

En la Empresa "Educando S.A" se lleva control de sus Bienes y Servicios. El interés primario es poder hacer que los Bienes se manejen de forma rápida y con el menor grado de error. Para esto quien maneja la sección de "Bienes y Suministros" plantea las siguientes condiciones del negocio para la construcción de una base de datos:
  • La Sección está dividida en tres (3) áreas: COMPRAS, ALMACEN, INVENTARIO.
  • El área de Compras funciona de la siguiente forma:
    • Recibe las solucitudes de compras de las diferentes áreas de la empresa.
    • Cada solicitud tiene un responsable.
    • Cada solicitud es autorizada por el jefe del área y posteriormente por el Director Financiero.
    • Quien realiza una solicitud puede ser responsable de uno o varios centros de costos, con la salvedad de que él como empleado solo está adscrito a uno.
    • De la solicitud se debe diligenciar la siguiente información: Número de la solicitud (consecutivo), Fecha, Responsable (nombre y cédula), Centro de Costos, Rubro presupuestal del cual se descargará la compra. En cada solicitud se pueden discriminar uno o muchos items con la siguiente información: item, nombre del bien, cantidad solicitada, unidad de medida del bien, valor unitario y valor total. Cada solicitud debe ser totalizada.
    • Cada bien es identificado por un código universal que es único y es de caracter devolutivo (suministro) o un bien inmueble.
    • Una vez diligenciada la solicitud es remitida al área de compras para realizar su correspondiente cotización.
    • Las cotizaciones son realizadas con uno o varios proveedores de los bienes solicitados.
    • Una vez la cotización definitiva está lista, se crea una orden contractual que maneja la siguiente información: Número de la orden contractual, nit y nombre del proveedor al cual se le va a realizar la compra, fecha de la orden, monto total de la orden, fecha de entrega. Cada orden puede tener asociado uno o varios items de la solicitud o solicitudes que van a ser despachadas. Cada item tiene la siguiente información: nombre del bien, cantidad solicitada, cantidad despachada, unidad de medida del bien, valor unitario y valor total.
    • La orden de compra es aprobada por el Director Financiero para que sea enviada al proveedor elegido.
  • El área de Almacen funciona de la siguiente forma:
    • Su función principal es recepcionar los bienes que llegan de los proveedores y distribuirlos a las correspondientes áreas que realizaron las solicitudes de compras.
    • Cuando llega un proveedor mercancía, este hace una entrega física de los bienes, los cuales son comparados con la factura que este entrega y con la orden de compra correspondiente. Si esta acción es correcta se registra una entrada de almacen por cada factura relacionada, con la siguiente información: Número de Entrada, Fecha, Número de factura, Proveedor, Total Bienes, Valor Total (los totales deben coincidir con los de la factura). Adjunto a esta se discriminan los items recibidos con la siguiente información:nombre del bien, cantidad entregada.
    • Cuando el almacen decide despachar los bienes a las diferentes áreas solicitantes, registra cada una de las entregas en Salidas de Almacen con la siguiente información: Número de Salida, Empleado responsable del bien a entregar, fecha de salida, fecha de entrega. Por cada entrega se detalla cada uno de los items con la siguiente información: nombre del bien, cantidad entregada.
    • Una entrada de almacen puede generar muchas salidas de almacen, por ejemplo: Pueden ingresar 500 pacas de papel higíenico, pero como se debe repartir entre varias áreas, cada una requiere de una salida de almacen.
  • El área de inventarios funciona de la siguiente forma:
    • Es la encargada de administrar y controlar la ubicación de los bienes dentro de la empresa, por esto antes de que el bien salga del almacen debe ser codificado a través de un código único que lo haga identificable dentro de la empresa.
    • La ubicación del bien se identifica por la siguiente información: responsable del bien, fecha de entrega, dirección del bien (ubicación).
Se debe construir: El modelo Conceptual a través del MER y la Estructura de datos.

martes, 6 de septiembre de 2011

Taller !

LA DISTRIBUIDORA DE PELÍCULAS



Una distribuidora nacional de películas desea mantener cierta información acerca de las películas que va a lanzar próximamente, con el fin de promocionarlas adecuadamente.

Cada cierto tiempo se envían anuncios para insertar en los periódicos. Todos los anuncios incluyen el título de la película, el nombre del actor o actores principales y el nombre del director (consideramos que hay un solo director por película). Además, para las películas que han recibido premios importantes, el anuncio suele incluir un resumen de los mismos, detallando el nombre del certamen, la ciudad donde se celebró y el tipo de premio recibido (mejor director, película, actor, etc). Y algunas veces en los anuncios se reseñan también las mejores críticas, indicando el nombre del periódico o revista donde se publicó la crítica, la fecha de publicación y el autor que firma la crítica.

Otra parte importante de la promoción consiste en hacer de intermediarios entre los medios de comunicación y los participantes en la película, principalmente el director, los productores y, muy especialmente, los actores. Para concertar y planificar las citas es preciso mantener alguna información personal acerca de los intervinientes en la película, como su nombre completo, dirección y teléfono de contacto. Además, con el fin de facilitar la elaboración del material de las entrevistas, se proporciona a los medios de comunicación otros datos relacionados con la película como la aportación económica de cada productor, un resumen del argumento, un listado con el papel concreto que realiza cada actor en la película (hay que señalar que consideramos que un actor en una película hace un único papel) y también el tipo de papel (protagonista, secundario, etc), así como un resumen de los premios recibidos. Es frecuente también que determinados medios de comunicación nos soliciten información más personal sobre los actores como su fecha y lugar de nacimiento, su estado civil y sobre el sueldo que han cobrado por realizar la película.

Las semanas previas al estreno se informa además a los distintos medios de la fecha y el lugar del estreno de la película a nivel nacional.

Anualmente la distribuidora realiza un estudio donde se incluye, entre otras cosas, un ranking de las películas más premiadas por nacionalidad.



LA BIBLIOTECA I



Suponga que quere diseñar una base de datos de una biblioteca y hemos conocido que ésta funciona de la siguiente forma:

En la biblioteca se encuentran, como es natural, una serie de libros que los empleados solicitan a las editoriales. Cando un libro se recibe, se le da de alta, construyéndole una ficha para búsqueda por autor y otra ficha para búsqueda por tema. En ambas fichas aparecen el título del libro, el nombre del autor y su nacionalidad, la editorial a la que pertenece la publicación, el tema sobre el que trata, el ISBN y la estantería de la biblioteca en la que se encuentra. Hay que aclarar que en la biblioteca no se encuentran ejemplares repetidos de ningún libro. Las estanterías de la biblioteca soportan como máximo 100 libros y tienen un número y un lugar asignado dentro de la biblioteca. Un empleado puede solicitar un libro escribiendo una carta de petición a la editorial correspondiente. La dirección a la que ha de dirigir la carta se encuentra en un archivo de editoriales.

Para acceder a los libros de la biblioteca es necesario la posesión de un carnet que acredita a los distintos usuarios. Este carnet se confecciona a cada persona la primera vez que intenta retirar un libro. Cada usuario solo puede tener retirado un libro en cada instante determinado.

En la biblioteca les gustaría disponer de un listado que se lanzaría al final de cada día y en el que aparecería, para cada libro que se encentra retirado, el título, el ISBN, el autor y el número de carnet, nombre y el DNI del usuario que lo mantiene retirado.

Cuando un usuario intenta retirar un libro ha de presentar su carnet para que se tome nota de la retirada. Si el libro que desea ha sido retirado por otro usuario se llama a éste por teléfono indicándole que hay otro usuario que desea el libro para que lo devuelva en caso de que no lo esté utilizando.

Mensualmente se confecciona un inventario actualizado donde se indica para cada libro el nombre, el autor y el lugar de la biblioteca donde se encuentra.

martes, 30 de agosto de 2011

para ver

presentacion

El Modelo de Datos Entidad-Relación

El Modelo de Datos Entidad-Relación

Cuando se utiliza una base de datos para gestionar información, se está plasmando una parte del mundo real en una serie de tablas, registros y campos ubicados en un ordenador; creándose un modelo parcial de la realidad. Antes de crear físicamente estas tablas en el ordenador se debe realizar un modelo de datos.

Se suele cometer el error de ir creando nuevas tablas a medida que se van necesitando, haciendo así el modelo de datos y la construcción física de las tablas simultáneamente. El resultado de esto acaba siendo un sistema de información parcheado, con datos dispersos que terminan por no cumplir adecuadamente los requisitos necesarios.

Entidades y Relaciones

El modelo de datos más extendido es el denominado ENTIDAD/RELACIÓN (E/R) En el modelo E/R se parte de una situación real a partir de la cual se definen entidades y relaciones entre dichas entidades:

  • Entidad.- Objeto del mundo real sobre el que queremos almacenar información (Ej: una persona). Las entidades están compuestas de atributos que son los datos que definen el objeto (para la entidad persona serían DNI, nombre, apellidos, dirección,...). De entre los atributos habrá uno o un conjunto de ellos que no se repite; a este atributo o conjunto de atributos se le llama clave de la entidad, (para la entidad persona una clave seria DNI). En toda entidad siempre hay al menos una clave que en el peor de los casos estará formada por todos los atributos de la tabla. Ya que pueden haber varias claves y necesitamos elegir una, lo haremos atendiendo a estas normas:
    • Que sea única.
    • Que se tenga pleno conocimiento de ella.- ¿Por qué en las empresas se asigna a cada cliente un número de cliente?.
    • Que sea mínima, ya que será muy utilizada por el gestor de base de datos.
  • Relación.- Asociación entre entidades, sin existencia propia en el mundo real que estamos modelando, pero necesaria para reflejar las interacciones existentes entre entidades. Las relaciones pueden ser de tres tipos:
    • Relaciones 1-1.- Las entidades que intervienen en la relación se asocian una a una (Ej: la entidad HOMBRE, la entidad MUJER y entre ellos la relación MATRIMONIO).
    • Relaciones 1-n.- Una ocurrencia de una entidad está asociada con muchas (n) de otra (Ej: la entidad EMPERSA, la entidad TRABAJADOR y entre ellos la relación TRABAJAR-EN).
    • Relaciones n-n.-Cada ocurrencia, en cualquiera de las dos entidades de la relación, puede estar asociada con muchas (n) de la otra y viceversa (Ej: la entidad ALUMNO, la entidad EMPRESA y entre ellos la relación MATRÍCULA).

Representación gráfica de Entidades y Relaciones

Para asimilar fácilmente un diseño de datos cuando se emplea el modelo E/R se utilizan los siguientes elementos gráficos:



La utilización de estos elementos dará como resultado lo que se denomina el esquema entidad-relación de la base de datos. Los ejemplos que se incluyen en el apartado anterior, gráficamente quedarían como sigue:



¿Cómo se pasa del esquema E/R a las tablas?

Para cada entidad del esquema se creará una tabla con tantos campos como atributos tenga la entidad. Ejemplo:

Tabla 'TRABAJADOR'

DNI NUM_SS nombre-apellidos ...
11111111 XXXXXXXXXXX Fulano de tal ...
22222222 YYYYYYYYYYY Mengano de cual ...
...... ...... ...... ......

Las relaciones 1-1 se pueden reflejar incluyendo en una de las dos tablas un campo en el que poder colocar la clave del elemento de la otra tabla con el que se está relacionado. Ese nuevo campo que se incluye en la tabla recibe el nombre de clave ajena. Ejemplo:

Tabla 'HOMBRE'

DNI Nombre ...
11111111 ... ...
22222222 ... ...
... ... ...

Tabla 'MUJER'

DNI Nombre ... DNI-ESPOSO
33333333 ... ... 11111111
44444444 ... ... (nulo)
... ... ... ...

Donde el campo DNI-ESPOSO es clave ajena de la tabla HOMBRE. Aquí hay que hacer notar que el campo DNI-ESPOSO puede tomar o bien un valor nulo, en el caso de aquellas mujeres que no estén casadas, o bien el valor de alguno de los DNI de la tabla HOMBRE, en el caso de las mujeres casadas; en este segundo caso, ese DNI (la clave ajena) no se deberá repetir en ningún otro registro de la tabla MUJER.

Las relaciones 1-n se representan de forma muy parecida a como se ha explicado para las relaciones 1-1. La diferencia está en que ahora no es indiferente donde se coloque la clave ajena, esta debe estar obligatoriamente en la tabla del 'mucho' (n); y además, para este caso si se permitirá que haya valores repetidos en dicho campo. Ejemplo:

Tabla 'EMPRESA'

CIF Nombre ...
XX-1111-AA ... ...
YY-2222-BB ... ...
... ... ...

Tabla 'TRABAJADOR'

DNI Nombre ... CIF
11111111 ... ... XX-1111-AA
22222222 ... ... YY-2222-BB
33333333 ... ... YY-2222-BB
44444444 ... ... XX-1111-AA
... ... ... ...

Para representar las relaciones n-n en tablas lo que se hace es crear una nueva tabla solamente para la relación. Esta nueva tabla tendrá dos claves ajenas y su propia clave estará formada por la unión de las claves ajenas. Ejemplo:

Tabla 'ALUMNO'

DNI Nombre ...
11111111 ... ...
22222222 ... ...
... ... ...

Tabla 'ASIGNATURA'

COD-ASIGNATURA Nombre ...
01 ... ...
02 ... ...
... ... ...

Tabla 'MATRÍCULA'(esta es la relación)

DNI COD_ASIGNATURA NOTA
11111111 01 7.5
11111111 02 6.25
22222222 01 5.5
22222222 02 8
... ... ...

En la tabla MATRÍCULA es donde se refleja la relación. La clave de dicha tabla está formada por los campos DNI y COD-ASIGNATURA ; y cada uno de ellos es clave ajena, el primero de ALUMNO y el segundo de ASIGNATURA. Hacer ver aquí que la tabla MATRICULAS puede tener más campos además de los que son clave ajena como ocurre en el ejemplo; la tabla añade además un campo NOTA.





enlace al taller http://tickipedia.com/ejercicios/Taller1.pdf

lunes, 22 de noviembre de 2010

Base datos parcial

Saludos estudiantes.


Bueno para el parcial es necesario crear una base de datos con las siguientes instrucciones:


click aqui para acceder al script SQL.


Genere las consultas necesarias para realizar el informe por el area representada en un color.

Planilla general grupo:P4 periodo: 1 Año: 2010


Nombre Estudiante EDU REL EDU FIS EDU ART INFO INGL CIE NAT DEMO HIST ORTO LENG GEOM ARIT
1 Agamez Watts Julián Andrés 8.1 7.2 9.2 8.5 8.1 7.83 9 8.12 8.4 7.94 7.7 8.1
2 Agualimpia Martelo Andrea 8.3 8 8.3 8.2 7.6 5.37 9 7.16 7.98 7.05 7 5.1
3 AGUIRRE THORRENS JESUS DANIEL 9.5 8.4 9.1 8.7 8.6 6.51 9.2 9 8.42 8.59 9.1 8.2
4 Araujo Martínez Nadim Said 9.4 7.9 9.1 8.5 9.4 8.3 9.7 9.2 9.45 9.44 9.4 9.6
5 Arias Palacio Alejandro 8.8 8 8.9 8.3 7.3 6.88 8.5 8.5 8.93 8.32 7.5 7.3
6 Arraut Arango Inés Alcira 9 7.7 9.2 8.9 8.5 6.99 9.1 9 9.33 8.54 8.5 7.2
7 Ávila Gómez Marianella 8.8 0 9 8 6.6 4.53 7.6 6.23 5.92 8.39 6.7 7.5
8 Ballestas Janaceth Gabriel De Jesús 9 8 9.2 8.7 8.4 8.57 8.9 8.99 9.18 8.32 9.2 8.5
9 Blanco Pulgarin Ruth Nohemi 9.3 7.8 9.3 9.1 8.2 7.28 8.7 7.86 8.87 9.01 6.8 6.6
10 Blanco Tuirán María Alejandra 8.5 7.8 9 8.9 8.3 6.64 8.9 6.19 8.43 7.74 7.5 7.5
11 Caballero Guerra Camilo Jose 8.5 7.7 8.9 8.3 7.2 8.5 9.3 8.8 9 8.3 9.4 8.6
12 Cabarcas López Angie Teresa 7.8 8 9 8.8 7.8 6.86 9.2 7.87 9 6.61 6.6 6.1
13 CAÑON MATALLANA LUIS MATEO 7.6 4.6 8.8 8.5 6.1 6.5 7.7 8 7.81 8.39 7.4 8.3
14 Carazo Angulo Maria José 9.2 8 9.4 8.3 8.4 7.88 9.2 9 9.07 8.86 8.9 8.4
15 Carrillo Julio Camila Paola 9.7 8 9.2 8.8 9.6 8.28 9.6 9.36 9.16 9.15 8.9 9.1
16 Cásseres Cumplido Julián José 8.5 7.5 9.2 8.5 8.9 6.59 9.4 8.75 9.01 9.32 8.7 8.6
17 Castilla Cuadro Harlinton 8.8 7.9 9 7.9 7.8 6.66 9 8 8.62 8.47 7.6 6.6
18 Castilla Lambis Karen Margarita 9.5 8.2 9.3 8.3 9.8 8.24 9.4 9.25 9.15 9.57 9.4 9.2
19 CORCHO YEPES MARIA CAMILA 9 8.2 9.4 9.5 9.3 9.33 9.8 9 9.16 8.33 8.3 8.9
20 Diz Rodríguez Any Luz 9.3 8 9.4 8.7 9.2 8.25 9.5 9.1 9.09 8.89 9.3 8.9
21 FERNANDEZ LOPEZ FREDDY JOSE 9.4 8 9.2 8.7 9.1 7.69 9.4 9.1 9 8.88 8.7 9.2
22 FERNANDEZ MARENCO JAIME ANDRES 9.1 8.2 9.2 8.7 9.3 7.3 9.6 8.9 8.74 8.33 7.8 9.2
23 Florián Reinel María Alejandra 9.3 8 9.5 9.3 9.2 8.31 9.5 9.1 9.06 9.51 9.4 8.9
24 Fortich Peña Daniela Paola 9.2 8 8.6 8.4 8.2 7.69 9.4 7.59 8.62 8.64 7.5 7.3
25 García Cañas Daniela Maria 8.5 7.4 9.2 8.2 8.1 8.55 9.1 8 8.93 8.69 8.6 6.9
26 Godoy Porto Andrés Felipe 8.2 7.4 9 8.1 7.7 6.55 8.2 7.1 8.3 7.44 8.2 7.3
27 Hernández Martínez Maria Camila 7.5 7.7 9.2 8.9 8 4.89 9.4 8.98 9.01 8.82 8.4 9.1
28 Jaramillo Mejia Jairo Andres 7.8 7.5 9 8.1 6 6.09 8.7 7.1 7.66 7.81 6.7 7.3
29 León Ibáñez Fabián Elías 7.8 7.2 9.3 7.8 6.8 5.66 7.3 7.71 8.28 7.91 7.6 7.1
30 Machacon Pizarro Melanie 8.7 8.3 9.5 8.7 7.7 6.58 8.9 8 8.47 8.11 7.1 5.3
31 Martínez Quintero Leslie Ann 9.3 7.8 9 9.1 9.6 9.01 9.1 9.1 9.13 8.79 8.4 7.3
32 Mendoza Carmona Laura Marcela 9.5 8.3 9.4 8.5 9.9 9.51 9.5 9.6 9.53 9.31 9.7 8.9
33 Mestre Camargo Saray Andrea 9.6 8.2 9.3 9.3 9.9 8.96 9.7 9.2 9.16 9.53 9.3 9.1
34 Moyano Díaz Lucia Carolina 9.1 8 9.4 8.6 9.6 8.07 9.6 9.2 9.04 8.91 8.7 7.7
35 Najera Hernández Moisés David 8.7 7.2 9.1 8.1 9.3 8.73 9 9.22 9.15 9.03 9.6 9.2
36 Peña Paso María Camila 8 7.4 9.5 8.7 7.6 7.83 9.2 6 6.8 6.96 8.1 7.1
37 Pérez Arias Diego Andrés 7.5 7.4 8.9 8.3 5.9 5.81 8.5 5.81 6.15 7.09 6.7 5.9
38 Pinto Culma Sissy Janedys 7.4 7.4 9.2 8.9 8.8 7.21 8.7 9.12 9.08 8.79 9 7.5
39 Quintero Rodríguez Pamela 8 8 9.3 8.9 6.1 5.82 9.1 5.76 7.96 7.2 7.7 5.9
40 Ramos Martelo Roger 7.3 7.3 8.3 8.3 7.7 5.59 8.3 8 8.28 8 7.4 7.2
41 RIOS HERNANDEZ TONY ENRIQUE 8.6 7.6 9.1 8.3 8.5 6.53 8.6 8.31 8.74 8.81 8 8.7
42 Rolon Cabrales Melannie 8.4 7.7 9.4 9.1 8 6.52 9.3 8.01 8.19 8.59 8.4 7.7
43 Ruiz Solano Valeria 8.4 8 9.2 9.1 8.8 6.98 9.2 6.54 8.36 7.94 7.7 7.2
44 Sarmiento Gutiérrez Luis Felipe 9.1 8 9.4 8.2 9.5 9.04 9.5 9.11 9.12 9.1 9.3 8.4
45 Segura Torres José Ángel 8.1 7.5 9.2 7.9 6.9 6.22 8.8 8.65 9.06 8.54 8.6 7.5
46 Silva Díaz Emmanuel 8.3 4.2 9.2 7.1 7.9 5.82 7.7 7 8.99 8.65 7.6 8.2
47 Suevis Lozano Diego Enrique 8.3 8 9.2 7.4 8.6 8.32 8.8 8.47 8.45 7.92 8.7 6.9
48 Triana Castellón Emma 7 7.3 8.7 8.7 7.4 6.51 7.8 7.06 9.02 7.64 8 6.8
49 Valdez Daza Andrea Camila 8.4 8 9.3 8.8 7.5 5.63 8.4 7.98 8.78 8.07 8.4 7
50 Valencia Navarro Andrea Sofía 8.5 8 9.3 8.9 7.6 6.88 7.5 7.21 7.58 8.04 7.9 7

miércoles, 3 de noviembre de 2010

Conteo de filas

Las bases de datos son usadas frecuentemente para responder una pregunta, "¿Con qué frecuencia ocurre un cierto tipo de dato en una tabla?". Por ejemplo, tal vez queremos conocer cuántas mascotas tenemos, o cuántas mascotas tiene cada uno de los propietarios.

Contar el número total de animalitos que tenemos es lo mismo que hacer la siguiente pregunta "¿Cuántas filas hay en la tabla mascotas?" ya que hay un registro por mascota. La función COUNT( ) es la que nos ayuda en esta situación.

mysql> SELECT COUNT(*) FROM mascotas;
+----------+
| COUNT(*) |
+----------+
| 9 |
+----------+
1 row in set (0.00 sec)Si deseamos conocer cuántas mascotas tiene cada uno de los propietarios, la consulta es la siguiente:

mysql> SELECT propietario, COUNT(*) FROM mascotas GROUP BY propietario ;
+-------------+----------+
| propietario | COUNT(*) |
+-------------+----------+
| Arnoldo | 2 |
| Benito | 2 |
| Diana | 2 |
| Juan | 1 |
| Omar | 1 |
| Tomás | 1 |
+-------------+----------+
6 rows in set (0.00 sec)Se debe notar que se ha usado una cláusula GROUP BY para agrupar todos los registros de cada propietario. Si no hacemos esto, obtendremos un mensaje de error:

mysql> SELECT propietario, COUNT(*) FROM mascotas;
ERROR 1140: Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no
GROUP columns is illegal if there is no GROUP BY clauseEn efecto, el uso de la función COUNT( ) en conjunto con la cláusula GROUP BY es muy útil en diversas situaciones. A continuación se muestran algunos ejemplos.

El número de animalitos por especie:

mysql> SELECT especie, COUNT(*) FROM mascotas GROUP BY especie ;
+-----------+----------+
| especie | COUNT(*) |
+-----------+----------+
| Ave | 2 |
| Gato | 2 |
| Hamster | 1 |
| Perro | 3 |
| Serpiente | 1 |
+-----------+----------+
5 rows in set (0.00 sec)El número de animalitos por sexo:

mysql> SELECT sexo, COUNT(*) FROM mascotas GROUP BY sexo:
+------+----------+
| sexo | COUNT(*) |
+------+----------+
| NULL | 1 |
| f | 4 |
| m | 4 |
+------+----------+
3 rows in set (0.01 sec)El número de animalitos por combinación de especie y sexo:

mysql> SELECT especie, sexo, COUNT(*) FROM mascotas GROUP BY especie, sexo ;
+-----------+------+----------+
| especie | sexo | COUNT(*) |
+-----------+------+----------+
| Ave | NULL | 1 |
| Ave | f | 1 |
| Gato | f | 1 |
| Gato | m | 1 |
| Hamster | f | 1 |
| Perro | f | 1 |
| Perro | m | 2 |
| Serpiente | m | 1 |
+-----------+------+----------+
8 rows in set (0.00 sec)No es necesario que se obtengan todos los datos de una tabla cuando se usa la función COUNT( ). Por ejemplo, en la consulta anterior, para ver únicamente los datos de perritos y gatitos, la consulta queda de la siguiente manera:

mysql> SELECT especie, sexo, COUNT(*) FROM mascotas
-> WHERE especie="Perro" OR especie="Gato"
-> GROUP BY especie, sexo;
+---------+------+----------+
| especie | sexo | COUNT(*) |
+---------+------+----------+
| Gato | f | 1 |
| Gato | m | 1 |
| Perro | f | 1 |
| Perro | m | 2 |
+---------+------+----------+
4 rows in set (0.00 sec)O bien, si deseamos el número de animalitos por sexo, y cuyo sexo es conocido:

mysql> SELECT especie, sexo, COUNT(*) FROM mascotas
-> WHERE sexo IS NOT NULL
-> GROUP BY especie, sexo ;
+-----------+------+----------+
| especie | sexo | COUNT(*) |
+-----------+------+----------+
| Ave | f | 1 |
| Gato | f | 1 |
| Gato | m | 1 |
| Hamster | f | 1 |
| Perro | f | 1 |
| Perro | m | 2 |
| Serpiente | m | 1 |
+-----------+------+----------+
7 rows in set (0.00 sec)

Between



Mientras que la palabra clave IN ayuda a las personas a limitar el criterio de selección para uno o más valores discretos, la palabra clave BETWEEN permite la selección de un rango. La sintaxis para la cláusula BETWEEN es la siguiente:

SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" BETWEEN 'valor1' AND 'valor2'

Esto seleccionará todas las filas cuya columna tenga un valor entre 'valor1' y 'valor2'.

Por ejemplo, podríamos desear seleccionar la visualización de toda la información de ventas entre el 06 de enero de 1999, y el 10 de enero de 1999, en la Tabla Store_Information,

Tabla Store_Information
store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
San Francisco 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999

Ingresamos,

SELECT *
FROM Store_Information
WHERE Date BETWEEN '06-Jan-1999' AND '10-Jan-1999'

Tenga en cuenta que la fecha puede almacenarse en diferentes formatos según las diferentes bases de datos. Esta guía de referencia simplemente elige uno de los formatos.

Resultado:
store_name Sales Date
San Diego 250 € 07-Jan-1999
San Francisco 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999