View
236
Download
0
Category
Preview:
Citation preview
1
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
Bases de Datos Relacionalesy SQL: Una Introducción
José María Fernández GonzálezGN2, Instituto Nacional de Bioinformática
Biología Estructural y Biocomputación, CNIO
2
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
Sumario
● ¿Qué es un SGBDR?● ¿Por qué usar bases de datos relacionales en
bioinformática?● SQL (Structured Query Language)● Usuarios de base de datos● Tablas: creación, definición de restricciones y
borrado● Manipulación de datos: consulta, inserción,
actualización y borrado● Pistas de cómo diseñar una BD● Interfaces de programación
3
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
¿Qué es un SGDBR?
● Sistema Gestor de Base de Datos Relacional (SGDBR). Software que gestiona el uso de las bases de datos relacionales, y optimiza y controla el acceso al contenido de las mismas.
● El almacenamiento físico de los datos lo gestiona única y exclusivamente el gestor de la base de datos. El usuario sólo debe preocuparse de la estructura lógica de los mismos.
● La manipulación de la estructura y contenido de una base de datos relacional se realiza mediante el lenguaje de consultas SQL (Structured Query Language)
4
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
Estructura interna de un SGBDR
Procesador de consultas
para el usuario final
Interfaz de programación para aplicaciones
(API)
Acceso a la base de datos y lógica de control
Sistema gestor de bases de datos
Interfaz de definición
de datos
Programas UsuariosAdministrador de la base de datos
Almacenamiento físico de los datos Esquema
5
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
¿Por qué una base de datos relacional en bioinformática?
Distribución en GB de la antigüedad de bases de datos biológicas típicasDistribución en GB de la antigüedad de bases de datos biológicas típicas(calculado en 2008 usando (calculado en 2008 usando JDiskReport))
6
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
¡Qué grandes!¿Cómo las consulto?
Distribución de tamaños de fichero de bases de datos biológicas típicasDistribución de tamaños de fichero de bases de datos biológicas típicas
7
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
Demasiado grandes para uncutre-script, ¿no?
Algunas estadísticas de 2008 sobrebases de datos biológicas típicas
8
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
Bases de datos relacionalesen Bioinformática (2014-11-17)
● Ensembl: volcados para MySQL/MariaDB (FTP)(versión 76 => 365.8 GB, versión 77 => 370.0 GB)
● Pfam: volcados para MySQL/MariaDB (FTP)(versión 26.0 => 55.8 GB, versión 27.0 => 60.9 GB)
● Rfam: volcados para MySQL/MariaDB (FTP)(version 11.0 => 3.4 GB, versión 12.0 => 1.7 GB)
● dbSNP: volcados para Sybase (FTP)(2009 => ~68 GB, ahora => 166.4 GB)
● ArrayExpress: usa Oracle, publica en varios formatos(31.7 TB FTP).
● IntAct: usa PostgreSQL, publica en XML y en formato tabular (FTP).
● UCSC: publica MySQL y ficheros planos (FTP).
9
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
Structured Query Language
● Es el idioma 'estándar' que se emplea para consultar y modificar bases de datos relacionales.
● Estándares existentes:SQL86, SQL89, SQL92, SQL99, …(http://www.jcc.com/resources/sql-standards)
● Cada uno de los estándares SQL clasifica las distintas funcionalidades por su complejidad:entry, intermediate, advanced.
● Por ello, podemos encontrar hoy en día gestores de bases de datos que por ejemplo, implementan SQL89, bastantes operaciones de SQL92, pocas de SQL99 y ninguna de SQL:2003.
10
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
Algunos SGBDR
● Actualmente existen decenas de sistemas gestores de bases de datos relacionales:
➢ Gestores open source: PostgreSQL,MySQL/MariaDB, SQLite...
➢ Gestores de pago: Oracle, Sybase, DB2, ...● A pesar de los estándares SQL, los
desarrolladores de cada gestor de bases de datos suele además añadir extensiones propias al estándar, por lo cuál nos encontramos con muchos 'dialectos' SQL muy parecidos entre sí a nivel semántico, pero sintácticamente incompatibles.
11
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
http://www.hpi.uni-potsdam.de/naumann/projekte/rdbms_genealogy.html
IBM Peterlee Relational Test Vehicle
IBM IS1
1970s
1980s 1990s
2000s
2010s
v1, 1992
v1.0, 1987
v4.0, 1990 v10, 1993
v1, 1987 v2, 1989v3, 2011
v11.5, 1996 v11.9, 1998
v12.0, 1999 v12.5, 2001 v12.5.1, 2003 v15.0, 2005 v16.0, 2012
v1, 1989
v2, 1993
v1.0, 1980s
v5.x, 1970s
v6.0, 1986 OpenIngres 2.0, 1997 vR3, 2004
v1, 1995 v6, 1997 v7, 2000
v8, 2005 v9, 2010
v9.0, 2006 v10, 2010
v4.0, 1990 v5.0, 1992 v6.0, 1994
v9.0, 2000 v10, 2005 v11, 2007
v4.21, 1993 v6, 1994 v7, 1998
v8, 1997
v3.1, 1997 v3.21, 1998 v3.23, 2001 v4, 2003 v4.1, 2004 v5, 2005 v5.1, 2008
v5.5, 2010
v8i, 1999 v9i, 2001 v10g, 2003 v10gR2, 2005 v11g, 2007 v11gR2, 2009
v8, 2000 v9, 2005 v10, 2008 v11, 2012
v3, 1995 v4, 1997 v5, 1999 v10, 2001 v11, 2003 v12, 2007 v14, 2010
v3, 1983 v4, 1984 v5, 1985
v1, 1983
v5.1, 1986
v3, 1993
v1, 1983 v2, 1988 v3, 1993 v4, 1994
v5, 1996
v6, 1999 v7, 2001 v8, 2003 v9, 2006
alpha, 1979
v1.0, 1981
v6.1, 1997 v8.1, 1998 v10.2, 2008
v5.1, 2004 v6.0, 2005 v6.2, 2006 v12, 2007 v13.0, 2009
v13.10, 2010 v14.0, 2012
v4, 1995
v5, 1997
v6, 1999
v1, 1991 v2, 1997
v3, 1999 v4, 2001
v1.6, 2001 v1.7, 2002
v1.8, 2005
v3.0, 1988
v2.0, 2010
v5, 2010
v7, 2001 v8, 2004 v9, 2007
v10, 2010
v7, 1992
v7.0, 1995
v2, 1979
v1, 2003 v1.5, 2009
v2, 2012
v6.5, 1995
code brand
v11, 1995v12, 1999
v15, 2009
v12c, 2013
v1, 1988 v2, 1992 v4, 1992
v6, 2008 v7, 2010
Ingres
VectorWise
MonetDB
Netezza
Greenplum
PostgreSQL
Red Brick
Microsoft SQL Server H-Store
Informix
VoltDB
Vertica
db40
Sybase ASE
Sybase IQ
SQL Anywhere
Access
Oracle
Infobright
MySQL
TimesTen
Paradox
Teradata
Empress Embedded
RDB
DB2 for iSeries
Derby
Transbase
DB2 for z/OS
DB2 for VM
Solid DB
EXASolution
dBase
Firebird
DB2 for LUW
HSQLDB
BerkelyDB
SQLite
HANA
MaxDB
Nonstop SQL
AdabasD
MariaDB
v10, 2013
SQL/DS
DB2 for VM
DB2 UDB
Transbase (Transaction Software)
TinyDB
Berkeley DB
DB2 MVS
Solid DB
Gamma (Univ. Wisconsin) Mariposa (Berkeley)
dBase (Ashton Tate)
DB2
NDBM
GDBM
SQLite
HSQLDB
DBM
VDN/RDS DDB4 (Nixdorf) SAP DB MaxDB
System-R (IBM)
AdabasD (Software AG)
SAP HANA
P*TIME
REDABAS (Robotron)
DABA (Robotron, TU Dresden)
EXASolution
InterBase Firebird
DB2 z/OS
System/38
SQL/400 DB2/400
DB2 UDB for iSeries
Oracle
RDB (DEC)
Teradata
Empress Embedded
TimesTen Aster Database
JBMS
Cloudscape Derby
Paradox (Ansa)
Red Brick
Multics Relational Data Store (Honeywell)
Apache Derby
Berkeley Ingres
Ingres
Postgres PostgreSQL
Illustra IBM Informix
MonetDB (CWI)
Greenplum
Volt DB
Netezza
Informix
Sybase ASE
Microsoft SQL Server Microsoft Access
MySQL
Sybase IQ
Nonstop SQL (Tandem) Neoview
mSQL
InnoDB (Innobase)
Infobright
H-Store C-Store
db40
Vertica Analytic DB
VectorWise (Actian)Monet Database System (Data Distilleries)
DATAllegro
Informix
IBM Red Brick Warehouse
Expressway 103
Watcom SQL SQL Anywhere
MariaDB
Key to lines and symbols Felix Naumann, Jana Bauckmann, Claudia Exeler, Jan-Peer Rudolph, Fabian Tschirschnitz
Contact - Hasso Plattner Institut, Potsdam, Felix.Naumann@hpi.uni-potsdam.de
Design - Alexander Sandt Graf k-Design, Hamburg
Version 4.0 - August 2013
http://www.hpi.uni-potsdam.de/naumann/projekte/rdbms_genealogy.html
Publishing Date
Genealogy of Relational Database Management Systems
Discontinued Branch (intellectual and/or code)Acquisition Versions
v9, 2006CC
Crossing lines have no special semantics
12
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
¿Cuál es el mejor SGBDR?
Si buscáis el mejor SGBDR, la respuesta es otra pregunta: ¿para qué lo queréis usar?
● En Bioinformática, tanto PostgreSQL como MySQL/MariaDB se han vuelto muy populares. Ello es debido a que pueden ser instalados prácticamente en cualquier plataforma hardware sin ningún coste adicional (la licencia de uso es gratuita), salvo el esfuerzo de instalarlo.
● El principal éxito de PostgreSQL: la simplicidad y muchas de las características, potencia y escalabilidad de los SGBDR de pago.
● El principal éxito de MySQL/MariaDB: su gran simplicidad y su velocidad de acceso para consultas sencillas.
● ¿Y SQLite? Al ser un gestor embebido no hay que disponer de un servidor dedicado. Por su rendimiento y bajos requisitos de memoria, se usa cada vez más, de forma general, en todo. Pero no es la implementación más correcta.
13
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
Partes del lenguaje SQL
● DDL (Data Definition Language): Es la parte del lenguaje que se ocupa de la gestión de la base de datos: creación y borrado de los usuarios, tablas, vistas, etc...; gestión del control de acceso; manipulación de la estructura de las tablas; optimización del acceso a los datos; tipos de datos...
● DML (Data Manipulation Language): Es la parte del lenguaje SQL que se ocupa de las operaciones de inserción, borrado, actualización y consulta de datos.
14
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
¿Que conceptos hay modelados en una BDR?
● Tipos de datos.INTEGER, VARCHAR, DATE, REAL
● Datos, organizados en tuplas.● Tablas+columnas.● Usuarios.● Restricciones.● Índices y otros elementos.
15
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
Usuarios de una Base de Datos
● Los usuarios de una base de datos no están relacionados con los usuarios del sistema.
● Al igual que en un sistema informático general, existe la figura del administrador. En casi todos los SGBDRs el administrador de una base de datos no tiene por qué ser el administrador del sistema.
● Un 'administrador' crea los usuarios, y les otorga o deniega privilegios (operaciones que pueden realizar).
● Posibles privilegiosPosibles privilegios: crear, modificar o borrar una tabla; consultar, insertar, borrar o modificar los datos de una tabla; consultar o crear una vista; crear usuarios o grupos; otorgar privilegios; etc...
‡
16
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
Tablas: IntroducciónUna base de datos relacional está compuesta de varias
tablas relacionadas entre sí
Cada tabla tiene un nombre, está estructurada en una o más columnas, y puede tener una o más restricciones asociadas a la misma.
AccNumber Identificador Descripción
A1WWE5 ACP_HALHL Acyl carrier protein
A8ESU2 RS10_ARCB4 30S ribosomal protein S10
Q9X2A1 ASSY_THEMA Argininosuccinate synthase
A8FEJ8 TRPB_BACP2 Tryptophan synthase beta chain
A1JJ31 AMPA_YERE8 Probable cytosol aminopeptidase
Q83EL7 KGUA_COXBU Guanylate kinase
P48307 TFPI2_HUMAN Tissue factor pathway inhibitor 2
Q1CC21 MALK_YERPA Maltose/maltodextrin import ATP-binding protein MalK
A9SU70 U4976_PHYPA UPF0497 membrane protein 6
Tabla Proteína
17
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
Tablas: Tuplas y Columnas
● Cada columna tiene nombre, y un tipo de datos.
● Cada columna puede participar en una o varias restricciones.
● Las restricciones básicas de una columna son: de contenido nulo, de restricciones de contenido.
● Se puede asignar a una columna una expresión por omisión. Se emplea cuando se guarda una tupla en la que no se haya dado explícitamente un valor a esa columna.
● Una entrada de datos de una tabla es una tupla, y está compuesta por los valores asociados a cada columna de la tabla.
● En cada tupla, una columna puede tener asociado a lo sumo un valor.
AccNumber Identificador Descripción
CHAR(6) PK VARCHAR(25) NOT NULL VARCHAR(4096)
A1WWE5 ACP_HALHL Acyl carrier protein
18
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
Tablas: Tipos y Valores SQL
● INTEGER 3, -2
● CHAR 's','kp'
● VARCHAR 'qlf'
● BOOLEAN true● TIMESTAMP● DATE 2013-11-29● TIME 17:25:38
● NUMERIC 0.03156● REAL 3 1415,● CLOBs● BLOBs● NULL● etc...
En un lugar de la Mancha de cuyo nombre no quiero acordarme vivía un hidalgo de los de espada y rocín, conocido como
Fri Nov 21 18:51:39 CEST 2014
19
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
SQL: Creación de tablasCREATE TABLE SWISSTABLE (
id VARCHAR(10) NOT NULL,accnumber VARCHAR(7) NOT NULL,secuencia TEXT NOT NULL,molweight NUMERIC(8,2),description VARCHAR(255),PRIMARY KEY (accnumber),UNIQUE(id)
);
CREATE TABLE REL_SWISS_PDB (accnumber_r VARCHAR(7) NOT NULL,pdbcode VARCHAR(8) NOT NULL,FOREIGN KEY TOSWISS (accnumber_r) REFERENCES
SWISSTABLE (accnumber)ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY TOPDB (pdbcode) REFERENCESPDBTABLE (pdb_id)ON DELETE RESTRICT ON UPDATE CASCADE
);
20
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
Tabla: Restricciones
● Una restricción es una premisa que siempre se debe cumplir. Por ello, los datos almacenados en una tabla siempre deben cumplir todas las restricciones de dicha tabla.
● Existen varios tipos de restricciones● De columna (explicado anteriormente)
● De clave única
● De clave primaria
● De clave externa
● Otras...Persona
Nombre
Apellido1
Apellido2
NIF
21
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
Restricción de Clave Única
● Esta restricción se construye sobre una o más columnas, y obliga a que los valores asociados a esas columnas sean únicos. Por ejemplo:
(nombre, apellido1, apellido2)
podría definir una clave única, de forma que no pudiese haber dos personas con el mismo nombre y apellidos.
● Una tabla puede tener más de una restricción de clave única. Por ejemplo, una clave única sobre el NIF y otra sobre el número de pasaporte.
22
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
Restricción de Clave Primaria
● Este tipo de restricciones es similar en concepto a las de clave única. Adicionalmente, los valores que toman las columnas de la clave primaria en cada tupla se emplean para identificar dicha tupla de forma lógica.
● Sólo se puede definir una clave primaria por tabla. En caso de existir varios candidatos a clave primaria, lo más conveniente es elegir el más representativo para el contexto de uso.
● Por ejemplo, para un coche, tanto la matrícula como el nº de bastidor se podrían emplear como clave primaria.
23
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
Restricción de Clave Externa
● Las restricciones de clave externa sirven para mantener la coherencia entre los datos almacenados en distintas tablas. Se establecen desde los campos de una tabla a los campos de clave primaria de otra.
● Por ejemplo, una base de datos con la tabla Swisstable y la tabla PDB Model, que relacionan sus contenidos a través de la tabla Rel_Swiss_PDB. Para mantener la coherencia, los cambios en el accnumber de alguna entrada de Swisstable o bien estarán prohibidos, o bien provocarán un cambio automático en las entradas de Rel_Swiss_PDB con el mismo accnumber_r.
id
molweight
description
accnumber_r
pdbcode
pdbcode
model
PDB ModelRel_Swiss_PDB
Swisstable
accnumber
secuencia
24
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
Borrado de tablas. Permisos
DROP TABLE REL_SWISS_PDB;
GRANT SELECT,INSERT,UPDATE,DELETEON SWISSTABLE TO pepe;
REVOKE SELECT ON SWISSTABLE TO PUBLIC;
25
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
Manipulación de datos
● Una vez definida la estructura de la base de datos, podremos insertar, actualizar, borrar y consultar datos.
● De todas ellas, las consultas serán las operaciones más realizadas, tanto para recuperar información previamente almacenada, como para calcular estadísticas o extraer conclusiones de los datos almacenados.
● Un conjunto de operaciones de manipulación de datos se puede realizar en transacción, para garantizar la coherencia de las mismas.
26
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
SQL: Recuperando datos (I)
Consulta normalSELECT p.pdbcode, s.id AS "Swissprot ID"FROM rel_swiss_pdb p, swisstable sWHERE p.accnumber = s.accnumberAND description LIKE '%3D%';
27
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
SQL: Recuperando datos (II)A B
SELECT <select_list> FROM TablaA A LEFT JOIN TablaB B ON A.claveA = B.claveB
A B
SELECT <select_list> FROM TablaA A LEFT JOIN TablaB B ON A.claveA = B.claveB WHERE B.claveB IS NULL
A B
SELECT <select_list> FROM TablaA A RIGHT JOIN TablaB B ON A.claveA = B.claveB
A B
SELECT <select_list> FROM TablaA A RIGHT JOIN TablaB B ON A.claveA = B.claveB WHERE A.claveA IS NULL
A B
SELECT <select_list> FROM TablaA A
INNER JOIN TablaB B ON A.claveA = B.claveB
SELECT <select_list> FROM TablaA A, Tabla B WHERE A.claveA = B.claveB
A B
SELECT <select_list> FROM TablaA A FULL OUTER JOIN TablaB B ON A.claveA = B.claveB
A B
SELECT <select_list> FROM TablaA A FULL OUTER JOIN TablaB B ON A.claveA = B.claveB WHERE A.claveA IS NULL OR B.claveB IS NULL
SQL Joins
(inspirado en http://commons.wikimedia.org/wiki/File:SQL_Joins.svg)
28
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
SQL: Recuperando datos (III)
Consulta de agregación simpleSELECT COUNT(*)FROM SWISSTABLEWHERE LENGTH(secuencia) > 100;
Consulta agregación con joinSELECT COUNT(*)FROM rel_swiss_pdb p, swisstable sWHERE p.accnumber_r = s.accnumberAND description LIKE '%3D%';
22
29
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
Id Accnumber Secuencia Molweight DescriptionId_A A QWEF 38 Blah 3DId_B B ADSFQ 174 3D BlehId_C C SGF 23 Bl 3D ihId_D D WEWH 229 BlohId_E E NMEGY 151 BluhId_F F PEUUH 79 Jaja 3D 2
SQL: Recuperando datos (IV)Consulta de agregación ampliadaSELECT s.id, COUNT(p.pdbcode)FROM rel_swiss_pdb p, swisstable sWHERE p.accnumber_r = s.accnumberAND description LIKE '%3D%'GROUP BY 1;
Accnumber_r PdbcodeA PC QE RB SC TC UA V
Id COUNTId_A 2Id_B 1Id_C 3
30
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
SQL: Manipulación de datos
InserciónINSERT INTO SWISSTABLE VALUES
('P98765',NULL,'LSQSDARESM',18.15,'ID_RAT');
INSERT INTO SWISSTABLE (accnumber,id,molweight, secuencia)VALUES ('P98765','ID_RAT',18.15,'LSQSDARESM');
BorradoDELETE FROM SWISSTABLE
WHERE accnumber LIKE 'P98%';
ActualizaciónUPDATE SWISSTABLE SET
molweight = molweight + 1.0WHERE description IS NULL;
31
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
Recomendaciones de Diseño
● La base de datos tiene que tener una estructura con la complejidad necesaria: ni más ni menos.
● La base de datos tiene que ser funcional:servir para lo que se ha diseñado.
● El diseñador debe tomarse su tiempo para sopesar los pros y los contras del diseño que ha realizado. Es más fácil cambiar la estructura de una base de datos cuando no tiene datos :-)
32
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
Pasos a la hora de diseñar una base de datos relacional
1) Enumerar los conceptos que se quieren almacenar en la base de datos.
2) Clasificar esos conceptos en tablas o atributos de tabla.
3) Identificar las tablas que están relacionadas entre sí, la direccionalidad y cardinalidad.
4) Asignar cada concepto etiquetado como atributo a las tablas con las que estén relacionados.
5) Identificar qué atributos pueden actuar como claves únicas o primaria, y elegir la clave primaria.
6) Crear los atributos correspondientes a las claves externas en las tablas que están siendo apuntadas por otras. Esos atributos vienen de copiar los atributos etiquetados como clave primaria.
7) Ver si el esquema resultante hace lo que debe hacer. Si no, ir al paso 1.
33
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
Diseño de una base de datos¿Arte o Ciencia?
● El diseño de la base de datos influye tanto en qué se puede almacenar y consultar, como en los métodos de consulta.
● Existe multitud de herramientas para realizar el diseño a bajo y alto nivel de una base de datos. Adicionalmente, existen varias metodologías de diseño, que proporcionan las directrices básicas.
● El diseñador debe conocer tanto el dominio del problema, como el dominio de uso de la futura base de datos.
34
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
35
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
Interfaces de programación
● Toda base de datos suele estar rodeada de una serie de programas que consultan y mantienen los datos que alberga, enfocados al motivo por la que se creó.
● Según el lenguaje de programación en el que se encuentre escrito cada programa, habrá que usar uno u otro interfaz de acceso a la base de datos.
● No todos los interfaces están disponibles para todos los SGBDRs y plataformas.
● Interfaces clásicos son: ODBC, JDBC (Java),DBI (Perl y Ruby), ADO, DB-API (python),CREOLE (php), etc...
36
Máster en Bioinformática y Biología Computacional, ENS-ISCIII 2014-2015José María Fernández González (jmfernandez@cnio.es)
v2.7.0
Referencias
● Manual de PostgreSQL 9.3.5: PDF, HTML
● Manual de SQLite 3.8.x: HTML
● Documentación de MariaDB: HTML
● “Structured Query Language” wikibook
● http://www.sqlcourse.com/● http://www.sqlcourse2.com/intro2.html
● http://www.w3schools.com/sql/
● http://www.1keydata.com/sql/sql-commands.html● “Mastering SQL”, Martin Gruber, Ed. Sybex
● “SQL for Smarties”, Joe Celko, Ed. Morgan Kaufmann
Recommended