UNIDAD 3-BASE DE DATOS

76
UNIDAD 3 EL MODELO RELACIONAL Modelos y Bases de Datos Ingeniería en Sistemas de la Información

Transcript of UNIDAD 3-BASE DE DATOS

Page 1: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

nUNIDAD 3EL MODELO RELACIONAL

Page 2: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Modelo relacional

La ventaja del modelo relacional es que los datos se almacenan, al menos conceptualmente, de un modo en que los usuarios entienden con mayor facilidad. Los datos se almacenan como tablas y las relaciones entre las filas y las tablas son visibles en los datos. Este enfoque permite a los usuarios obtener información de la base de datos sin asistencia de sistemas profesionales de administración de información.

Page 3: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Modelo relacional

Las características más importantes de los modelos relacionales son:1. Es importante saber que las entradas en la tabla tienen un solo valor (son atómicos); no se

admiten valores múltiples, por lo tanto la intersección de un renglón con una columna tiene un solo valor, nunca un conjunto de valores.

2. Todas las entradas de cualquier columna son de un solo tipo. Por ejemplo, una columna puede contener nombres de clientes, y en otra puede tener fechas de nacimiento. Cada columna posee un nombre único, el orden de las comunas no es de importancia para la tabla, las columnas de una tabla se conocen como atributos. Cada atributo tiene un dominio, que es una descripción física y lógica de valores permitidos.

3. No existen 2 filas en la tabla que sean idénticas.

4. La información en las bases de datos son representados como datos explícitos, no existen apuntadores o ligas entre las tablas.

Page 4: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Modelo relacional

En el enfoque relacional es sustancialmente distinto de otros enfoques en términos de sus estructuras lógicas y del modo de las operaciones de entrada/salida. En el enfoque relacional, los datos se organizan en tablas llamadas relaciones, cada una de las cuales se implanta como un archivo. En terminología relacional una fila en una relación representa un registro o una entidad; Cada columna en una relación representa un campo o un atributo. Así, una relación se compone de una colección de entidades(o registros) cuyos propietarios están descritos por cierto número de atributos predeterminados implantados como campos.

Page 5: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Estructura de las bases de datos relacionales

La arquitectura relacional se puede expresar en términos de tres niveles de abstracción: nivel interno, conceptual y de visión. La arquitectura relacional consta de los siguientes componentes:

Page 6: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Estructura de las bases de datos relacionales

Modelo relacional de datos: En el nivel conceptual, el modelo relacional de datos está representado por una colección de relaciones almacenadas. Cada registro de tipo conceptual en un modelo relacional de datos se implanta como un archivo almacenado distinto.Submodelo de datos: Los esquemas externos de un sistema relacional se llaman submodelos relacionales de datos; cada uno consta de uno a más escenarios (vistas) para describir los datos requeridos por una aplicación dada. Un escenario puede incluir datos de una o más tablas de datos. Cada programa de aplicación está provisto de un buffer ("Area de trabajo de usuario") donde el DBMS puede depositar los datos recuperados de la base para su procesamiento, o puede guardar temporalmente sus salidas antes de que el DBMS las escriba en la base de datos.

Page 7: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Estructura de las bases de datos relacionales

Esquema de almacenamiento: En el nivel interno, cada tabla base se implanta como un archivo almacenado. Para las recuperaciones sobre las claves principal o secundaria se pueden establecer uno o más índices para accesar un archivo almacenado.Sublenguaje de datos: Es un lenguaje de manejo de datos para el sistema relacional, el álgebra relacional y cálculo relacional, ambos lenguajes son "relacionalmente completos", esto es, cualquier relación que pueda derivarse de una o más tablas de datos, también se puede derivar con u solo comando del sublenguaje. Por tanto, el modo de operación de entrada/Salida en un sistema relacional se puede procesar en la forma: una tabla a la vez en lugar de: un registro a la vez; en otras palabras, se puede recuperar una tabla en vez de un solo registro con la ejecución de un comando del sublenguaje de datos.

Page 8: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Llave primaria• En el diseño de bases de datos relacionales, se llama llave primaria a

un campo o a una combinación de campos que identifica de forma única a cada fila de una tabla. Una llave primaria comprende de esta manera una columna o conjunto de columnas. No pueden haber dos filas en una tabla que tengan la misma llave primaria.

Page 9: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Llave primaria(cont.)• Una llave primaria debe identificar unívocamente a todas las posibles filas de una tabla y no solo a las filas que se encuentran en un momento determinado. Ejemplos de llaves primarias son DNI (asociado a una persona) o ISBN (asociado a un libro). Las guias telefónicas y diccionarios no pueden usar nombres o palabras o números del sistema decimal de Dewey como llaves candidatas, porque identifican unívocamente números de teléfono o palabras.

Page 10: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Llave primaria(cont.)• Una llave primaria es un caso especial de llave única. La mayor diferencia es que para claves únicas, no se impone automáticamente la restricción implícita NOT NULL, mientras que para llaves primarias, sí. Así, los valores en columnas de clave única pueden o no ser NULL. Otra diferencia es que las llaves primarias deben definirse por medio de otra sintaxis.

Page 11: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Llave primaria(cont.)El modelo relacional, según se lo expresa mediante cálculo relacional y álgebra relacional, no distingue entre llave primaria y otros tipos de claves. Las llaves primarias fueron agregadas al estándar SQL principalmente para conveniencia del programador.Tanto llaves únicas como claves primarias pueden referenciarse con llaves foráneas.

Page 12: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Criterios de selección de una buena llave

Para escoger la clave primaria entre las claves candidatas se pueden seguir estas indicaciones:

1· Escoger la clave candidata que tenga menos atributos.

2· Escoger la clave candidata cuyos valores no tengan probabilidad de cambiar en el futuro.

3· Escoger la clave candidata cuyos valores no tengan probabilidad de perder la unicidad en el futuro.

4· Escoger la clave candidata con el mínimo número de caracteres (si es de tipo texto).

5· Escoger la clave candidata más fácil de utilizar desde el punto de vista de los usuarios..

Page 13: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

ActividadLee el articulo sobre «Cómo elegir una clave primaria de una tabla» y menciona 10 ideas principales. Al final concluye por que es importante elegir una llave primaria.

Page 14: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Llave foráneaEn el contexto de bases de datos relacionales, una llave foránea (o Foreign Key FK) es una limitación referencial entre dos tablas. La llave foránea identifica una columna o grupo de columnas en una tabla (tabla hija o referendo) que se refiere a una columna o grupo de columnas en otra tabla (tabla maestra o referenciada). Las columnas en la tabla referendo deben ser la llave primaria u otra llave candidata en la tabla referenciada.

Page 15: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Llave foránea(cont.)Los valores en una fila de las columnas referendo deben existir solo en una fila en la tabla referenciada. Así, una fila en la tabla referendo no puede contener valores que no existen en la tabla referenciada. De esta forma, las referencias pueden ser creadas para vincular o relacionar información. Esto es una parte esencial de la normalización de base de datos. Múltiples filas en la tabla referendo pueden hacer referencia, vincularse o relacionarse a la misma fila en la tabla referenciada. Mayormente esto se ve reflejado en una relación uno (tabla maestra o referenciada) a muchos (tabla hija o referendo).

Page 16: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Llave foránea(cont.)La tabla referendo y la tabla referenciada pueden ser la misma, esto es, la clave foránea remite o hace referencia a la misma tabla. Esta llave externa es conocida en SQL:2003 como auto-referencia o clave foránea recursiva. Una tabla puede tener múltiples llaves foráneas y cada una puede tener diferentes tablas referenciadas. Cada llave foránea es forzada independientemente por el sistema de base de datos. Por tanto, las relaciones en cascada entre tablas pueden realizarse usando llaves foráneas. Configuraciones impropias de las llaves foráneas o primarias o no forzar esas relaciones son frecuentemente la fuente de muchos problemas para la base de datos o para el modelamiento de los mismos.

Page 17: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

AtributoUn atributo es el papel que tiene un determinado dominio en una relación.Es muy usual dar el mismo nombre al atributo y al dominio. En el caso de que sean varios los atributos de una misma tabla definidos sobre el mismo dominio, habrá que darles nombres distintos, ya que una tabla no puede tener dos atributos con el mismo nombre.Por ejemplo los atributos edad_física y edad_mental pueden estar definidos sobre el mismo dominio edad; o los atributos precio_compra y precio_venta pueden estar definidos sobre el mismo dominio de enteros de longitud 5.

Page 18: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

DominioUn dominio es un conjunto finito de valores homogéneos y atómicos caracterizados por un nombre; decimos homogéneos porque son todos del mismo tipo y atómicos porque son indivisibles.Todo dominio ha de tener un nombre por el cual nos podamos referir a él y un tipo de datos; así el tipo de datos del dominio "nacionalidades" es una tira de caracteres de longitud 10.El dominio "nacionalidades" tiene valores : España, Francia,... Si descompusiéramos España en E,s,p,... perdería la semántica.Ejemplos de dominios serían:Colores: Es el conjunto de los colores D={rojo, verde, azul,}Números de DNI: Es conjunto de números del DNI válidos, formados por ocho dígitos.Edad: Edades posibles de los empleados entre 18 y 80 años.

Page 19: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

EsquemaUn esquema de tupla, τ, es un conjunto de pares de la forma:τ = {(A1, D1), (A2, D2),…, (An, Dn)}donde:{A1, A2, …, An} (n > 0) es el conjunto de nombres deatributos del esquema, necesariamente distintos.D1, D2 …, Dn son los dominios asociados a dichosatributos que no tienen que ser necesariamente distintos.

Ejemplo:

Persona = {(dni, entero), (nombre, cadena), (dirección, cadena)}donde:{ dni, nombre, dirección } es el conjunto de nombres de atributosdel esquema.entero, cadena, cadena son los dominios asociados a dichosatributos.

Page 20: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Integridad ReferencialCuando se define una columna como clave foránea, las filas de la tabla pueden contener en esa columna o bien el valor nulo (ningún valor), o bien un valor que existe en la otra tabla, un error sería asignar a un habitante una población que no está en la tabla de poblaciones. Eso es lo que se denomina integridad referencial y consiste en que los datos que referencian otros (claves foráneas) deben ser correctos. La integridad referencial hace que el sistema gestor de la base de datos se asegure de que no hayan en las claves foráneas valores que no estén en la tabla principal.La integridad referencial se activa en cuanto creamos una clave foránea y a partir de ese momento se comprueba cada vez que se modifiquen datos que puedan alterarla.

Page 21: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Integridad Referencial¿ Cuándo se pueden producir errores en los datos?• Cuando insertamos una nueva fila en la tabla secundaria y el valor de la clave foránea no existe

en la tabla principal. insertamos un nuevo habitante y en la columna poblacion escribimos un código de poblacion que no está en la tabla de poblaciones (una población que no existe).

• Cuando modificamos el valor de la clave principal de un registro que tiene 'hijos', modificamos el codigo de Valencia, sustituimos el valor que tenía (1) por un nuevo valor (10), si Valencia tenía habitantes asignados, qué pasa con esos habitantes, no pueden seguir teniendo el codigo de población 1 porque la población 1 ya no existe, en este caso hay dos alternativas, no dejar cambiar el codigo de Valencia o bien cambiar el codigo de población de todos los habitantes de Valencia y asignarles el código 10.

• Cuando modificamos el valor de la clave foránea, el nuevo valor debe existir en la tabla principal. Por ejemplo cambiamos la población de un habitante, tenía asignada la población 1 (porque estaba empadronado en valencia) y ahora se le asigna la población 2 porque cambia de lugar de residencia. La población 2 debe existir en la tabla de poblaciones.

• Cuando queremos borrar una fila de la tabla principal y ese registro tiene 'hijos', por ejemplo queremos borrar la población 1 (Valencia) si existen habitantes asignados a la población 1, estos no se pueden quedar con el valor 1 en la columna población porque tendrían asignada una población que no existe. En este caso tenemos dos alternativas, no dejar borrar la población 1 de la tabla de poblaciones, o bien borrarla y poner a valor nulo el campo poblacion de todos sus 'hijos'.

Page 22: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

nActividadRealiza un mapa conceptual de la unidad

Page 23: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Manipulación de datos (SQL básico)

Page 24: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

SQLEl lenguaje de consulta estructurado o SQL (por sus siglas en inglés structured query language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en éstas. Una de sus características es el manejo del álgebra y el cálculo relacional permitiendo efectuar consultas con el fin de recuperar -de una forma sencilla- información de interés de una base de datos, así como también hacer cambios sobre ella.

Page 25: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

OrígenesLos orígenes del SQL están ligados a las de las bases de datos relacionales. En 1970 E. F. Codd propone el modelo relacional y asociado a éste un sublenguaje de acceso a los datos basado en el cálculo de predicados. Basándose en estas ideas, los laboratorios de IBM definen el lenguaje SEQUEL (Structured English QUEry Language) que más tarde sería ampliamente implementado por el sistema de gestión de bases de datos (SGBD) experimental System R, desarrollado en 1977 también por IBM. Sin embargo, fue Oracle quien lo introdujo por primera vez en 1979 en un programa comercial.

Page 26: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Orígenes (cont.)El SEQUEL terminaría siendo el predecesor de SQL, siendo éste una versión evolucionada del primero. El SQL pasa a ser el lenguaje por excelencia de los diversos sistemas de gestión de bases de datos relacionales surgidos en los años siguientes y es por fin estandarizado en 1986 por el ANSI, dando lugar a la primera versión estándar de este lenguaje, el "SQL-86" o "SQL1". Al año siguiente este estándar es también adoptado por la ISO.

Page 27: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Orígenes (cont.)Sin embargo, este primer estándar no cubre todas las necesidades de los desarrolladores e incluye funcionalidades de definición de almacenamiento que se consideraron suprimir. Así que en 1992 se lanza un nuevo estándar ampliado y revisado del SQL llamado "SQL-92" o "SQL2".En la actualidad el SQL es el estándar de facto de la inmensa mayoría de los SGBD comerciales. Y, aunque la diversidad de añadidos particulares que incluyen las distintas implementaciones comerciales del lenguaje es amplia, el soporte al estándar SQL-92 es general y muy amplio.

Page 28: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Orígenes (cont.)Sin embargo, este primer estándar no cubre todas las necesidades de los desarrolladores e incluye funcionalidades de definición de almacenamiento que se consideraron suprimir. Así que en 1992 se lanza un nuevo estándar ampliado y revisado del SQL llamado "SQL-92" o "SQL2".En la actualidad el SQL es el estándar de facto de la inmensa mayoría de los SGBD comerciales. Y, aunque la diversidad de añadidos particulares que incluyen las distintas implementaciones comerciales del lenguaje es amplia, el soporte al estándar SQL-92 es general y muy amplio.

Page 29: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Evolución del SQL

Page 30: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Características generales del SQL

El SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y potencia de los sistemas relacionales permitiendo gran variedad de operaciones en éstos últimos.Es un lenguaje declarativo de "alto nivel" o "de no procedimiento", que gracias a su fuerte base teórica y su orientación al manejo de conjuntos de registros, y no a registros individuales, permite una alta productividad en codificación y la orientación a objetos. De esta forma una sola sentencia puede equivaler a uno o más programas que se utilizarían en un lenguaje de bajo nivel orientado a registros.

Page 31: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Optimización

Como ya se dijo arriba, y suele ser común en los lenguajes de acceso a bases de datos de alto nivel, el SQL es un lenguaje declarativo. O sea, que especifica qué es lo que se quiere y no cómo conseguirlo, por lo que una sentencia no establece explícitamente un orden de ejecución.El orden de ejecución interno de una sentencia puede afectar gravemente a la eficiencia del SGBD, por lo que se hace necesario que éste lleve a cabo una optimización antes de su ejecución. Muchas veces, el uso de índices acelera una instrucción de consulta, pero ralentiza la actualización de los datos. Dependiendo del uso de la aplicación, se priorizará el acceso indexado o una rápida actualización de la información. La optimización difiere sensiblemente en cada motor de base de datos y depende de muchos factores.Existe una ampliación de SQL conocida como FSQL (Fuzzy SQL, SQL difuso) que permite el acceso a bases de datos difusas, usando la lógica difusa. Este lenguaje ha sido implementado a nivel experimental y está evolucionando rápidamente.

Page 32: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

ComandosExisten dos tipos de comandos SQL:

•Los DLL•Los DML

Page 33: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Lenguaje de definición de datos (DDL)

El lenguaje de definición de datos (en inglés Data Definition Language, o DDL), es el que se encarga de la modificación de la estructura de los objetos de la base de datos. Existen cuatro operaciones básicas: CREATE, ALTER, DROP y TRUNCATE.

Page 34: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Lenguaje de definición de datos (DDL)

Page 35: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Lenguaje de manipulación de datos DML(Data Manipulation Language)

Un lenguaje de manipulación de datos (Data Manipulation Language, o DML en inglés) es un lenguaje proporcionado por el sistema de gestión de base de datos que permite a los usuarios llevar a cabo las tareas de consulta o manipulación de los datos, organizados por el modelo de datos adecuado.El lenguaje de manipulación de datos más popular hoy día es SQL, usado para recuperar y manipular datos en una base de datos relacional.

Page 36: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Lenguaje de manipulación de datos DML(Data Manipulation Language)

Page 37: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Lenguaje de manipulación de datos DML(Data Manipulation Language)

Page 38: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Cláusulas

Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea seleccionar o manipular.

Page 39: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Cláusulas

Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea seleccionar o manipular.

Page 40: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Operadores

Page 41: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

 Operadores de Comparación

Page 42: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Funciones de Agregado Las funciones de agregado se usan dentro de una cláusula SELECT en grupos de registros para devolver un único valor que se aplica a un grupo de registros.

Page 43: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Creación de la Base de Datos

CREATE DATABASE db_name

Page 44: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Acceso a la Base de Datos

USE db_name

Page 45: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Creación de Tablas Nuevas

Si se está utilizando el motor de datos de Microsoft para acceder a bases de datos access, sólo se puede emplear esta instrucción para crear bases de datos propias de access. Su sintaxis es: CREATE TABLE tabla (campo1 tipo (tamaño) índice1 , campo2 tipo (tamaño) índice2 , ..., índice multicampo , ... ) En donde:

Page 46: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Creación de Tablas Nuevas

Ejemplo:

CREATE TABLE Empleados (Nombre TEXT (25) , Apellidos TEXT (50));

Crea una nueva tabla llamada Empleados con dos campos, uno llamado Nombre de tipo texto y longutid 25 y otro llamado apellidos con longitud 50.

Page 47: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  La cláusula CONSTRAINT

Se utiliza la cláusula CONSTRAINT en las instrucciones ALTER TABLE y CREATE TABLE para crear o eliminar índices. Existen dos sintaxis para esta cláusula dependiendo si desea Crear ó Eliminar un índice de un único campo o si se trata de un campo multiíndice. Si se utiliza el motor de datos de Microsoft, sólo podrá utilizar esta cláusula con las bases de datos propias de dicho motor. Para los índices de campos únicos: CONSTRAINT nombre {PRIMARY KEY | UNIQUE | REFERENCES tabla externa [(campo externo1, campo externo2)]} Para los índices de campos múltiples: CONSTRAINT nombre {PRIMARY KEY (primario1[, primario2 [, ...]]) | UNIQUE (único1[, único2 [, ...]]) | FOREIGN KEY (ref1[, ref2 [, ...]]) REFERENCES tabla externa [(campo externo1 [,campo externo2 [, ...]])]}

Page 48: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  La cláusula CONSTRAINT

Page 49: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  La cláusula CONSTRAINT

Page 50: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Creación de Índices

Si se utiliza el motor de datos Jet de Microsoft sólo se pueden crear índices en bases de datos del mismo motor. La sintaxis para crear un índice en ua tabla ya definida en la siguiente: CREATE [ UNIQUE ] INDEX índice ON tabla (campo [ASC|DESC][, campo [ASC|DESC], ...]) [WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }] En donde:

Page 51: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Creación de Índices Se puede utilizar CREATE INDEX para crear un pseudo índice sobre una tabla adjunta en una fuente de datos ODBC tal como SQL Server que no tenga todavía un índice. No necesita permiso o tener acceso a un servidor remoto para crear un pseudo índice, además la base de datos remota no es consciente y no es afectada por el pseudo índice. Se utiliza la misma sintaxis para las tabla adjunta que para las originales. Esto es especialmente útil para crear un índice en una tabla que sería de sólo lectura debido a la falta de un índice.

Ejemplo:

CREATE INDEX MiIndice ON Empleados (Prefijo, Telefono); Crea un índice llamado MiIndice en la tabla empleados con los campos Prefijo y Telefono. CREATE UNIQUE INDEX MiIndice ON Empleados (ID) WITH DISALLOW NULL; Crea un índice en la tabla Empleados utilizando el campo ID, obligando que que el campo ID no contenga valores nulos ni repetidos.

Page 52: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Insertar valoresLa instrucción SQL que lleva a cabo la inclusión de una nueva línea en una tabla es INSERT. La sintaxis con la que ésta se usa comunmente es:

INSERT INTO nombre_tabla [ ( lista_campos ) ]VALUES ( lista_valores )

ejemplo:INSERT INTO Institution ( ID, name, city, country )VALUES ( 1, '7th IFIP 2.6 Working Conference on Database Semantics (DS-7)', 'Leysin', 'Switzerland' );

Page 53: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Modificar el Diseño de una Tabla Modifica el diseño de una tabla ya existente, se puden modificar los campos o los índices existentes. Su sintaxis es: ALTER TABLE tabla {ADD {COLUMN tipo de campo[(tamaño)] [CONSTRAINT índice] CONSTRAINT índice multicampo} | DROP {COLUMN campo I CONSTRAINT nombre del índice} } En donde:

Page 54: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Modificar el Diseño de una Tabla

Ejemplos:

ALTER TABLE Empleados ADD COLUMN Salario CURRENCY; Agrega un campo Salario de tipo Moneda a la tabla Empleados. ALTER TABLE Empleados DROP COLUMN Salario; Elimina el campo Salario de la tabla Empleados. ALTER TABLE Pedidos ADD CONSTRAINT RelacionPedidos FOREIGN KEY (ID_Empleado) REFERENCES Empleados (ID_Empleado); Agrega un indice externo a la tabla Pedidos. El índice externo se basa en el campo ID_Empleado y se refiere al campo ID_Empleado de la tabla Empleados. En este ejemplo no es necesario indicar el campo junto al nombre de la tabla en la cláusula REFERENCES, pues ID_Empleado es la clave principal de la tabla Empleados. ALTER TABLE Pedidos DROP CONSTRAINT RelacionPedidos; Elimina el índide de la tabla Pedidos.

Page 55: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Mostrar Base de Datos y Tablas

SHOW DATABASES; SHOW TABLES;

Page 56: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Modificar registros

UPDATE nombre_tabla SET campo1, campo2 , etc. WHERE condicion [Modifica el registro con ID 1 con los valores nombre: Mauricio, apellido: Mono, pais: Mexico, idioma: ES de español]

Ejemplos:

UPDATE tabla SET nombre = 'Mauricio', apellido = 'Mono', pais = 'Mexico', idioma = 'ES' WHERE id = '1' [Modifica el registro con ID 1 con los valores nombre: Mauricio, apellido: Mono, pais: Mexico, idioma: ES de español]UPDATE tabla SET Idioma = 'EN' WHERE apellido = 'Mono' AND nombre = 'Mauricio' [Modifica el idioma a EN de inglés donde el nombre sea Mauricio y el apellido sea Mono]

Page 57: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

Eliminar registros

DELETE FROM tabla WHERE id = '1' [Borramos el registro] DELETE FROM tabla WHERE nombre = 'Mauricio' [Borramos todos los registros que tengan el nombre de Mauricio]

Page 58: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Selección

La selección total o parcial de una tabla se lleva a cabo mediante la instrucción Select. En dicha selección hay que especificar: -Los campos que queremos seleccionar -La tabla en la que hacemos la selección En nuestra tabla modelo de clientes podríamos hacer por ejemplo una selección del nombre y dirección de los clientes con una instrucción de este tipo:

Select nombre, dirección From clientes

Page 59: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Selección (Cont.)

Si quisiésemos seleccionar todos los campos, es decir, toda la tabla, podríamos utilizar el comodín * del siguiente modo:

Select * From nombre_tabla

Page 60: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Selección (Cont.)

Resulta también muy útil el filtrar los registros mediante condiciones que vienen expresadas después de la cláusula Where. Si quisiésemos mostrar los clientes de una determinada ciudad usaríamos una expresión como esta: Select * From clientes Where poblacion = 'Madrid'

Page 61: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Selección (Cont.)

Además, podríamos ordenar los resultados en función de uno o varios de sus campos. Para este ultimo ejemplo los podríamos ordenar por nombre así:

Select * From clientes Where poblacion ='Madrid' Order By nombre

Page 62: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Selección (Cont.)

Teniendo en cuenta que puede haber más de un cliente con el mismo nombre, podríamos dar un segundo criterio que podría ser el apellido:

Select * From clientes Where poblacion = 'Madrid' Order By nombre, apellido

Page 63: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Selección (Cont.)

Si invirtiésemos el orden « nombre,apellido » por « apellido, nombre », el resultado sería distinto. Tendríamos los clientes ordenados por apellido y aquellos que tuviesen apellidos idénticos se subclasificarían por el nombre. Es posible también clasificar por orden inverso. Si por ejemplo quisiésemos ver nuestros clientes por orden de pedidos realizados teniendo a los mayores en primer lugar escribiríamos algo así:

Select * From clientes Order By pedidos Desc

Page 64: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Selección (Cont.)

Una opción interesante es la de efectuar selecciones sin coincidencia. Si por ejemplo buscásemos el saber en qué ciudades se encuentran nuestros clientes sin necesidad de que para ello aparezca varias veces la misma ciudad usaríamos una sentencia de esta clase:

Select Distinct poblacion From clientes Order By poblacion

Así evitaríamos ver repetido Madrid tantas veces como clientes tengamos en esa población.

Page 65: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Selección (Cont.)

Veamos a continuación aplicaciones practicas con operadores.

En esta sentencia seleccionamos todos los clientes de Madrid cuyo nombre no es Pepe.

Select * From clientes Where poblacion = 'madrid' And Not nombre ='Pepe'

Si quisiéramos recoger en una selección a los clientes de nuestra tabla cuyo apellido comienza por A y cuyo número de pedidos esta comprendido entre 20 y 40: Select * From clientes Where apellidos ='A%' And pedidos Between 20 And 40

El operador In, lo veremos más adelante, es muy práctico para consultas en varias tablas. Para casos en una sola tabla es empleado del siguiente modo:

Select * From clientes Where poblacion In ('Madrid','Barcelona','Valencia')

De esta forma seleccionamos aquellos clientes que vivan en esas tres ciudades.

Page 66: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Selección (Cont.)

Estas tablas pueden ser utilizadas simultáneamente para extraer informaciones de todo tipo. Supongamos que queremos enviar un mailing a todos aquellos que hayan realizado un pedido ese mismo día. Podríamos escribir algo así:

Select clientes.apellidos, clientes.email From clientes,pedidos Where pedidos.fecha = '25/02/00' And pedidos.id_cliente= clientes.id_cliente

Como puede verse esta vez, después de la cláusula From, introducimos el nombre de las dos tablas de donde sacamos las informaciones. Además, el nombre de cada campo va precedido de la tabla de provenencia separados ambos por un punto. En los campos que poseen un nombre que solo aparece en una de las tablas, no es necesario especificar su origen aunque a la hora de leer la sentencia puede resultar más claro el precisarlo. En este caso el campo fecha podría haber sido designado como "fecha" en lugar de "pedidos.fecha". Veamos otro ejemplo más para consolidar estos nuevos conceptos. Esta vez queremos ver el título del libro correspondiente a cada uno de los pedidos realizados:

Select pedidos.id_pedido, articulos.titulo From pedidos, articulos Where pedidos.id_articulo=articulos.id_articulo En realidad la filosofía continua siendo la misma que para la consulta de una única tabla.

Page 67: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Tipos de Datos

•Tipos numéricos

•Tipos de Fecha

•Tipos de Cadena

Page 68: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Tipos Numéricos

Existen tipos de datos numéricos, que se pueden dividir en dos grandes grupos, los que están en coma flotante (con decimales) y los que no.

*TinyInt: es un número entero con o sin signo. Con signo el rango de valores válidos va desde -128 a 127. Sin signo, el rango de valores es de 0 a 255 Bit ó Bool: un número entero que puede ser 0 ó 1 *SmallInt: número entero con o sin signo. Con signo el rango de valores va desde -32768 a 32767. Sin signo, el rango de valores es de 0 a 65535. *MediumInt: número entero con o sin signo. Con signo el rango de valores va desde -8.388.608 a 8.388.607. Sin signo el rango va desde 0 a16777215. *Integer, Int: número entero con o sin signo. Con signo el rango de valores va desde -2147483648 a 2147483647. Sin signo el rango va desde 0 a 429.4967.295 *BigInt: número entero con o sin signo. Con signo el rango de valores va desde -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807. Sin signo el rango va desde 0 a 18.446.744.073.709.551.615. *Float: número pequeño en coma flotante de precisión simple. Los valores válidos van desde -3.402823466E+38 a -1.175494351E-38, 0 y desde 1.175494351E-38 a 3.402823466E+38. *xReal, Double: número en coma flotante de precisión doble. Los valores permitidos van desde -1.7976931348623157E+308 a -2.2250738585072014E-308, 0 y desde 2.2250738585072014E-308 a 1.7976931348623157E+308 *Decimal, Dec, Numeric: Número en coma flotante desempaquetado. El número se almacena como una cadena

Page 69: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Tipos Numéricos (cont.)

Page 70: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Tipos fechaA la hora de almacenar fechas, hay que tener en cuenta que Mysql no comprueba de una manera estricta si una fecha es válida o no. Simplemente comprueba que el mes esta comprendido entre 0 y 12 y que el día esta comprendido entre 0 y 31. Date: tipo fecha, almacena una fecha. El rango de valores va desde el 1 de enero del 1001 al 31 de diciembre de 9999. El formato de almacenamiento es de año-mes-dia

*DateTime: Combinación de fecha y hora. El rango de valores va desde el 1 de enero del 1001 a las 0 horas, 0 minutos y 0 segundos al 31 de diciembre del 9999 a las 23 horas, 59 minutos y 59 segundos. El formato de almacenamiento es de año-mes-dia horas:minutos:segundos

*TimeStamp: Combinación de fecha y hora. El rango va desde el 1 de enero de 1970 al año 2037. El formato de almacenamiento depende del tamaño del campo:

Page 71: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Tipos fecha (cont.)

Page 72: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Tipos fecha (cont.)Time: almacena una hora. El rango de horas va desde -838 horas, 59 minutos y 59 segundos a 838, 59 minutos y 59 segundos. El formato de almacenamiento es de 'HH:MM:SS'

Year: almacena un año. El rango de valores permitidos va desde el año 1901 al año 2155. El campo puede tener tamaño dos o tamaño 4 dependiendo de si queremos almacenar el año con dos o cuatro dígitos.

Page 73: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Tipo cadena*Char(n): almacena una cadena de longitud fija. La cadena podrá contener desde 0 a 255 caracteres.

*VarChar(n): almacena una cadena de longitud variable. La cadena podrá contener desde 0 a 255 caracteres.

Dentro de los tipos de cadena se pueden distinguir otros dos subtipos, los tipo Test y los tipo BLOB (Binary large Object)

La diferencia entre un tipo y otro es el tratamiento que reciben a la hora de realizar ordenamientos y comparaciones. Mientras que el tipo test se ordena sin tener en cuenta las Mayúsculas y las minúsculas, el tipo BLOB se ordena teniéndolas en cuenta.

Page 74: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Tipo cadena (Cont.)Los tipos BLOB se utilizan para almacenar datos binarios como pueden ser ficheros.

*TinyText y TinyBlob: Columna con una longitud máxima de 255 caracteres.

*Blob y Text: un texto con un máximo de 65535 caracteres.

*MediumBlob y MediumText: un texto con un máximo de 16.777.215 caracteres.

*LongBlob y LongText: un texto con un máximo de caracteres 4.294.967.295. Hay que tener en cuenta que debido a los protocolos de comunicación los paquetes pueden tener un máximo de 16 Mb.

*Enum: campo que puede tener un único valor de una lista que se especifica. El tipo Enum acepta hasta 65535 valores distintos

*Set: un campo que puede contener ninguno, uno ó varios valores de una lista. La lista puede tener un máximo de 64 valores.

Page 75: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Tipo cadena (Cont.)

Page 76: UNIDAD 3-BASE DE DATOS

Mod

elos

y B

ases

de

Dat

os

Inge

nier

ía e

n Si

ste

mas

de

la In

form

ació

n

  Tipo cadena (Cont.)

Diferencia de almacenamiento entre los tipos Char y VarChar