1 Introducción a las Bases de Datos Relacionales
2 ¿Base de Datos? B de D es un conjunto de información (o de datos) relacionada que se encuentra agrupada o estructurada B de D es un sistema formado por un conjunto de datos almacenados en dispositivos (disco) que permiten acceso directo a ellos y un conjunto de programas que manipulan ese conjunto de datos B de D o banco de datos es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. En este sentido, una biblioteca puede considerarse una base de datos compuesta en su mayoría por documentos y textos impresos en papel e indexados para su consulta.
3 modelos de bases de datosUn modelo de datos es básicamente una "descripción" de algo conocido como contenedor de datos (algo en donde se guarda la información), así como de los métodos para almacenar y recuperar información de esos contenedores Los modelos de datos no son cosas físicas: son abstracciones que permiten la implementación de un sistema eficiente de base de datos; por lo general se refieren a algoritmos, y conceptos matemáticos
4 modelos de bases de datosAlgunos modelos con frecuencia utilizados en las bases de datos: - modelo jerárquico: (años 60) árbol, no diferencian vista lógica de vista física. Grandes volúmenes de datos. - modelo de redes: DAG, evolución del modelo jerárquico - modelo relacional: (años 70) basado en la teoría de conjuntos. El más usado en la actualidad. Diferencia vista lógica de vista física. - modelo multidimensional: tablas multidimensionales, conceptualmente similar al modelo relacional pero para aplicaciones específicas como cubos OLAP. - modelo orientado a objetos: esfuerzos actuales. Permiten herencia, polimorfismo y encapsulamiento de datos.
5 el modelo relacional desarrollado por EF Codd en 1970 cuando trabajaba para IBM permite una fuerte independencia de las aplicaciones respecto a la representación interna de los datos dió lugar al nacimiento de un lenguaje normalizado: SQL (Structured Query Language) utilizado por numerosos SGBD como PostgreSQL, MySQL, Oracle, Sybase, DB2
6 Características de las Tablas (relaciones)Una tabla está formada por Filas y Columnas Las Filas son equivalentes a los Registros de un archivo clásico (contienen los valores de los objetos o entidades descritas) Las Columnas son equivalentes a los Campos (que representan los atributos de los objetos o entidades descritas). El conjunto de valores que puede tomar un campo se llama dominio.
7 las relaciones Dominio: conjunto de valores caracterizados por un nombre length = {702, 1476, 273, 303, 891} gene_id = {'1794:2096', 'c1321:1593', '2108:3583'} gene = {'-', 'gatA', 'gatC'} Relación: subconjunto del producto cartesiano de n dominios (n>=1). Es una relación n-aria: gene_id gene length 1794: c1321:1593 gatA 273 2108:3583 gatC 1476
8 las relaciones Atributo: columna de una relaciónTupla: línea de una relación Esquema de una relación: nombre de la relación + lista de atributos GENE gene_id string gene string length integer
9 las restricciones clave: conjunto mínimo de atributos que identifican de manera única una tupla. Entre las claves, elegimos una que llamamos ”clave primaria" gene_id es una llave que podemos elegir como primaria restricción referencial: imponemos que un conjunto de atributos en R1 sea un valor clave de R2 restricción de dominio: una condición sobre un atributo de la relación length > 0 GENE gene_id length gene c1321: gatA 2108: gatC DESCRIPTION gene description gatA G-amidotransferase subunit A gatC G-amidotransferase subunit C
10 aspectos básicos de las BDRLa B de D contendrá generalmente muchas Tablas Una Tabla sólo contiene un número fijo de Campos El nombre de los Campos que componen una Tabla es siempre distinto Cada Registro de una Tabla es único El orden de los Registros y el orden de los Campos de una Tabla no está determinado. Para cada Campo existe un conjunto de valores posibles (Dominio).
11 operaciones del álgebra relacionalel álgebra relacional se compone de un conjunto de operadores. 5 de ellos permiten definir los otros por composición selección, s proyección, p producto cartesiano, × unión, U diferencia, -
12 selección, σ la selección σF (R) se aplica a una relación R y extrae las tuplas que satisfacen un criterio F. El criterio puede ser entre un atributo y una constante o entre dos atributos: AΘa y A1ΘA2, con Θ perteneciente a {=,<,>,<=,>=} Por ejemplo: σlength>300 (GENE) GENE gene_id gene length 1794: c1321:1593 gatA 273 2108:3583 gatC 1476 gene_id gene length 1794: 2108:3583 gatC 1476
13 la proyección, π la proyección πA1,A2,A3...,Ak (R) se aplica a una relación R conservando solamente los atributos A1,A2,A3...,Ak contrariamente a la selección no suprimimos filas sino columnas Por ejemplo: πgene_id,length (GENE) GENE gene_id gene length 1794: c1321:1593 gatA 273 2108:3583 gatC 1476 gene_id length 1794: c1321: 2108: gene_id,length
14 el producto cartesiano, ×el primer operador binario, y el más importante. el producto cartesiano entre R y S se denota R×S y permite crear una nueva relación donde cada tupla de R esta asociada a una de S R S R ×S A | B ------ a | b c | d C | D ------ u | v w | x y | z A | B | C | D a | b | u | v a | b | w | x a | b | y | z c | d | u | v c | d | w | x c | d | y | z
15 la unión, U la expresión RUS crea una relación que comprende todas las tuplas en R y todas las tuplas en S. existe una condición imperativa y es que ambas relaciones deben tener el mismo esquema, es decir, mismo número de atributos, mismos nombres y tipos R S RUS A | B ------ a | b c | d A | B ------ w | x y | z A | B ------ a | b c | d w | x y | z
16 la diferencia, - como la unión, la diferencia se aplica a dos relaciones que tienen el mismo esquema la expresión R-S da por resultado una relación que tiene todas las tuplas de R que no están en S R S R-S A | B ------ y | z c | d A | B ------ a | b c | d A | B ------ a | b
17 composición de operadorestodas las interrogaciones del algebra relacional pueden hacerse con los 5 operadores anteriores sin embargo, existen en la práctica otros operadores corrientemente utilizados y que pueden construirse por composición de las operaciones de base por ejemplo, el producto cartesiano en si mismo no tiene interes, pero si le aplicamos luego una selección, puede transformarse en algo útil GENE gene_id length gene c1321: gatA 2108: gatC DESCRIPTION gene description gatA G-amidotransferase subunit A gatC G-amidotransferase subunit C
18 la juntura, podríamos escribir lo antedicho como:σGENE.gene=DESCRIPTION.gene (GENE x DESCRIPTION) esto es, la composición de 2 operaciones, un producto cartesiano y una selección esta operación es una juntura y podemos notarla como: GENE gene=gene DESCRIPTION
19 SQL: tipos enteros: int, smallint, tinyintdecimales: numeric(p,s), double caractéres: char(n), varchar(n), text fechas: datetime, smalldatetime binaria: binary(n), varbinary(n), image bit manual de postgres online:
20 el SQL: tipos Name Aliases Description bigint int8signed eight-byte integer bigserial serial8 autoincrementing eight-byte integer bit [ (n) ] fixed-length bit string bit varying [ (n) ] varbit variable-length bit string boolean bool logical Boolean (true/false) box rectangular box in the plane bytea binary data ("byte array") character varying [ (n) ] varchar [ (n) ] variable-length character string character [ (n) ] char [ (n) ] fixed-length character string cidr IPv4 or IPv6 network address circle circle in the plane date calendar date (year, month, day) double precision float8 double precision floating-point number inet IPv4 or IPv6 host address integer int, int4 signed four-byte integer interval [ (p) ] time span line infinite line in the plane
21 el SQL: tipos lseg line segment in the plane macaddr MAC address moneyline segment in the plane macaddr MAC address money currency amount numeric [ (p, s) ] decimal [ (p, s) ] exact numeric of selectable precision path geometric path in the plane point geometric point in the plane polygon closed geometric path in the plane real float4 single precision floating-point number smallint int2 signed two-byte integer serial serial4 autoincrementing four-byte integer text variable-length character string time [ (p) ] [ without time zone ] time of day time [ (p) ] with time zone timetz time of day, including time zone timestamp [ (p) ] [ without time zone ] date and time timestamp [ (p) ] with time zone timestamptz date and time, including time zone
22 SQL: órdenes manipulación de datos, DML (Data Manipulation Language)selección de datos (select) inserción de datos (insert) actualización de datos (update) destrucción de datos (delete)
23 SQL: órdenes descripción de estructura de datos, DDL (Data Definition Language) creación y destrucción de tablas creación de diferentes objetos en la base (restricciones, vistas, procedimientos, triggers) órdenes de creación de bases, gestión de derechos, gestión de transacciones, etc.
24 las interrogaciones simplesuna interrogación sobre una tabla consiste en un subconjunto de líneas y/o un subconjunto de columnas de la tabla las columnas del select determinan que columnas mostrar la cláusula where determina que líneas mostrar select * from GENE; select gene, length from GENE where length > 300; select gene, length from GENE where gene = 'gatA'; select gene, length from GENE where gene like 'gat%';
25 binarios: +, -, /, *, %, + (concatenación de cadenas)los operadores binarios: +, -, /, *, %, + (concatenación de cadenas) comparación: =, <>, <, <=, >, >=, between, not between de lista: in, not in de matcheo: like, not like booleanos, and, or, not de nulidad: is null, is not null select * from GENE where length in (273, 303); select gene from GENE where length between 300 and 500; select gene from GENE where length = 273 or length > 500;
26 las funciones envían un resultado a partir de una lista de argumentos (son pre-definidas y no se puede agregar más) sistema: user, user_name(), user_id(),.. generales: datalength(), isnull(),... cadenas de caracteres: substring(), charindex(), reverse(), left(), right(), lower(), upper()... matemáticas: abs(), floor(), power(), rand(), sqrt(), exp(), log(), sin(), cos(), tan(),...
27 las expresiones regularespermiten "matchear" un pattern (patrón) dado utilizando el operador like: % matchea n caracteres cualquiera (n=0, 1, ...) _ (underscore) matchea 1 caracter cualquiera [] matchea 1 caracter cualquiera en la clase [^] matchea 1 caracter cualquiera ausente en la clase select * from GENE where gene like 'g%'; select * from GENE where gene like 'g_t[AC]'; select * from GENE where gene like '[^A-Z]%';
28 las junturas permiten obtener los datos de dos o más tablasla ligación entre las dos tablas se hace a través de un campo en común, generalmente del mismo nombre podemos juntar n tablas a menudo utilizamos alias en la interrogación select g.gene, g.length, d.description from GENE g, DESCRIPTION d where g.gene=d.gene; select g.gene, g.length, d.description from GENE g, DESCRIPTION d where g.gene=d.gene and length >300;
29 creación y destrucción de tablascreate table GENE( gene_id varchar(18) PRIMARY KEY, gene varchar (4), length integer); drop table GENE; alter table GENE add constraint gene_chk1 check(length>0); create index gene_ind1 on GENE(gene);
30 Formas normales: 1FN La Primera Forma Normal, o 1FN, es la más elemental de todas. Una tabla está en 1FN si el valor que contiene un atributo de un registro, un campo, es único y elemental. En cada uno de los atributos sólo se puede incluir un dato, aunque sea compuesto, pero no se pueden incluir una lista de datos.
31 Formas normales: 2FN Una tabla está en Segunda Forma Normal o 2FN cuando está en 1FN y todo atributo que no pertenece a la clave primaria tiene una dependencia funcional de la clave completa y no de parte de ella. Luego, si la clave principal está formada por un solo atributo y ya está en 1FN, ya estará en 2FN.
32 Formas normales: 3FN Se dice que hay dependencia funcional transitiva entre dos atributos cuando un atributo que no pertenece a la clave primaria permite conocer el valor de otro atributo. Una tabla está en Tercera Forma Normal o 3FN si está en 2FN y no existen atributos que no pertenezcan a la clave primaria que puedan ser conocidos mediante otro atributo que no forma parte de la clave primaria, es decir, no hay dependencias funcionales transitivas.
33 otras formas normales suelen quedar a la decisión del diseñador y en general no son necesarias para bases de datos de tamaño reducido: Forma Normal de Boyce-Codd o FNBC 4FN 5FN ver
34 Ejemplo de concepción (Entity/Relationship)Nombre Plasmido Accession Replicon Trans_tab Clasificación Aislado Organismo Gen_id Hebra Largo Gen Pid Genes Archivo_pdb Resolución Método Estructura Protocolo Microarray Nc GC Gravy Aromo Propiedades tiene tienc usa presenta 1 *
35 reglas de pasaje: entidadesrecordemos: el esquema de una relación está constituida del nombre de la relación seguida de la lista de atributos. para cada entidad del esquema E/A: 1. creamos una relación del mismo nombre que la entidad 2. cada propiedad de la entidad deviene un atributo de la relación 3. los atributos del identificador constituyen la llave de la relación
36 reglas de pasaje: asociación 1 a *sea una asociación de uno a muchos entre A y B. El pasaje sigue las reglas siguientes: 1. creamos las relaciones RA y RB correspondientes a las entidades A y B 2. el identificador de B deviene un atributo de RA
37 reglas de pasaje: binarias * a *sea una asociación binaria n-m entre A y B 1. creamos las relaciones RA y RB correspondientes a las entidades A y B 2. creamos una relación RA-B para la asociación 3. las llaves de RA y RB pasan a ser atributos de RA-B 4. la llave de esta relación es la concatenación de las llaves de las relaciones RA y RB 5. las propiedades de la asociación devienen en atributos de RA-B
38 Ejemplo Organismo Replicón Genes Propiedades Estructura Gen-MicroarrayNombre Trans_tab Clasificación Aislado Organismo Plásmido Accession Replicón Gen_id Hebra Largo Gen Pid Genes Nc GC Gravi Aromo Propiedades Archivo_pdb Resolución Método Estructura Gen-Microarray Microarray Experimento Protocolo * 1
39 Ejemplo para el practicoOrganism_id Organism Classification ... RefSeq Replicon Gene_id Strand GeneLength Gene GC Gravy Aromo GeneProp A1 Bases * 1 Nc Aas Ejemplo para el practico