Please enable JavaScript.
Coggle requires JavaScript to display documents.
BBDD (API de conexión a BBDD (JDBC (Derivado de ODBC para java
…
BBDD
API de conexión a BBDD
Derivado de ODBC para java
- Open DataBase Connectivity
- Estandar de acceso
- Microsoft Data Access Components
- Desarrollado por Microsoft
- Sus componentes incluyen: ADO, OLE DB, y ODBC
- ActiveX Data Objects
- Desarrollado por Mircrosoft
- Connection, Recordset y Command
- puede usar dos tipos de proveedores de datos, OLE DB y ODBC
- Data Access Objects
- Desarrollada por Microsoft
- Object Linking and Embedding for Databases
- Desarrollada por Microsoft
Diseño
-
-
Se basa en un modelo de datos específico
(relacional, red, jerárquico, orientado a objetos)
-
-
Diseños
-
Lógico
- Objetivos:
- Convertir esquemas conceptuales locales (ECL) en un esquema lógico global (ELG)
- Se ha de ajustar al modelo del SGBD (para su uso eficiente)
Fases
- Construir y validar los esquemas lógicos locales (ELL) para cada vista de usuario
- Convertir los ECL en ELL
- Derivar un conjunto de relaciones (tablas) para cada ELL
- Validar cada esquema mediante la normalización
- Validar cada esquema frente a las transacciones de usuario
- Dibujar el diagrama entidad-relación
- Definir las restricciones de integridad
- Revisar cada ELL con el usuario correspondiente
- Construir y validar el esquema lógico global
- Mezclar los ELL en un ELG
- Validar el ELG
- Estudiar el crecimiento futuro
- Dibujar el diagrama entidad-relación final
- Revisar el ELG con los usuarios
- Convertir los ECL en ELL
- Eliminar las relaciones
- de muchos a muchos
- entre tres o más entidades,
- recursivas
- con atributos
- redundantes
- Revisar las relaciones de uno a uno
- Eliminar los atributos multievaluados
- Derivar un conjunto de relaciones (tablas) para cada ELL
- Entidades y relaciones que pueden aparecer en los ELL
- Entidades fuertes
- Entidades débiles
- Relaciones binarias uno a uno
- Relaciones binarias uno a muchos
- Actualizar el diccionario de datos con los nuevos atributos
- Validar el esquema mediante la normalización
- Mejora el EL evitando duplicidades
- Garantiza que
- el esquema esté más próximo al modelo de la empresa
- es consistente
- tiene mínima redundancia
- máxima estabilidad
- 2 more items...
En las entidades fuertes escoger la clave primaria entre las candidatas que cumplan lo siguiente:
- tenga menos atributos
- cuyos valores no tengan probabilidad de cambiar en un futuro
- cuyos valores tengan probabilidad de perder unicidad en el futuro
- con el mínimo número de caracteres (si tipo texto)
- sea más fácil de utilizar para los usuarios
- 1 more item...
Segunda FN
- Una Relación esta en 2FN si y sólo si está en 1FN y todos los atributos que no forman parte de la Clave Principal tienen dependencia funcional completa de ella.
- Los atributos no clave dependen de TODA la clave principal
- Cualquier campo que no dependa de TODA la clave principal se ha de mover a otra tabla
- Una Relación esta en 3FN si y sólo si está en 2FN y no existe ninguna dependencia funcional transitiva en los atributos que no son clave. Todas las dependencias funcionales deben ser respecto a la clave principal.
- No debe haber dependencias entre campos que no sean clave
- Una Relación está en 1FN si y sólo si cada atributo es atómico. Ej: el nombre completo se debe atomizar en campos nombre, ape1 y ape2
- No grupos repetitivos (ej: tel1 tel2 etc)
- Una Relación esta en FNBC si está en 3FN y no existe solapamiento de claves candidatas
- Todo determinanete es una clave candidata
- No existan dependencias funcionales no triviales de los atributos que no sean un conjunto de la clave candidata
-
- Una Relación esta en 4FN si y sólo si está en 3FN (o FNBC) y las únicas dependencias multivaluadas son aquellas que dependen de las claves candidatas.
- No ha de existir dependencias multivaluadas
- Dependencia funcional [2]: A → B, representa que B es funcionalmente dependiente de A. Para un valor de A siempre aparece un valor de B. Ejemplo: Si A es el D.N.I., y B el Nombre, está claro que para un número de D.N.I, siempre aparece el mismo nombre de titular.
- Dependencia funcional completa: A → B, si B depende de A en su totalidad. Ejemplo: Tiene sentido plantearse este tipo de dependencia cuando A está compuesto por más de un atributo. Por ejemplo, supongamos que A corresponde al atributo compuesto: D.N.I._Empleado + Cod._Dpto. y B es Nombre_Dpto. En este caso B depende del Cod_Dpto., pero no del D.N.I._Empleado. Por tanto no habría dependencia funcional completa.
- Dependencia transitiva: A→B→C. Si A→B y B→C, Entonces decimos que C depende de forma transitiva de A. Ejemplo: Sea A el D.N.I. de un alumno, B la localidad en la que vive y C la provincia. Es un caso de dependencia transitiva A→ B → C.
- Determinante funcional: todo atributo, o conjunto de ellos, de los que depende algún otro atributo. Ejemplo: El D.N.I. es un determinante funcional pues atributos como nombre, dirección, localidad, etc, dependen de él.
- Dependencia multivaluada: A→→B. Son un tipo de dependencias en las que un determinante funcional no implica un único valor, sino un conjunto de ellos. Un valor de A siempre implica varios valores de B. Ejemplo: CursoBachillerato →→ Modalidad. Para primer curso siempre va a aparecer en el campo Modalidad uno de los siguientes valores: Ciencias, Humanidades/Ciencias Sociales o Artes. Igual para segundo curso.
Quinta FN
- está en 5NF si y sólo si está en 4NF y cada dependencia de unión (join) en ella es implicada por las claves candidatas
DKNF
(Domain-key normal form)
- requiere que la base de datos contenga restricciones de dominios y de claves
Tipos de BBDD
Tipos
La mayoría de las BBDD XML están orientadas a documentos
Codificaciones
- XML
- YAML, [2]
- JSON
- BSON, [2]
- PDF Y documentos Microsoft Office
- Neo4j ==> (Cypher es su lenguaje de consulta)
- InfoGrid
- AllegroGraph
- Infinite Graph
- OrientDB
- Sones GraphDB
- HyperGraphDB
- DEX/Sparksee
-
- Caché
- ConceptBase
- Db4o
- eXtremeDB
- eyeDB,
- Facets (previously known as GemStone-J)
- FastDB
- Main Memory DBMS
- Gemstone Database Management
- System, Generic Object Oriented Database System
(GOODS)
- GigaBASE Database Management System
- Haley Systems
- JADE programming language
- Jasmine
- Object Database
- JDOInstruments
- JODB (Java Objects Database)
- Magma Object Database, Matisse
- MyOODB
- NeoDatis ODB,
- ObjectDB,
- Objectivity/DB,
- Objectstore, Virtuoso Universal Server,
- Orient ODBMS
- Ozone Database Project,
- Perst,
- Realm
- Statice,
- stSoftware
- ODBMS,
- Versant Object Database,
- VOSS (Virtual Object Storage System),
- Zope Object Database
- ZooDB
- JOAFIP object persistence in file
-
Ventajas
- Se ejecutan en máquinas con pocos recursos
- Escalabilidad horizontal
- Pueden manejar gran cantidad de datos
- No generan cuellos botella
Diferencias con
BBDD SQL
- No utilizan SQL como lenguaje de consultas
- No utilizan estructuras fijas como tablas para el almacenamiento de los datos
- No suelen permitir operaciones JOIN
- Arquitectura distribuida
- No garantizan ACID
Empresas que
las utilizan
- Cassandra: Facebook, Twitter…
- HBase: Yahoo, Adobe…
- Redis: Flickr, Instagram, Github…
- Neo4j: Infojobs…
- MongoDB: FourSquare, SourceForge, CERN
Características
- principal característica de MongoDB, HBase y CouchBse
- Consiste en la partición horizontal de una tabla en regiones para así aumentar el rendimiento de la búsqueda y acceso
- Persiste datos a XML
- Asociadas con las BBDD documentales
Clases
- XML habilitado: El XML puede mapearse a relacional
- XML Nativo: usa documentos XML como la unidad elemental de almacenamiento
- Adaptable Database System
- Tendrá soporte hasta 2050
Relacionales
- Apache Derby (Java DB)
- Oracle
- MySQL
- Microsoft SQL Server
- PostgreSQL
- IBM Db2
- SQLite
- Microsoft Access
- MariaDB
- Hive
- Teradata
- Microsoft Azure SQL Database
- Sysbase
jararquías
-
subconjunto
caso particular de generalización
- una sola entidad como subentidad
- siempre es una jerarquía parcial y exclusiva
- Generalización: Se crea una entida padre a partir de las hijas
- Especialización: Se crean entidades hijas a partir de un padre
Diferencias
en conceptos
- Cardinalidad: Nº de entidades con la que puede estar relacionada una entidad dada ó Nº máximo y mínimo de ocurrencias de un tipo de entidad que pueden estar interrelacionadas con una ocurrencia de otro tipo de entidad
- Grado: cantidad de conjuntos de entidades participantes en la relación.
- Cardinalidad: Nº filas
- Grado: Nº columnas o atributos
Tipos de correspondencia
Relaciones 1:N
- Caso 1: Si la entidad del lado «1» presenta participación (0,1), entonces se crea una nueva tabla para la relación que incorpora como claves ajenas las claves de ambas entidades. La clave principal de la relación será sólo la clave de la entidad del lado «N»
- Caso 2: Para el resto de situaciones, la entidad del lado «N» recibe como clave ajena la clave de la entidad del lado «1». Los atributos propios de la relación pasan a la tabla donde se ha incorporado la clave ajena.
Relaciones 1:1
- Caso 1: Si las dos entidades participan con participación (0,1), entonces se crea una nueva tabla para la relación.
- Caso 2: Si alguna entidad, pero no las dos, participa con participación mínima 0 (0,1), entonces se pone la clave ajena en dicha entidad, para evitar en lo posible, los valores nulos.
- Caso 3: Si tenemos una relación 1:1 y ninguna tiene participación mínima 0, elegimos la clave principal de una de ellas y la introducimos como clave clave ajena en la otra tabla. Se elegirá una u otra forma en función de como se quiera organizar la información para facilitar las consultas. Los atributos propios de la relación pasan a la tabla donde se introduce la clave ajena.
Relaciones N:M
- Es el caso más sencillo. Siempre generan tabla. Se crea una tabla que incorpora como claves ajenas o foráneas FK (Foreign Key) cada una de las claves de las entidades que participan en la relación
-
-
-
-
Se caracterizan por:
- Nombre: lo distingue del resto
- Tipo de correspondencia: principales son 1:1, 1:N y N:M
- Cardinalidad: participación en la relación de cada una de las entidades afectadas
CLOB
- Character Large OBjects
- 4 gigabytes of character data.
NCLOB
- National Character Large OBjects
- Character large objects in multibyte national character set
BLOB
- Binary Large OBjects
- 4 gigabytes of binary data.
BFILE
- Binary Files
- file systems outside the Oracle database
- stores a locator, which serves as a pointer to a binary file on the server's file system
- size supported is 4 gigabytes
Bloqueos
NIVELES AISLAMIENTO
ACID(Atomicidad, consistencia, aislamiento y durabilidad)
-
Serializable
Previene: Lecturas sucias, no repetibles y fantasmas --> Bloque escritura, lectura y rango
-
Repetible Read
Previene: Lecturas sucias y no repetibles --> Bloque escritura, lectura
Efectos en lecturas
Lecturas no repetibles
Transaccón 1 lee un dato, transacción 2 actualiza dato, transacción 1 vuelve a leer dato pero ya modificado
Lecturas fantasma
Transacción 1 lee un rango de datos, transacción 2 inserta datos dentro de ese rango, transacción 1 vuelve a leer ese rango pero incluyendo los datos insertados
-
-
Tipos de aislamiento
- SHARED (S) ==> para lectura. Transacciones pueden leer pero no modificar
- UPDATE (U) ==> Solo una transacción a al vez. Si modifica se convierte en bloqueo 'X'
- EXCLUSIVE (X) ==> para INSERT, UPDATE y DELETE. No si hay bloqueo 'S'
- BULK UPDATE (BU) ==> impide acceso a otros procesos
- SHEMA ==> Al modificar esquema. Evita referencias por otras conexiónes, incluso de sus metadatos
-
Tercera
- Modelo Orientado a objetos
- Modelo relacional extendido
Primera
- Sistema jerárquico
- Sistema de red
SGBD
Tipos
SGBDOO
- GEMSTONE/OPAL
- ONTOS
- Versant
- O2
-
- control autorización
- procesador comandos
- control integriad
- optimizador consultas
- gestor transacciones
- planificador
- gestor recuperación
- gestor buffers
Módulos
- Procesador de consultas
- Gestor de la BBDD
- Gestor de ficheros
- Procesador LMD
- Compilador del LDD
- Gestor del diccionario
Tipos
Row
- Se ejecuta una vez por cada registro afectado
Statement
- Se dispara al ejecutar determinadas sentencias
- Se ejecuta una vez independientemente de si ha afectado o no a algún registro
Options
-
Before
- No puede modificar tablas
Características
- No pueden ejecutar COMMIT o ROLLBACK
- Se pueden crea para INSERT, DELETE o UPDATE
Conceptos
IDS
(Integrated Data Store)
- Nucleo sobre el que se basó el modelo de datos en red
- Convertido en estandar gracias a CODASYL
IMG
(Information Management System)
- Gestor de BBDD jerarquico
- De IBM
básicas
- Selección
- Proyección
- Producto cartesiano
- Unión
- Diferencia
Derivadas
- Intersección
- Unión natural
- División
- Agrupación
de existencia
- No puede existir la entidad debil sin la fuerte
de identificación
- A parte de la existencia, no se puede identificar la entidad débil únicamente con sus atributos, sino que necesita también los de la fuerte
Oracle
- SMON (System Monitor)
- supervisor del sistema y se encarga de todas las recuperaciones que
sean necesarias durante el arranque
- PMON (Process Monitor):
- Limpia cache y libera recursos
- DBWR(Database Writer):
- gestionar el contenido de los buffers de datos y del caché del diccionario
- LGWR (Log Writer):
- Es el encargado de escribir los registros redo log en los ficheros redo log
- CKPT (Checkpoint):
- escribe en los ficheros de control los checkpoints
- ARCH (Archiver):
- tiene que ver con los ficheros redo log
- RECO (Recoverer):
- está asociado al servidor distribuido
- LCK (Lock):
- asociado al servidor en paralelo
Compuesto por
- Redo Log Buffers
- Database Buffers
- Shared SQL Pool
DataWareHouse
- WOLAP ==> Web OLAP
- DOLAP ==> Desktop OLAP
- RTOLAP ==> Real Time OLAP
- SOLAP ==> Spatial OLAP
Utilizan BBDD multidimensionales, [2]
- De una sola tabla
- Cada dimensión tiene un campo (columna)
- Cada métrica o hecho tiene un campo
- tablas multivaluadas
- Se asemejan a hipervínculos
-
-
-
- Produral: Manipulan la BBDD registro a registro. Ej: PL/SQL
- No procedural: Operan sobre un conjunto de registros. Ej: SQL,QBE
sentencias
- DECLARE MiCursor CURSOR FOR ... ==> crea cursor
- DECLARE @variableCursor CURSOR ==> crea variable de tipo cursor
- SET @variableCursor = MiCursor ==> asigna el cursor a la variable de tipo cursor
- OPEN nom_cursor ==> abrir o activa cursor
- CLOSE nom_cursor ==> cierra cursor y libera recursos (puntero a filas)
- DEALLOCATE ==> liberar cursor. Borra su identificador o variable
- DROP CURSOR ==> eleminar
- Manipular filas ==> con FETCH, UPDATE y DELETE
- FETCH ==> Recupera una fila específica del conjunto cursor
- FETCH cursor_o_variable INTO lista_variables ==> fila en la que está posicionado el cursor y guarda valor en lista_variables (variables separadas por comas del mismo tipo que columnas)
- FIRST, LAST y ABSOLUTE n==> obtiene primera, ultima o n filas desde la primera (si n es positivo) o desde el final (si n es negativo)
- NEXT, PRIOR, RELATIVE n ==> en ese orden, siguente fila, anterior fila, n filas desde actual, num filas desde actual si n positivo y num filas desde actual si n es negativo
- @@FETCH_STATUS ==> info sobre ultimo FECH ejecutado (0 correcto, -1 fallo, -2 fila desapareció)
-
triggers
- no pueden CREATE, ALTER, DROP BBDD, ni restarurar BBDD o archivo transacciones
- no admite parámetros
- CREATE TRIGGER nom_desencadenador ON tabla FOR lista_comandos AS sentencia SQL
- lista_comandos ==> INSERT, UPDATE,DELETE. Si más de uno separar con comas
- UPDATE (nom_colum) ==> devuelve true si se a modificado una columna concreta
- Inserted, deleted ==> tablas temporales que contienen valores de las filas afectadas
- DateTime ==> entre 1/1/1763 y 31/12/9999. Precision hasta 1/300 seg
- SamallDateTime ==> entre 1/1/1900 y 6/6/2079. Precisión en min
Propiedades
- Identifica a un campo como incremental de 1 a 100
-
Tipos de sentancias
- SELECT INTO ==> crea una tabla con los valores de otra ya existente
- Siempre apuntan a una clave principal
- Solo pueden ser nulas en el caso de entidades débiles
-
-
Sentencias
join
- Se pueden convinar dos campos númerícos incluso si son de distinto tipo
- Se pueden enlazar varias clausulas ON en una instrucción JOIN
- Un LEFT OUTER JOIN o un RIGHT OUTER JOIN puede anidarse dentro de un INNER JOIN pero no al revés
Concurrencia
- Ordenación por marcas de tiempo
- Ordenamiento total / Ordenamiento parcial
- Regla de Thomas
- Técnicas multiversión
- Asignación dinámica de marcas de tiempo
- Protocolos optimista de validación
- Técnicas del bloqueo
- Bloqueo en dos fases
- Interbloqueo
- Granularidad
- Representación interna de consultas
- Conversión a forma canónica
- Elección de procedimientos de bajo nivel
- Generación y elección de planes de consulta
-
-
- Esto es posible en Oracle cuando:
- SELECT contiene la cláusula FOR UPDATE
- La funcionalidad de auditoría está habilitada.
- SELECT invoca a algún tipo de transacción que escribe en la base de datos
-
-
- LOAD DATA INFILE 'c:/tmp/discounts.csv'
INTO TABLE discounts
FIELDS TERMINATED BY ','
ENCLOSED BY '"' LINES
TERMINATED BY '\n'
IGNORE 1 ROWS;
Cadenas de conexión
jdbc
- jdbc:oracle:<drivertype>:<user>/<password><database>
- jdbc:mysql://[host][,failoverhost...][:port]/[database]
- jdbc:postgresql://host:port/database
- jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]
- jdbc:derby:[subsubprotocol:][databaseName][;attribute=value]*
Utilidades
- utilidad de Oracle para realizar backups lógicos
Tipos
- Almacenados definidos por el usuario
- Triggers
- Del sistema
- Extendidos
- ODBC-to-JDBC bridges
- JDBC-to-ODBC bridges
- OLE DB-to-ODBC bridges
- ADO.NET-to-ODBC bridges
-
-
-
-