Instala PhpMyAdmin en Ubuntu

sudo apt-get install phppgadmin

Finalizada la instalación, para poner en funcionamiento esta aplicación:

– Reinicia el servidor apache: ./apache2 restart

– En la barra de dirección de tu navegador escribe lo siguiente:

http://localhost/phppgadmin

Si no te funcionara, entra en el modo comando de linux y escribe las siguientes ordenes:

sudo cp /etc/apache2/conf.d/phppgadmin /etc/apache2/conf-enabled/phppgadmin.conf

sudo /etc/init.d/apache2 restart

Nuevamente vuelve a escribir:

http://localhost/phppgadmin

Gestión de usuarios con PostgreSQL

Modificar la contraseña de un usuario

ALTER ROLE usu1 WITH PASSWORD ‘54321’

Borrar un usuario


DROP USER usu1

Especificar  privilegios de usuarios INSERT, SELECT, DELETE, UPDATE

GRANT SELECT, INSERT ON tabla1 TO usu1

Crear superusuario

ALTER ROLE usu1 WITH SUPERUSER

Añadir usuario a grupo

ALTER GROUP administradores ADD USER usu1;

Eliminar usuario de un grupo

ALTER GROUP administradores DROP USER usu1;

Muestra todos los usuarios creados


SELECT * FROM pg_user;

Muestra todos los grupos creados
SELECT * FROM pg_group;

Asignar todos los privilegios a un usuario

GRANT ALL ON ALL TABLES IN SCHEMA public to usu1;

Crea usuario con capacidad o role de crear bases de datos

CREATE ROLE creador CREATEDB;

Quitar privilegios a un usuario

REVOKE ALL ON tabla1 FROM usu1;

Quitar privilegios a todos los usuario

REVOKE ALL ON tabla1 FROM public;

Quitar un privilegio UPDATE, DELETE, INSERT, SELECT

REVOKE UPDATE ON tabla1 FROM public;
REVOKE UPDATE ON tabla1 FROM usu1;

Ver los privilegios que tienen todas las tablas de una base de datos usada

Psql \z

Diagrama Entidad Relación (E/R)

Un diagrama entidad relación o diagrama Chen es un sistema de representación de la información de una aplicación informática.

En un diagrama Chen se representa la información mediante Entidades o rectángulos; a continuación se representa la relación existente (si es que la hay) entre las diferentes entidades; finalmente se establece la cardinalidad de cada una de estas relaciones.

El diagrama Chen ayuda al diseñador de la base de datos a efectuar un correcto diseño de la información a partir del cual se obtendrá la base de datos con sus respectivas tablas.

Creación de un usuario PostgreSQL

Únicamente el usuario administrador de PostgreSQL  va a poder crear nuevos usuarios en este SGBD. Desde el prompt de Linux nos conectamos como usuario postgres:

sudo -i -u postgres

A continuación escribimos la orden que nos permite entrar en el interprete de ordenes de PostgreSQL:

psql

La instrucción para crear un nuevo usuario denominado pablo es la siguiente:

CREATE USER pablo WITH PASSWORD ‘12345’;

Administración PostgreSQL con SQL

Modificar la contraseña de un usuario

ALTER ROLE usu1 WITH PASSWORD ‘54321’

Borrar un usuario


DROP USER usu1

Especificar  privilegios de usuarios INSERT, SELECT, DELETE, UPDATE

GRANT SELECT, INSERT ON tabla1 TO usu1

Crear superusuario

ALTER ROLE usu1 WITH SUPERUSER

Añadir usuario a grupo

ALTER GROUP administradores ADD USER usu1;

Eliminar usuario de un grupo

ALTER GROUP administradores DROP USER usu1;

Muestra todos los usuarios creados


SELECT * FROM pg_user;

Muestra todos los grupos creados
SELECT * FROM pg_group;

Asignar todos los privilegios a un usuario

GRANT ALL ON ALL TABLES IN SCHEMA public to usu1;

Crea usuario con capacidad o role de crear bases de datos

CREATE ROLE creador CREATEDB;

Quitar privilegios a un usuario

REVOKE ALL ON tabla1 FROM usu1;

Quitar privilegios a todos los usuario

REVOKE ALL ON tabla1 FROM public;

Quitar un privilegio UPDATE, DELETE, INSERT, SELECT

REVOKE UPDATE ON tabla1 FROM public;
REVOKE UPDATE ON tabla1 FROM usu1;

Ver los privilegios que tienen todas las tablas de una base de datos usada

Psql \z

HERENCIA

Tenemos una tabla proveedores
nif varchar(20)
nom varchar(25)
edad integer

A partir de la anterior tabla queremos heredarla para crear una nueva, denominada proveedor2 con los campos y datos(registros) anteriores pero con un nuevo campo email
CREATE TABLE proveedor2 (email varchar(50)) inherits (proveedor);

\d proveedores
vemos la estructura de la tabla proveedores

\d proveedor2
vemos la estructura de la tabla proveedor2 con el nuevo campo email aañadido

Añadimos un nuevo registro en la tabla proveedores:
INSERT INTO proveedor2VALUES (‘12345678g’, ‘pepe’, 30);


TRANSACCIONES

Inicio transaccion:
BEGIN;
INSERT INTO Comprador(idcomprador, idcentro, nombrecomprador) VALUES (‘5′,’1′,’luis’);

Para finalizar la transacción:

COMMIT;

Transaccion inacabada:

BEGIN;
INSERT INTO Comprador(idcomprador, idcentro, nombrecomprador) VALUES (‘5′,’1′,’luis’);

Para finalizar la transacción:

ROLLBACK;

Creación o inserción de puntos de guardado (permiten restaurar la base de datos a un punto de guardado efectuado):

BEGIN;
UPDATE cliente SET edad=edad + 1 WHERE nom=’pepe’;
SAVEPOINT guarda1;
UPDATE cliente SET edad=edad + 1 WHERE nom=’juan’;
SAVEPOINT guarda2;
UPDATE cliente SET edad=edad + 1 WHERE nom=’luis’;

SELECT * FROM cliente;

Restauramos todo lo que se había cambiado hasta el punto guarda1;

ROLLBACK TO guarda1;

Finalmente cerramos la transacción:

COMMIT;

Disparadores o TRIGGER’S

Un trigger es una acción que se ejecuta cuando un evento sucede. Estos eventos pueden ser, por ejemplo, un nuevo registro, una modificación, una eliminación, etcétera.

Una vez que esto sucede, se ejecuta una función previamente creada.
La función a crear es para proteger los datos de unas tablas. No pemitirá el borrado de filasm si la usamos en disparador, es del tipo BEFORE:

CREATE OR REPLACE FUNCTION protegerdatos() RETURNS TRIGGER AS $;
DECLARE
BEGIN
RETURN NULL;
END;
$protegerdatos$ LANGUAGE plpgsql;

Ya que creamos la función, procedemos a crear el trigger

CREATE TRIGGER protegerdatos BEFORE DELETE
ON Comprador FOR EACH ROW
EXECUTE PROCEDURE protegerdatos();

Una vez creado, este trigger se encargará de devolver el valor nulo cuando se intente borrar una fila o registro en la tabla comprador.

Normalización de tablas

Con la conclusión de este tema se dará por finalizada esta primera parte del curso correspondiente al diseño y análisis de bases de datos. Los temas siguientes van a ser mucho más prácticos en lo que respecta al uso de tecnologías relacionadas con las bases de datos, concretamente se procederá al estudio de diferentes Sistemas Gestores de Bases de Datos (SGBD) de amplia utilización hoy en día: Openbase, Acces, Mysql y Postgressql.

A todo esto ya llegaremos en su momento, de momento nos centraremos con la Normalización de tablas.

La normalización de datos es una técnica que pretende optimizar la estructura de las tablas de una base de datos.

Hasta ahora, en esta asignatura, habéis aprendido a realizar análisis y diseños de bases de datos aplicando para ello el Modelo Entidad Relación (MER). Una vez obtenido este modelo se os ha explicado cómo generar las tablas correspondientes al MER.

En este tema que vamos a iniciar, partimos de las tablas obtenidas en el tema anterior y vamos a optimizar su uso evitando así un deficiente trabajo con las mismas: eliminación de múltiples valores para un mismo campo de un registro (campos multivaluados) y repetición innecesaria de los datos de los registros de una tabla, entre otros problemas.

Para mejorar las tablas de una base de datos aplicaremos criterios de optimización concretados en las formas normales (FN). En este curso se verán las características de las tres primeras formas normales (1FN, 2FN, 3FN).

En el caso que una tabla no se encontrara en una determinada forma normal, se explicará como modificarla para que finalmente sí se encuentre en esa forma normal. El proceso de modificación de la tabla conllevará la eliminación de algún campo de la misma así como la creación de alguna nueva tabla con los datos suprimidos en la tabla previamente modificada y normalizada.

Todo esto de una forma sencilla y pausada se irá viendo y trabajando en este breve tema que ahora mismo iniciamos.

Jesús Albert Magro

Gestión de usuarios con MySQL

MySQL es un Sistema Gestor de Base de Datos (SGBD) multiusuario, por lo tanto, a diferencia de otros SGBD como Access o Base de LibreOffice, múltiples usuarios podrán acceder al sistema y por ende a la información contenida en sus bases de datos.

Esta característica, que a priori es una gran ventaja, conlleva que el administrador del sistema tenga que realizar la gestión de usuarios dándolos de alta, modificándolos, borrándolos si ya no hacen falta y, muy importante, definiendo privilegios o revocándolos para que el acceso al sistema por parte de los diferentes tipos de usuarios sea lo más correcto y eficiente posible.

El usuario administrador del SGBD o cualquier otro con privilegios de gestión de usuarios podrá realizar esta tarea de dos formas posibles. La primera será haciendo uso del lenguaje SQL, desde consola, con todas las instrucciones que posee para la gestión de usuarios y privilegios; la segunda posibilidad y más cómoda será empleando la herramienta web para la gestión de bases de datos MySQL PhpMyAdmin.

Así pues, de todo esto tratará el tema que vamos a empezar.

Como «usuarios» que sois del curso de Gestión de Bases de Datos y futuros administradores de sistemas os emplazo a que ampliéis vuestros conocimientos en esta materia que de seguro os serán de gran utilidad.

Jesús Albert Magro

Profesor de Gestión de Base de Datos del Ciclo Formativo de DAW