Professional Documents
Culture Documents
Modelo relacional
El modelo relacional para la gestin de una base de datos es un modelo de datos basado en la lgica de predicados y en la teora de conjuntos. Es el modelo ms utilizado en la actualidad para modelar problemas reales y administrar datos dinmicamente. Tras ser postuladas sus bases en 1970 por Edgar Frank Codd, de los laboratorios IBM en San Jos (California), no tard en consolidarse como un nuevo paradigma en los modelos de base de datos. Su idea fundamental es el uso de relaciones. Estas relaciones podran considerarse en forma lgica como conjuntos de datos llamados tuplas. Pese a que sta es la teora de las bases de datos relacionales creadas por Edgar Frank Codd, la mayora de las veces se conceptualiza de una manera ms fcil de imaginar, esto es, pensando en cada relacin como si fuese una tabla que est compuesta por registros (cada fila de la tabla sera un registro o tupla), y columnas (tambin llamadas campos). En este modelo todos los datos son almacenados en relaciones, y como cada relacin es un conjunto de datos, el orden en el que estos se almacenen no tiene relevancia (a diferencia de otros modelos como el jerrquico y el de red). Esto tiene la considerable ventaja de que es ms fcil de entender y de utilizar por un usuario no experto. La informacin puede ser recuperada o almacenada por medio de consultas que ofrecen una amplia flexibilidad y poder para administrar la informacin. Este modelo considera la base de datos como una coleccin de relaciones. De manera simple, una relacin representa una tabla que no es ms que un conjunto de filas, cada fila es un conjunto de campos y cada campo representa un valor que interpretado describe el mundo real. Cada fila tambin se puede denominar tupla o registro y a cada columna tambin se le puede llamar campo o atributo. Para manipular la informacin utilizamos un lenguaje relacional, actualmente se cuenta con dos lenguajes formales el lgebra relacional y el Clculo relacional. El lgebra relacional permite describir la forma de realizar una consulta, en cambio, el Clculo relacional slo indica lo que se desea devolver.
Estructura
La base de datos se organiza en dos marcadas secciones; el esquema y los datos (o instancia). El esquema es la definicin de la estructura de la base de datos y principalmente almacena los siguientes datos:
El nombre de cada tabla El nombre de cada columna El tipo de dato de cada columna La tabla a la que pertenece cada columna
Las bases de datos relacionales pasan por un proceso al que se le conoce como normalizacin, el resultado de dicho proceso es un esquema que permite que la base de datos sea usada de manera ptima. Los datos o instancia es el contenido de la base de datos en un momento dado. Es en s, el contenido de todos los registros.
Esquema
Un esquema es la definicin de una estructura (generalmente relaciones o tablas de una base de datos), es decir, determina la identidad de la relacin y qu tipo de informacin podr ser almacenada dentro de ella; en otras palabras, el esquema son los metadatos de la relacin. Todo esquema constar de:
Nombre de la relacin (su identificador). Nombre de los atributos (o campos) de la relacin y sus dominios; el dominio de un atributo o campo define los valores permitidos para el mismo, es equivalente al tipo de dato por ejemplo character, integer, date, string, etc.
Esquema de una base de datos relacional Una base de datos relacional es un conjunto de relaciones normalizadas. Para representar el esquema de una base de datos relacional se debe dar el nombre de sus relaciones, los atributos de stas, los dominios sobre los que se definen estos atributos, las claves primarias y las claves ajenas.
El esquema de la base de datos de la empresa inmobiliaria es el siguiente: OFICINA PLANTILLA INMUEBLE INQUILINO (Onum, Calle, Area, Poblacin, Telfono, Fax) (Enum, Nombre, Apellido, Direccin, Telfono, Puesto, Fecha_nac, Salario, DNI, Onum) (Inum, Calle, Area, Poblacin, Tipo, Hab, Alquiler, Pnum, Enum, Onum) (Qnum, Nombre, Apellido, Direccin, Telfono, Tipo_pref, Alquiler_max) PROPIETARIO (Pnum, Nombre, Apellido, Direccin, Telfono) VISITA (Qnum, Inum, Fecha, Comentario)
Claves
Clave nica Cada tabla puede tener uno o ms campos cuyos valores identifican de forma nica cada registro de dicha tabla, es decir, no pueden existir dos o ms registros diferentes cuyos valores en dichos campos sean idnticos. Este conjunto de campos se llama clave nica. Pueden existir varias claves nicas en una determinada tabla, y a cada una de stas suele llamrsele candidata a clave primaria. Clave primaria Una clave primaria es una clave nica elegida entre todas las candidatas que define unvocamente a todos los dems atributos de la tabla, para especificar los datos que sern relacionados con las dems tablas. La forma de hacer esto es por medio de claves forneas. Slo puede existir una clave primaria por tabla y ningn campo de dicha clave puede contener valores NULL.
Clave fornea Una clave fornea es una referencia a una clave en otra tabla. Las claves forneas no necesitan ser claves nicas en la tabla donde estn y s a donde estn referenciadas. Por ejemplo, el cdigo de departamento puede ser una clave fornea en la tabla de empleados, obviamente se permite que haya varios empleados en un mismo departamento, pero existir slo un departamento. Clave ndice Las claves ndices surgen con la necesidad de tener un acceso ms rpido a los datos. Los ndices pueden ser creados con cualquier combinacin de campos de una tabla. Las consultas que filtran registros por medio de estos campos, pueden encontrar los registros de forma no secuencial usando la clave ndice. Las bases de datos relacionales incluyen mltiples tcnicas de ordenamiento, cada una de ellas es ptima para cierta distribucin de datos y tamao de la relacin. Los ndices generalmente no se consideran parte de la base de datos, pues son un detalle agregado. Sin embargo, las claves ndices son desarrolladas por el mismo grupo de programadores que las otras partes de la base de datos.
Lenguajes de Consulta
Los podemos dividir en dos tipos: Lenguajes Formales y Lenguajes Comerciales. Los lenguajes formales estn basados en el lgebra relacional o en el clculo relacional. Solamente se han descrito para consulta a Bases de Datos (existen lenguajes comerciales que adems de consulta permiten otras operaciones). El lgebra relacional tiene procedimientos (procedimental), mientras que los lenguajes basados en el clculo relacional son a procedimentales. Dentro del clculo relacional se distingue entre clculo relacional orientado a tuplas y clculo relacional orientado a dominios. Los lenguajes comerciales, en su mayora usan enfoques tanto procedimentales como a procedimentales, o lo que es lo mismo, no son lenguajes puros como los formales. De esta manera hacen su sintaxis ms amigable al usuario.
lgebra relacional
El lgebra relacional es un conjunto de operaciones que describen paso a paso como computar una respuesta sobre las relaciones, tal y como stas son definidas en el modelo relacional. Denominada de tipo procedimental, a diferencia del Clculo relacional que es de tipo declarativo. Describe el aspecto de la manipulacin de datos. Estas operaciones se usan como una representacin intermedia de una consulta a una base de datos y, debido a sus propiedades algebraicas, sirven para obtener una versin ms optimizada y eficiente de dicha consulta.
Operaciones Bsicas
Cada operador del lgebra acepta una o dos relaciones y retorna una relacin como resultado. y son operadores unarios, el resto de los operadores son binarios. Las operaciones bsicas del lgebra relacional son:
Seleccin ()
Permite seleccionar un subconjunto de tuplas de una relacin (R), todas aquellas que cumplan la(s) condicin(es) P, esto es:
Ejemplo:
Selecciona todas las tuplas que contengan Gmez como apellido en la relacin Alumnos. Una condicin puede ser una combinacin booleana, donde se pueden usar operadores como: , combinndolos con operadores .
Proyeccin ()
Permite extraer columnas (atributos) de una relacin, dando como resultado un subconjunto vertical de atributos de la relacin, esto es:
Donde Ejemplo:
Selecciona los atributos Apellido, Semestre y NumeroControl de la relacin Alumnos, mostrados como un subconjunto de la relacin Alumnos
y entrega una relacin, cuyo esquema corresponde a una combinacin de todas las tuplas de R con cada una de las tuplas de S, y sus atributos corresponden a los de R seguidos por los de S. Ejemplo:
Muestra una nueva relacin, cuyo esquema contiene cada una de las tuplas de la relacin Alumnos junto con las tuplas de la relacin Maestros, mostrando primero los atributos de la relacin Alumnos seguidos por las tuplas de la relacin Maestros.
Unin ()
La operacin
Retorna el conjunto de tuplas que estn en R, o en S, o en ambas. R y S deben ser uniones compatibles. Diferencia (-) La diferencia de dos relaciones, R y S denotada por:
Entrega todas aquellas tuplas que estn en R, pero no en S. R y S deben ser uniones compatibles.
Estas operaciones son fundamentales en el sentido en que (1) todas las dems operaciones pueden ser expresadas como una combinacin de stas y (2) ninguna de estas operaciones pueden ser omitidas sin que con ello se pierda informacin.
No bsicas
Entre los operadores no bsicos tenemos:
Interseccin ()
La interseccin de dos relaciones se puede especificar en funcin de otros operadores bsicos:
La interseccin, como en Teora de conjuntos, corresponde al conjunto de todas las tuplas que estn en R y en S, siendo R y S uniones compatibles.
Divisin (/)
Supongamos que tenemos dos relaciones A(x, y) y B(y) donde el dominio de y en A y B, es el mismo. El operador divisin A / B retorna todos los distintos valores de x tales que para todo valor y en B existe una tupla en A.
Agrupacin ()
Permite agrupar conjuntos de valores en funcin de un campo determinado y hacer operaciones con otros campos. Por ejemplo: sum(puntos) as Total Equipo (PARTIDOS). Ejemplos Suponga las relaciones o tablas:
Alumno
ID NOMBRE CIUDAD
EDAD
01 Pedro
Santiago
14
11 Juan
Buenos Aires 18
21 Diego
Lima
12
31 Rosita
Concepcin 15
41 Manuel
Lima
17
Apoderado
ID
NOMBRE FONO
ID_ALUMNO
054 Vctor
654644 21
457 Jos
454654 11
354 Mara
997455 31
444 Paz
747423 01
Curso
COD
NOMBRE
01142 Sicologa
13-01
15
3.000
02145 Biologa
15-02
12
2.500
30
4.000
04578 Msica
05-04
10
1.500
05478 Fsica
20-04
15
3.200
Inscrito
ID ID_AL COD
1 01
05478
2 01
02145
3 11
03547
4 21
02145
5 41
03547
Mostrar los nombres de los alumnos y su apoderado Primero, realizaremos una combinacin entre alumnos y apoderados (pues necesitamos saber a qu alumno le corresponde tal apoderado). La combinacin realizar un producto cartesiano, es decir, para cada tupla de alumnos (todas las filas de alumnos) har una mezcla con cada una tupla de apoderados y seleccionar aquellas nuevas tuplas en que alumnos.id sea igual a apoderados.id_alumno, esto es:
EDAD
ID_ALUMNO
01
Pedro
Santiago
14
054
Vctor
654644 21
01
Pedro
Santiago
14
457
Jos
454654 11
10
01
Pedro
Santiago
14
354
Mara
997455 31
01
Pedro
Santiago
14
444
Paz
747423 01
11
Juan
Buenos Aires
18
054
Vctor
654644 21
11
Juan
Buenos Aires
18
457
Jos
454654 11
11
Juan
Buenos Aires
18
354
Mara
997455 31
11
Juan
Buenos Aires
18
444
Paz
747423 01
21
Diego
Lima
12
054
Vctor
654644 21
21
Diego
Lima
12
457
Jos
454654 11
21
Diego
Lima
12
354
Mara
997455 31
21
Diego
Lima
12
444
Paz
747423 01
31
Rosita
Concepcin 15
054
Vctor
654644 21
31
Rosita
Concepcin 15
457
Jos
454654 11
11
EDAD
ID_ALUMNO
01
Pedro
Santiago
14
444
Paz
747423 01
11
Juan
Buenos Aires
18
457
Jos
454654 11
21
Diego
Lima
12
054
Vctor
654644 21
31
Rosita
Concepcin 15
354
Mara
997455 31
Ahora, aqu debemos mostrar solo el nombre del alumno y el nombre del apoderado, esto lo hacemos con un Proyect o Proyeccin, donde la tabla final sera:
Alumnos.NOMBRE,Apoderados.NOMBRE
Pedro
Paz
Juan
Jos
Diego
Vctor
12
Resumiendo en un solo paso: Alumnos Alumnos.ID = Apoderados.ID_ALUMNO Apoderados Se lee: Proyecta los nombre de alumnos y nombre de apoderados de los alumnos cuyo ID sea el mismo que el ID_ALUMNO de los apoderados.
Funciones de agregacin
Las funciones de agregacin son funciones que toman una coleccin de valores y devuelven como resultado un nico valor. Por ejemplo, la funcin de agregacin sum toma un conjunto de valores y devuelve la suma de los mismos. Por tanto, la funcin sum aplicada a la coleccin {1, 1, 3, 4, 4, 11} devuelve el valor 24. La funcin de agregacin avg devuelve la media de los valores. Cuando se aplica al conjunto anterior devuelve el valor 4. La funcin de agregacin count devuelve el nmero de elementos del conjunto, y devolvera 6 en el caso anterior. Otras funciones de agregacin habituales son min y max, que devuelven el valor mnimo y el mximo de la coleccin; en el ejemplo anterior devuelven 1 y 11, respectivamente. Las colecciones en las que operan las funciones de agregacin pueden tener valores repetidos; el orden en el que aparezcan los valores no tiene importancia. Estas colecciones se denominan multiconjuntos. Los conjuntos son un caso especial de los multiconjuntos, en los que slo hay una copia de cada elemento. Para ilustrar el concepto de agregacin se utilizar la relacin trabajo-por-horas, que muestra los empleados a tiempo parcial. Supngase que se desea averiguar la suma total de los sueldos de los empleados del banco a tiempo parcial. La expresin del lgebra relacional para esta consulta es: Gsum(sueldo) (trabajo-por-horas) La operacin del lgebra relacional G significa que se debe aplicar agregacin, y el subndice indica la operacin de agregacin a aplicar. El resultado de la expresin anterior es una relacin con un nico atributo, que contiene una sola fila con un valor correspondiente a la suma de los sueldos de todos los trabajadores que trabajan en el banco a tiempo parcial. Hay casos en los que se deben borrar los valores repetidos antes de calcular una funcin de agregacin. Si se desean borrar los valores repetidos hay que utilizar los mismos nombres de funciones que antes, con la cadena de texto distinct precedida de un guin aadida al final del nombre de la funcin (por ejemplo, count-distinct). La forma general de la operacin de agregacin G es la siguiente:
G1, G2, , GnGF1(A1), F2(A2), , Fm (Am)
(E)
donde E es cualquier expresin del lgebra relacional; G1, G2, , Gn constituye una lista de atributos que indican cmo se realiza la agrupacin, cada Fi es una funcin de agregacin y cada Ai es el nombre de un atributo.
14
El significado de la operacin se define de la manera siguiente. Las tuplas en el resultado de la expresin E se dividen en grupos tales que 1. Todas las tuplas del grupo tienen los mismos valores para G1, G2, , Gn. 2. Las tuplas de grupos diferentes tienen valores diferentes para G1, G2, , Gn. Por tanto, los grupos pueden identificarse por el valor de los atributos G1, G2, , Gn. Para cada grupo (g1, g2, , gn) el resultado tiene una tupla (g1, g2, , gn, a1, a2, , am) donde, para cada i, ai es el resultado de aplicar la funcin de agregacin Fi al multiconjunto de valores del atributo Ai en el grupo. Como caso especial de la operacin de agregacin, la lista de atributos G1, G2, , Gn puede estar vaca, en cuyo caso slo hay un grupo que contiene todas las tuplas de la relacin. Esto corresponde a la agregacin sin agrupacin.
15
Para ejemplificar las instrucciones anteriores consideremos el ejemplo ALUMNO cursa - MATERIA, que tienen los siguientes atributos: NControl NControl Clave NombreA Clave NombreM Especialidad Calif Creditos Direccin * Estructura de la sentencia CREATE TABLE. CREATE TABLE <Nombre de la tabla> ( Atributo1: tipo de dato longitud, Atributo2: tipo de dato longitud, Atributo3: tipo de dato longitud, : : Atributon: tipo de dato longitud, PRIMARY KEY (Opcional)); Los campos pueden definirse como NOT NULL de manera opcional excepto en la llave primaria para lo cual es obligatorio. Adems al definir la llave primaria se genera automticamente un ndice con respecto al campo llave; para definir la llave la denotamos dentro de los parntesis de PRIMARY KEY. Ejemplo: Crear la tabla alumno con los atributos antes descritos, tomando como llave el numero de control. CREATE TABLE Alumno ( NControl char(8) NOT NULL, NombreA char(20), Especialidad char(3), Direccin char(30), PRIMARY KEY (NControl) );
16
Puede existir ms de una llave primaria, esto es si se requiere, se crearn tantos ndices como llaves primarias se establezcan. Pueden existir tantos campos Not Null (No nulos) como se requieran; En si estructurar la creacin de una tabla es siempre parecida al ejemplo anterior. * Estructura de la sentencia INSERT INSERT INTO Nombre de la tabla a la que se le va a insertar el registro VALUES (Conjunto de valores del registro) ; Ejemplo: Insertar en la tabla Alumno, antes creada los datos del alumno Daniel coln, con numero de control 95310518 de la especialidad de Ingeniera civil, con domicilio Abasolo Norte #45. INSERT INTO Alumno VALUES ("95310518","Daniel Coln","IC","Abasolo Norte #45") ; Ntese que la insercin de los datos se realiza conforme la estructura que se implanto en la tabla, es decir en el orden en que se creo dicha tabla. En caso de querer omitir un dato que no sean no nulos solamente se ponen las comillas indicando el vaco de la cadena. * Estructura de la Sentencia CREATE INDEX CREATE INDEX Nombre que se le asignara al ndice. ON Nombre de la taba a la cual se le creara el ndice (Campo(s) por el cual se creara el ndice); Ejemplo: Crear un ndice de la tabla Alumno por el campo Especialidad. CREATE INDEX Indice1 ON Alumno (Especialidad);
17
Este ndice contendr a todos los alumnos ordenados por el campo especialidad. CREATE INDEX UNIQUE INDEX Indice2 ON Alumno (Especialidad); En la creacin de este ndice utilizamos la sentencia UNIQUE, es un indicador para permitir que se cree un ndice nico por especialidad, esta sentencia siempre se coloca antes de CREATE INDEX. En este ejemplo se creara un ndice que contenga un alumno por especialidad existente. * Estructura de la sentencia UPDATE UPDATE Nombre de la tabla en donde se modificaran los datos. SET Valores WHERE (Condicin); Ejemplo: Modificar el nmero de control del registro de Daniel Coln de la Tabla alumno por el nmero 96310518. UPDATE Alumno SET NControl 96310518 WHERE NombreA=Daniel Coln; * Estructura de la sentencia DROP TABLE DROP TABLE Nombre de la tabla a borrar; Ejemplo: Borrar la tabla Alumno creada anteriormente. DROP TABLE Alumno; * Estructura de la sentencia DROP INDEX DROP INDEX Nombre del ndice a borrar; Ejemplo: Borrar el ndice Indice1 creado anteriormente. DROP INDEX Indice1;
18
* Estructura de la sentencia DELETE DELETE FROM Nombre de la tabla WHERE Condicin; Ejemplos: - Borrar el registro cuyo nmero de control es 95310386. DELETE FROM Alumno WHERE Control=95310386; - Borrar todos los registros de la tabla alumno. DELETE FROM Alumno; En el primer ejemplo, se borrara todo el registro (todos los datos), del alumno con nmero de control = 95310386. En el segundo ejemplo se borraran todos los registros de la tabla alumno, pero sin borrar la estructura de la tabla, ya que la orden Delete solo borra registros, la sentencia Drop Table es la que borra toda la estructura de la tabla junto con los registros de la misma
19