introducción a las bases de datos relacionales. ¿base de datos? b de d es un conjunto de...
TRANSCRIPT
Introducción a las Bases de Datos
Relacionales
¿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.
modelos de bases de datos
• Un 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
modelos de bases de datos
Algunos 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.
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
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.
las relaciones
• Dominio: conjunto de valores caracterizados por un nombrelength = {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 length1794:2096 - 303c1321:1593 gatA 2732108:3583 gatC 1476
las relaciones
• Atributo: columna de una relación
• Tupla: línea de una relación
• Esquema de una relación: nombre de la relación + lista de atributos
GENEgene_id stringgene stringlength integer
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ónlength > 0
GENEgene_id length genec1321:1593 273 gatA2108:3583 1476 gatC
DESCRIPTIONgene descriptiongatA G-amidotransferase subunit AgatC G-amidotransferase subunit C
aspectos básicos de las BDR
• La 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).
operaciones del álgebra relacional
• el álgebra relacional se compone de un conjunto de operadores. 5 de ellos permiten definir los otros por composición
• selección, • proyección, • producto cartesiano, ו unión, U• diferencia, -
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)
GENEgene_id gene length1794:2096 - 303c1321:1593 gatA 2732108:3583 gatC 1476
gene_id gene length1794:2096 - 3032108:3583 gatC 1476
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)
GENEgene_id gene length1794:2096 - 303c1321:1593 gatA 2732108:3583 gatC 1476
gene_id length1794:2096 303c1321:1593 2732108:3583 1476
gene_id,length
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 SR S
R ×SA | B------a | bc | d
C | D------u | vw | xy | z
A | B | C | D-------------a | b | u | va | b | w | xa | b | y | zc | d | u | vc | d | w | xc | d | y | z
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 tiposR S
RUS
A | B------a | bc | d A | B
------a | bc | dw | xy | z
A | B------w | xy | z
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 SR S
R-S
A | B------a | bc | d
A | B------y | zc | d
A | B------a | b
composición de operadores
• todas 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 útilGENE
gene_id length genec1321:1593 273 gatA2108:3583 1476 gatC
DESCRIPTIONgene descriptiongatA G-amidotransferase subunit AgatC G-amidotransferase subunit C
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
SQL: tipos
• enteros: int, smallint, tinyint• decimales: 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: http://www.postgresql.org/docs/8.3/interactive/index.html
el SQL: tipos
Name Aliases Description
bigint int8 signed 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
el SQL: tipos
lseg line 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
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)
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.
las interrogaciones simples
• una 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%';
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;
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(),...
las expresiones regulares
• permiten "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]%';
las junturas
• permiten obtener los datos de dos o más tablas• la 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;
creación y destrucción de tablas
create 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);
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.
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.
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.
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 http://www.scourdesign.com/articulos/BD-FN.php
Ejemplo de concepción (Entity/Relationship)
Nombre
Plasmido
Accession
Replicon
Nombre
Trans_tab
Clasificación
Aislado
Organismo
Accession
Gen_id
Hebra
Largo
Gen
Pid
Genes
Pid
Archivo_pdb
Resolución
Método
Estructura
ProtocoloMicroarray
Gen_id
Nc
GC
Gravy
Aromo
Propiedades
tiene
tiene
tienc
tiene
usa
presenta
1
1
1
11
* * * *
*
*
1
reglas de pasaje: entidades
• recordemos: 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 entidad2. cada propiedad de la entidad deviene un atributo de la relación3. los atributos del identificador constituyen la llave de la relación
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 B2. el identificador de B deviene un atributo de RA
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 B2. 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
Ejemplo Nombre
Trans_tab
Clasificación
Aislado
Organismo
Nombre
Plásmido
Accession
Replicón
Accession
Gen_id
Hebra
Largo
Gen
Pid
Genes
Gen_id
Nc
GC
Gravi
Aromo
PropiedadesPid
Archivo_pdb
Resolución
Método
Estructura
Gen-Microarray
Microarray
Experimento
Protocolo
*
1
1
1
1
1
1
1
1
1
1
* *
*
*
*
Ejemplo para el practico
Organism_id
Organism
Classification
...
Organism
Organism_id
RefSeq
...
Replicon
RefSeq
Gene_id
Strand
GeneLength
Gene
...
Gene
Gene_id
GC
Gravy
Aromo
...
GenePropGene_id
GC
A1
...
Bases
*
1
1
1
1
1
1
*
Gene_id
Nc
GC
Gravy
Aromo
Aas
1 1