Mortuux

Diario de un estudiante geek. Informática, tecnología, programación, redes, sistemas operativos, bases de datos…

Archivos en la Categoría: Bases de datos

Drizzle. Fork de MySQL

Como bien indica el título Drizzle es un fork de MySQL, concretamente de la versión 6.0.

Desde entonces ha habido muchos cambios, como los siguientes:

Uso

  • No hay un servidor embebido. El servidor Drizzle no se puede cargar como librería compartida
  • Drizzle está optimizado para entornos concurrentes masivos
  • Diseñado para sistemas POSIX modernos
  • Windows, HP-UX e IRIX no son soportados
  • Drizzle no utiliza timezones. Todo es UTC

Instalación

  • No hay scripts/mysql_install_db o similar. Drizzle se basa en una instalación conocida como “just works” (simplemente funciona)
  • Drizzle puede escuchar en el puerto Drizzle (4427) y/o en el puerto MySQL (3306) y entender los respectivos protocolos

Procedimientos Almacenados

Drizzle actualmente no tiene ningún plugin que implemente procedimientos almacenados. La implementación en MySQL no era óptima

Comandos eliminados

  • ALTER TABLE UPGRADE
  • REPAIR TABLE
  • CREATE FUNCTION
  • CONVERT
  • SET NAMES
  • Borrado y actualizado multi-tabla

Funciones eliminadas

  • crypt()
  • bit_length()
  • bit_count()

Palabras clave eliminadas

  • CIPHER
  • CLIENTE
  • CODE
  • CONTRIBUTORS
  • CPU
  • DEFINER
  • DES_KEY_FILE
  • ENGINES
  • EVERY
  • IO
  • IPC
  • ISSUER

Objetos eliminados

  • No hay requerimiento de un schema mysql
  • No hay SET datatype, hay que usar ENUM
  • No hay comando SET NAMES, UTF-8 por defecto
  • No hay CHARACTER o CHARACTER SET, todo está por defecto en UTF-8
  • No hay TIME, DATETIME o INT
  • No hay TINYINT, SMALLINT o MEDIUMINT. Las operaciones de enteros han sido optimizadas para 32 y 64 bits
  • No hay TINYBLOB, MEDIUMBLOB o LONGBLOB. Hay un BLOB optimizado
  • No hay TINYTEXT, MEDIUMTEXT o LONGTEXT. Usar TEXT o BLOB
  • No hay UNSIGNED
  • No hay tipos de datos espaciales (GEOMETRY, POINT, LINESTRING, POLYGON)

 

Hay bastantes más cambios, pero con estos nos hacemos una idea de más o menos lo que ha cambiado en este nuevo fork que acaba de publicar su primera versión estable.

 

Podéis ver la lista de cambios completos aquí (inglés): Drizzle differences

 

Anuncios

Bases de datos relacionales.



  1. Bases de datos relacionales

    Objetivos y ventajas del modelo relacional

El principal objetivo del modelo relacional es traducir el modelo de negocio (realidad) para que el modelo de base de datos sea lo más parecido posible.

Abstracción del almacenamiento físico

Separación entre el nivel de almacenamiento físico y el nivel conceptual

Utilizando bases de datos relacionales, el depósito de información es compacto, está gestionado de forma transparente. Todas las entidades residen en mismo depósito de información.

Relaciones reflexivas y recursividad

Permite relaciones reflexivas.

Una entidad puede relacionarse consigo misma, lo cual nos lleva pensar en esquemas recursivos.

Abstracción de tablas y vistas

Podemos tener entidades almacenadas en tablas (filas y columnas) y también podemos componer vistas empleando los contenidos de diferentes tablas.

Relaciones y reglas de integridad referencial

Son las líneas que vinculan unas entidades con otras.

Las reglas de integridad referencial se generan a partir de relaciones entre tablas.

Dependiendo de si el campo es clave en origen o en destino podemos tener relaciones fuertes o débiles. Las relaciones fuertes implican reglas de integridad referencial.

Las reglas de integridad referencial sirven para exigir coherencia entre los datos.

Relaciones fuertes y relaciones débiles. Cardinalidad.

Hay varios tipos de relaciones, pueden ser 1 a N o N a M.

Si la relación es NM, se debe crear una tabla de cruce con los campos clave de ambas tablas

Relación fuerte: Porque se trata de una relación de uno a muchos. El hecho de que exista un sello implica que debe estar guardado en un álbum.

Procedimientos almacenados y disparadores (triggers)

Los procedimientos almacenados son funciones y métodos que amplían las posibilidades de manejo de la base de datos.

Estos procedimientos constituyen una capa de programación intermedia muy cercana a la base de datos.

Ejemplos de tareas:

Dar de alta entidades. Una empresa tiene como norma que un cliente nunca pueda darse de alta si no se le ha realizado un análisis de riesgo de cobro. El procedimiento de alta de un cliente verificará que el valor de la columna Riesgo no sea nulo.

Distribuir datos lógicos a lo largo de diferentes tablas físicas sin que externamente se modifique nada.

Obtener datos de hardware o controlar dispositivos externos.

 

Los disparadores o triggers son procedimientos almacenados que se ponen en marcha automáticamente cuando sucede un acontecimiento previsto. Por ejemplo, la inserción de un nuevo registro sobre una tabla.

Más ejemplos:

Llamar a los técnicos de control cuando se ha insertado un registro en la tabla de incidencias de maquinaria

Para enviar un mensaje de correo electrónico a un cliente cuando su mercancía está lista para salir de almacén

Transacciones

Una transacción es un bloque diferenciado de operaciones de escritura sobre una o más tablas, cuyo resultado puede ser confirmado o revocado en su totalidad.

La inserción de una factura implica a su vez la inserción de una cabecera de factura y de unas líneas de factura.

Imaginemos que intentan entrar una línea de factura con una cantidad 0 de unidades o que estamos trabajando con albaranes/factura y las unidades facturadas superan las unidades que tenemos en stock para entregar.

Lo que sucede en este caso es que se revoca la escritura de la cabecera, de las líneas anteriormente grabadas de esa factura y se retorna al estado anterior.

Debe respetar las condiciones ACID.

  • A de atomización: la palabra átomo quiere decir indivisible. Una factura es una entidad lógica indivisible, por ejemplo.
  • C de consistencia: se garantiza que sólo se realizará el bloque si no se rompe ninguna regla de integridad referencial ni ninguna regla de negocio explícitamente guardada en la base de datos.
  • I de Isolation: una operación no puede afectar a otras. Dos transacciones sobre la misma información son independientes y no generan errores.
  • D de durabilidad: una vez que la transacción se ha confirmado, se mantiene en disco completamente grabada aunque haya un fallo de sistema

    Seguridad

Pueden establecer normas de seguridad para proporcionar acceso de lectura, escritura, inserción y borrado de sus usuarios, así como establecer seguridad también sobre los derechos de administración, como por ejemplo creación y destrucción de tablas.

En programación orientada a objetos, una tabla equivale a una entidad o un tipo de objeto: una clase. La seguridad es a nivel de tipos, y no de registro.

Existe una segunda forma de seguridad que no está implementada en las bases de datos relacionales que es la seguridad a nivel de instancias; la seguridad a nivel de filas individuales de las tablas.

Lenguajes propias para la gestión de datos y recursos

Lenguaje unificado. Se trata del lenguaje SQL del cual han surgido variaciones y dialectos propias de cada fabricante:

  • DDL (Data Definition Language): Lenguaje de definición de estructuras de datos. Permite crear tablas, modificarlas y eliminarlas
  • DML (Data Management Language): Lenguaje de manipulación de datos. Permite dar de alta filas, modificar contenido de columnas y borrar filas y columnas
  • DCL (Data Control Language): Lenguaje de control de datos. Permite administrar la seguridad de quién puede leer, escribir o borrar datos en una tabla; quién puede crear o eliminar tablas, etc.

 

Instalar y configurar Oracle XE en Linux

Lo primero que debemos hacer es descargar el correspondiente .rpm o .deb, en mi caso he descargado el .deb

Podemos descargarlo desde la página oficial

Una vez instalado, debemos configurarlo:

sudo /etc/init.d/oracle-xe configure

Oracle Database 10g Express Edition Configuration
————————————————-
This will configure on-boot properties of Oracle Database 10g Express
Edition.  The following questions will determine whether the database should
be starting upon system boot, the ports it will use, and the passwords that
will be used for database accounts.  Press <Enter> to accept the defaults.
Ctrl-C will abort.
Specify the HTTP port that will be used for Oracle Application Express [8080]:8080
Specify a port that will be used for the database listener [1521]:1521
Specify a password to be used for database accounts.  Note that the same
password will be used for SYS and SYSTEM.  Oracle recommends the use of
different passwords for each database account.  This can be done after
initial configuration:
Confirm the password:

Do you want Oracle Database 10g Express Edition to be started on boot (y/n) [y]:y
Starting Oracle Net Listener…Done
Configuring Database…Done
Starting Oracle Database 10g Express Edition Instance…Done
Installation Completed Successfully.
To access the Database Home Page go to “http://127.0.0.1:8080/apex&#8221;

Y ya está!

Ahora sólo nos queda acceder a la página de inicio de Oracle XE y acceder con el usuario SYS o SYSTEM y la contraseña que hemos elegido.

Oracle

Oracle.

Diseño de consultas en Access : QBE

El diseño de las consultas en Access se realiza por un método llamado QBE (Query By Example) que consiste en la construcción de la consulta en un modo gráfico.
  • Consultas  de selección: Son las consultas que extraen datos de una o más tablas para mostrarlos en una vista diferente. Muestra aquellos datos de una tabla que cumplen los criterios especificados en la consulta.
  • Consultas de parámetros: Una consulta parametrizada es una consulta que, cuando se ejecuta muestra un cuadro de diálogo propio que solicita información por ejemplo, criterios para recuperar registros o un valor que desea insertar en un campo. Para diseñar la consulta basta con introducir nombres de variables entre “[]” para que Access solicite los datos.
  • Consultas de tabla de referencias cruzadas: Las consultas de referencias cruzadas se utilizan para calcular y reestructurar datos de manera que su análisis sea más sencillo. Las consultas de referencias cruzadas calculan una suma, una media, un recuento u otro tipo de totales de datos, y agrupan los resultados en una tabla de dos entradas.
  • Consultas de acción: Son consultas que realizan cambios sobre los registros de las tablas a los que hacen referencia. Hay cuatro tipos:
    • Consulta de eliminación: Elimina un grupo de registros de una o más tablas. Por ejemplo, puede utilizar una consulta de eliminación para quitar productos que ya no se fabrican o de los que no hay pedidos.
    • Consulta de actualización: Realiza cambios globales en un grupo de registros de una o más tablas. Por ejemplo, puede aumentar los precios un 10% para todos los productos lácteos.
    • Consulta de datos anexados: Agrega un grupo de registros de una o más tablas al final de una o más tablas. Por ejemplo, suponga que consigue nuevos clientes y que tiene una base de datos que contiene una tabla con información acerca de esos clientes. Para evitar tener que escribir toda esta información otra vez, puede anexar dicha tabla a la tabla Clientes.
    • Consulta de creación de tabla: Crea una tabla nueva a partir de la totalidad o una parte de los datos de una o más tablas. Las consultas de creación de tablas son útiles para crear una tabla que desee exportar a otra base de datos o a una tabla histórica que contenga registros antiguos.
  • Consultas específicas de SQL: Son consultas que no se pueden definir desde la cuadrícula QBE de Access, si no que se tienen que definir directamente en SQL.

Videotutorial ERwin 4.0

Creando el diseño de una base de datos con ERwin 4.0

Parte 1:

Parte 2:

Diseño de bases de datos

1. Diseño de bases de datos

1.1. Modelo de datos
Un modelo de datos es un conjunto de conceptos, reglas y convenciones que nos permiten describir los datos, las relaciones entre los datos, las restricciones del mundo real y que nos permite manipular dichos datos.
Formalmente un modelo de datos sería MD = (R, O),
Las Reglas serían la parte estática del modelo y las Operaciones la parte dinámica
1.1.1. Parte estática
Está compuesta de dos cosas: objetos y restricciones
Objetos:
Entidades: Objeto abstracto o concreto del mundo real con existencia propia y fácilmente identificable (persona, lugar, suceso, etc.)
Propiedades o atributos de las entidades: Mínimo elemento lógico de información que se puede encontrar en una entidad o relación entre entidades.
Dominio: Rango de valores de cada atributo (nombre->alfanumérico, cumpleaños-> fecha)
Relación o asociación entre entidades: Por ejemplo un grupo de alumnos se relaciona con un aula.

1.1.2. Tipos de restricciones
Las impuestas por el usuario las impone el mundo real (Por ejemplo que los nº de teléfono tengan X números).
Inherente al modelo: El modelo de dato no nos permite determinados objetos ni relaciones entre objetos.

DDL: Lenguaje de definición de datos
Son órdenes que permiten describir la parte estática del modelo de datos.

1.1.3. Parte dinámica
Dinámica de un modelo de datos.
Está compuesto por un conjunto de operaciones que se definen sobre la estática del modelo y que se van a aplicar sobre los datos almacenados y que se denominan ocurrencias.
Las operaciones pueden ser:
Selección: Consiste seleccionar o localizar una o más ocurrencias, por ejemplo de la entidad alumno localizar ocurrencia mayor 20 años
Acción: Operaciones que se realizan sobre ocurrencias previamente seleccionadas, por ejemplo mirar, modificar, ver, insertar.

El lenguaje DML -> Lenguaje para la manipulación de datos
1.2. Pasos en el diseño de una base de datos
1.2.1. Nivel conceptual
Consiste en analizar el mundo real para describir las entidades, atributos y dominios y las relaciones entre entidades.
Este modelo es totalmente independiente de cualquier sistema gestor de base de datos (SGBD) El esquema conceptual es el modelo entidad-relación (E/R)
1.2.2. Nivel lógico
Se realiza la adaptación del esquema conceptual al tipo de SGBD que vayamos a utilizar.
1.2.3. Nivel físico
Se implementa el esquema relacional en el SGBD concreto (Access, Oracle, MySQL).

1.3. Modelo conceptual Entidad/Relación (E/R)
Restricciones Entidad: Debe tener existencia propia, puede llevar asociado un predicado que deben cumplir todas las ocurrencias, cada ocurrencia de la entidad debe poder distinguirse de las demás, todas las ocurrencias de la entidad deben tener los mismos atributos. Representación cuadrado con nombre de entidad.
Restricciones atributo: Cada atributo debe tener un significado único y consistente, no es necesario especificar los atributos que se obtienen mediante cálculos. Representación —–O nombre. Si el redondel está en negrita, es el atributo principal (clave: identifica de forma única cada ocurrencia de la entidad. Puede haber atributos alternativos y atributos compuestos también. Por ejemplo Empleado->Clave: Nif… alternativo: nº SS… Fecha nacimiento ->Día, mes, año: Compuesto

1.4. Relaciones
La relación se representa con un rombo.
• Nombre: Suele ser un verbo.
• Grado: Número de entidades que asocia
o Una entidad ( Persona – casa )
o Binaria: Dos entidades (Profesor – imparte – Grupo)
o Ternaria: Tres entidades ( Cliente – Hotel – Vuelo – contrata)
Tipo de correspondencia: Expresa el número de ocurrencias de la entidad que pueden relacionarse con una ocurrencia de la otra entidad.
Un profesor puede impartir a N grupos
1 profesor – N grupos
N Grupos – 1 grupos NM
1 persona casada con una persona -> 1 – 1
Cliente realiza pedido
Cliente N pedidos
Pedidos 1 cliente -> 1 N

Cardinalidad se expresa cómo (mínimo, máximo)
Un profesor como mínimo imparte 1 grupo, máximo N.
Un grupo es impartido como mínimo por 1, maximo N.
Una persona se casa como minimo con 0, como máximo con 1.
Cliente realiza como mínimo 1 como máximo N. un pedido como mínimo 1 como maximo por 1