Está en la página 1de 43

Introduccin a Bases de Datos II

Docente: Ing. Arturo Diaz Pulido.


INTRODUCCIN A LOS SISTEMAS
GESTORES DE BASES DE DATOS

El trmino de bases de datos fue escuchado por primera vez en 1963, en un simposio celebrado
en California, Estados Unidos.
Una base de datos se puede definir como un conjunto de informacin relacionada que se
encuentra agrupada o estructurada.
Desde el punto de vista de la informtica, la base de datos es un sistema formado por un conjunto
de datos almacenados en discos que permiten el acceso directo a ellos y un conjunto de
programas que manipulen ese conjunto de datos.
Conceptos de bases de datos:
1. Base de Datos: es la coleccin de datos aparentes usados por el sistema de aplicaciones de una
determinada empresa.
2. Base de Datos: es un conjunto de informacin relacionada que se encuentra agrupada o
estructurada. Un archivo por s mismo no constituye una base de datos, sino ms bien la forma en
que est organizada la informacin es la que da origen a la base de datos.
3. Base de Datos: coleccin de datos organizada para dar servicio a muchas aplicaciones al mismo
tiempo al combinar los datos de manera que aparezcan estar en una sola ubicacin
1 Requerimientos de las bases de datos
El anlisis de requerimientos para una base de datos incorpora las mismas tareas que el anlisis
de requerimientos del software. Es necesario un contacto estrecho con el cliente; es esencial la
identificacin de las funciones e interfaces; se requiere la especificacin del flujo, estructura y
asociatividad de la informacin y debe desarrollarse un documento formal de los requerimientos.
Requerimientos administrativos: La bases de datos es una disciplina organizacional, un mtodo,
ms que una herramienta o una tecnologa. Requiere de un cambio conceptual y organizacional,
en funcin directa.
1. Elementos claves de organizacin en un ambiente de Bases de Datos
2. Sistema de administracin de base de datos
3. Administracin de informacin
4. Tecnologa de administracin de base de datos
5. Usuarios
6. Planeacin de informacin y tecnologa de modelaje
2 Caractersticas de las bases de datos
Una base de datos contiene entidades de informacin que estn relacionadas va organizacin y
asociacin.

La arquitectura lgica de una base de datos se define mediante un esquema que representa las
definiciones de las relaciones entre las entidades de informacin.

La arquitectura fsica de una base de datos depende de la configuracin del hardware residente.
Sin embargo, tanto el esquema (descripcin lgica como la organizacin (descripcin fsica) deben
adecuarse para satisfacer los requerimientos funcionales y de comportamiento para el acceso al
anlisis y creacin de informes

Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
3 Ventajas en el uso de bases de datos
La utilizacin de bases de datos como plataforma para el desarrollo de Sistemas de Aplicacin en
las Organizaciones se ha incrementado notablemente en los ltimos aos, se debe a las ventajas
que ofrece su utilizacin, algunas de las cuales se comentarn a continuacin:
1. Globalizacin de la informacin: permite a los diferentes usuarios considerar la informacin como
un recurso corporativo que carece de dueos especficos.
2. Eliminacin de informacin inconsistente: si existen dos o ms archivos con la misma informacin,
los cambios que se hagan a stos debern hacerse a todas las copias del archivo de facturas.
3. Permite compartir informacin.
4. Permite mantener la integridad en la informacin: la integridad de la informacin es una de sus
cualidades altamente deseable y tiene por objetivo que slo se almacena la informacin correcta.
5. Independencia de datos: el concepto de independencia de datos es quizs el que ms ha ayudado
a la rpida proliferacin del desarrollo de Sistemas de Bases de Datos. La independencia de datos
implica un divorcio entre programas y datos.
Caractersticas de los Sistemas Gestores de Bases de Datos

Un sistema gestor de bases de datos o SGBD (aunque se suele utilizar ms a menudo las siglas
DBMS procedentes del ingls, Data Base Management System) es el software que permite a los
usuarios procesar, describir, administrar y recuperar los datos almacenados en una base de datos.

En estos Sistemas se proporciona un conjunto coordinado de programas, procedimientos y
lenguajes que permiten a los distintos usuarios realizar sus tareas habituales con los datos,
garantizando adems la seguridad de los mismos.
DBMS

El xito del SGBD reside en mantener la seguridad e integridad de los datos. Lgicamente tiene
que proporcionar herramientas a los distintos usuarios. Entre las herramientas que proporciona
estn:
Herramientas para la creacin y especificacin de los datos. As como la estructura de la base de
datos.
Herramientas para administrar y crear la estructura fsica requerida en las unidades de
almacenamiento.
Herramientas para la manipulacin de los datos de las bases de datos, para aadir, modificar,
suprimir o consultar datos.
Herramientas de recuperacin en caso de desastre
Herramientas para la creacin de copias de seguridad
Herramientas para la gestin de la comunicacin de la base de datos
Herramientas para la creacin de aplicaciones que utilicen esquemas externos de los datos
Herramientas de instalacin de la base de datos
Herramientas para la exportacin e importacin de datos
Los SGBD tienen que realizar tres tipos de funciones para ser considerados vlidos.

1-Funcin de descripcin o definicin
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Permite al diseador de la base de datos crear las estructuras apropiadas para integrar
adecuadamente los datos. Esta funcin es la que permite definir las tres estructuras de la base de
datos (relacionadas con sus tres esquemas).
Estructura interna
Estructura conceptual
Estructura externa

Esta funcin se realiza mediante el lenguaje de descripcin de datos o DDL. Mediante ese
lenguaje:
Se definen las estructuras de datos
Se definen las relaciones entre los datos
Se definen las reglas que han de cumplir los datos

2-Funcin de manipulacin
Permite modificar y utilizar los datos de la base de datos. Se realiza mediante el lenguaje de
modificacin de datos o DML. Mediante ese lenguaje se puede:
Aadir datos
Eliminar datos
Modificar datos
Buscar datos

Actualmente se suele distinguir aparte la funcin de buscar datos en la base de datos (funcin de
consulta). Para lo cual se proporciona un lenguaje de consulta de datos o DQL.

3-Funcin de control
Mediante esta funcin los administradores poseen mecanismos para proteger las visiones de los
datos permitidas a cada usuario, adems de proporcionar elementos de creacin y modificacin de
esos usuarios.
Se suelen incluir aqu las tareas de copia de seguridad, carga de ficheros, auditoria, proteccin
ante ataques externos, configuracin del sistema, etc.

El lenguaje que implementa esta funcin es el lenguaje de control de datos o DCL.

El esquema siguiente presenta el funcionamiento tpico de un SGBD:

Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.

El esquema anterior reproduce la comunicacin entre un proceso de usuario que desea acceder a
los datos y el SGBD:
1. El proceso lanzado por el usuario llama al SGBD indicando la porcin de la base de datos que se
desea tratar
2. El SGBD traduce la llamada a trminos del esquema lgico de la base de datos. Accede al
esquema lgico comprobando derechos de acceso y la traduccin fsica (normalmente los
metadatos se guardan una zona de memoria global y no en el disco)
3. El SGBD obtiene el esquema fsico
4. El SGBD traduce la llamada a los mtodos de acceso del Sistema Operativo que permiten acceder
realmente a los datos requeridos
5. El Sistema Operativo accede a los datos tras traducir las rdenes dadas por el SGBD
6. Los datos pasan del disco a una memoria intermedia o buffer. En ese buffer se almacenarn los
datos segn se vayan recibiendo
7. Los datos pasan del buffer al rea de trabajo del usuario (ATU) del proceso del usuario. Los pasos
6 y 7 se repiten hasta que se enve toda la informacin al proceso de usuario.
8. En el caso de que haya errores en cualquier momento del proceso, el SGBD devuelve indicadores
en los que manifiesta si ha habido errores o advertencias a tener en cuenta. Esto se indica al rea
de comunicaciones del proceso de usuario. Si las indicaciones son satisfactorias, los datos de la
ATU sern utilizables por el proceso de usuario.
Estructuras operacionales
Actualmente casi todos los sistemas gestores de base de datos poseen tambin la misma idea
operacional (la misma forma de funcionar con el cliente) en la que se entiende que la base de
datos se almacena en un servidor y hay una serie de clientes que pueden acceder a los datos del
mismo. Las posibilidades son:
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Estructura Cliente-Servidor. Estructura clsica, la base de datos y su SGBD estn en un servidor al
cual acceden los clientes. El cliente posee software que permite al usuario enviar instrucciones al
SGBD en el servidor y recibir los resultados de estas instrucciones. Para ello el software cliente y el
servidor deben utilizar software de comunicaciones en red.
Cliente multi-servidor. Ocurre cuando los clientes acceden a datos situados en ms de un servidor.
Tambin se conoce esta estructura como base de datos distribuida. El cliente no sabe si los datos
estn en uno o ms servidores, ya que el resultado es el mismo independientemente de dnde se
almacenan los datos. En esta estructura hay un servidor de aplicaciones que es el que recibe las
peticiones y el encargado de traducirlas a los distintos servidores de datos para obtener los
resultados.
Cliente-Servidor con facilidades de usuario-Servidor de base de datos. Se trata de una forma de
conexin por el que los clientes no conectan directamente con la base de datos sino con un
intermediario (normalmente un Servidor Web) que tiene una mayor facilidad para comunicarse con
los usuarios.
Modelos de organizacin de la base de datos
Se distinguen principalmente estos tipos:

Modelo de jerrquico de datos:
Una clase de modelo lgico de bases de datos que tiene una estructura arborescente. Un registro
subdivide en segmentos que se interconectan en relaciones padre e hijo y muchos ms. Los
primeros sistemas administradores de bases de datos eran jerrquicos. Puede representar dos
tipos de relaciones entre los datos: relaciones de uno a uno y relaciones de uno a muchos


Modelo de datos en red:
Es una variacin del modelo de datos jerrquico. De hecho las bases de datos pueden traducirse
de jerrquicas a en redes y viceversa con el objeto de optimizar la velocidad y la conveniencia del
procesamiento. Mientras que las estructuras jerrquicas describen relaciones de muchos a
muchos.

Modelo relacional de datos:
Es el ms reciente de estos modelos, supera algunas de las limitaciones de los otros dos
anteriores. El modelo relacional de datos representa todos los datos en la base de datos como
sencillas tablas de dos dimensiones llamadas relaciones. Las tablas son semejantes a los archivos
planos, pero la informacin en ms de un archivo puede ser fcilmente extrada y combinada. Es el
que estudiaremos con ms detalle.

Modelo orientado a objeto:
Las bases de datos orientadas a objetos, tienen una organizacin similar a la de los rboles.
Donde cada nodo del rbol representa un campo y cada rbol un registro, cada tipo de nodo tiene
un mtodo distinto de bsqueda. Que es equivalente a decir que todos los campos pueden ser
utilizados como campos llave, pero complica el diseo. Si la base de datos es demasiado grande, o
tiene relaciones demasiado complejas el grafo resultante se vuelve una maraa ininteligible.

Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Bases de Datos relacionales
En una computadora existen diferentes formas de almacenar informacin. Esto da lugar a distintos
modelos de organizacin de la base de datos: jerrquico, red, relacional y orientada a objeto.
Los sistemas relacionales son importantes porque ofrecen muchos tipos de procesos de datos,
como: simplicidad y generalidad, facilidad de uso para el usuario final, perodos cortos de
aprendizaje y las consultas de informacin se especifican de forma sencilla.

Las tablas son un medio de representar la informacin de una forma ms compacta y es posible
acceder a la informacin contenida en dos o ms tablas. Ms adelante explicaremos que son las
tablas.

Las bases de datos relacionales estn constituidas por una o ms tablas que contienen la
informacin ordenada de una forma organizada. Cumplen las siguientes leyes bsicas:
Generalmente, contendrn muchas tablas.
Una tabla slo contiene un nmero fijo de campos.
El nombre de los campos de una tabla es distinto.
Cada registro de la tabla es nico.
El orden de los registros y de los campos no est determinados.
Para cada campo existe un conjunto de valores posible.
Origen de las bases de datos relacionales

Edgar Frank Codd defini las bases del modelo relacional a finales de los 60. En 1970 publica el
documento A Relational Model of data for Large Shared Data Banks (Un modelo relacional de
datos para grandes bancos de datos compartidos). Actualmente se considera que ese es uno de
los documentos ms influyentes de toda la historia de la informtica. Lo es porque en l se
definieron las bases del llamado Modelo Relacional de Bases de Datos. Anteriormente el nico
modelo terico estandarizado era el Codasyl que se utiliz masivamente en los aos 70 como
paradigma del modelo en red de bases de datos.

Codd se apoya en los trabajos de los matemticos Cantor y Childs (cuya teora de conjuntos es la
verdadera base del modelo relacional). Segn Codd los datos se agrupan en relaciones
(actualmente llamadas tablas) que es un concepto que se refiere a la estructura que aglutina datos
referidos a una misma entidad de forma independiente respecto a su almacenamiento fsico.

Lo que Codd intentaba fundamentalmente es evitar que las usuarias y usuarios de la base de datos
tuvieran que verse obligadas a aprender los entresijos internos del sistema. Pretenda que los
usuarios/as trabajaran de forma sencilla e independiente del funcionamiento fsico de la base de
datos en s. Fue un enfoque revolucionario.

Aunque trabajaba para IBM, esta empresa no recibi de buen grado sus teoras (de hecho continu
trabajando en su modelo en red IMS). De hecho fueron otras empresas (en especial Oracle) las
que implementaron sus teoras. Pocos aos despus el modelo se empez a utilizar cada vez ms,
hasta finalmente ser el modelo de bases de datos ms popular. Hoy en da casi todas las bases de
datos siguen este modelo.

Codd persegua estos objetivos con su modelo:
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Independencia fsica. La forma de almacenar los datos, no debe influir en su manipulacin lgica.
Si la forma de almacenar los datos cambia, los usuarios no tienen siquiera porque percibirlo y
seguirn trabajando de la misma forma con la base de datos. Esto permite que los usuarios y
usuarias se concentren en qu quieren consultar en la base de datos y no en cmo est realizada
la misma.
Independencia lgica. Las aplicaciones que utilizan la base de datos no deben ser modificadas
porque se modifiquen elementos de la base de datos. Es decir, aadir, borrar y suprimir datos, no
influye en las vistas de los usuarios. De una manera ms precisa, gracias a esta independencia el
esquema externo de la base de datos es realmente independiente del modelo lgico.
Flexibilidad. La base de datos ofrece fcilmente distintas vistas en funcin de los usuarios y
aplicaciones.
Uniformidad. Las estructuras lgicas siempre tienen una nica forma conceptual (las tablas).
Sencillez. Facilidad de manejo (algo cuestionable, pero ciertamente verdadero si comparamos con
los sistemas gestores de bases de datos anteriores a este modelo).
Elementos de una base de datos relacional

Relacin o tabla
Segn el modelo relacional (desde que Codd lo enunci) el elemento fundamental es lo que se
conoce como relacin, aunque ms habitualmente se le llama tabla (o tambin array o matriz).
Codd defini las relaciones utilizando un lenguaje matemtico, pero se pueden asociar a la idea de
tabla (de filas y columnas) ya que es ms fcil de entender.
No hay que confundir la idea de relacin segn el modelo de Codd, con lo que significa una
relacin en el modelo Entidad/Relacin de Chen. No tienen nada que ver.

Las relaciones constan de:
Atributos. Referido a cada propiedad de los datos que se almacenan en la relacin (nombre,
dni,...).
Tuplas. Referido a cada elemento de la relacin. Por ejemplo si una relacin almacena personas,
una tupla representara a una persona en concreto.
Puesto que una relacin se representa como una tabla; podemos entender que las columnas de la
tabla son los atributos; y las filas, las tuplas.




Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Tupla
Cada una de las filas de la relacin. Se corresponde con la idea clsica de registro. Representa por
tanto cada elemento individual de esa relacin. Tiene que cumplir que:
Cada tupla se debe corresponder con un elemento del mundo real.
No puede haber dos tuplas iguales (con todos los valores iguales).
Dominio
Un dominio contiene todos los posibles valores que puede tomar un determinado atributo. Dos
atributos distintos pueden tener el mismo dominio.

Un dominio en realidad es un conjunto finito de valores del mismo tipo. A los dominios se les
asigna un nombre y as podemos referirnos a ese nombre en ms de un atributo.

La forma de indicar el contenido de un dominio se puede hacer utilizando dos posibles tcnicas:
Intensin. Se define el nomino indicando la definicin exacta de sus posibles valores. Por intensin
se puede definir el dominio de edades de los trabajadores como: nmeros enteros entre el 16 y el
65 (un trabajador slo podra tener una edad entre 16 y 65 aos).
Extensin. Se indican algunos valores y se sobreentiende el resto gracias a que se autodefinen
con los anteriores. Por ejemplo el dominio localidad se podra definir por extensin as: Palencia,
Valladolid, Villamuriel de Cerrato,...
Adems pueden ser:
Generales. Los valores estn comprendidos entre un mximo y un mnimo
Restringidos. Slo pueden tomar un conjunto de valores
Grado
Indica el tamao de una relacin en base al nmero de columnas (atributos) de la misma.
Lgicamente cuanto mayor es el grado de una relacin, mayor es su complejidad al manejarla.

Cardinalidad
Nmero de tuplas de una relacin, o nmero de filas de una tabla.

Diseo de Bases de Datos Relacionales
El primer paso para crear una base de datos, es planificar el tipo de informacin que se quiere
almacenar en la misma, teniendo en cuenta dos aspectos: la informacin disponible y la
informacin que necesitamos.

La planificacin de la estructura de la base de datos, en particular de las tablas, es vital para la
gestin efectiva de la misma. El diseo de la estructura de una tabla consiste en una descripcin
de cada uno de los campos que componen el registro y los valores o datos que contendr cada
uno de esos campos.

Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Los campos son los distintos tipos de datos que componen la tabla, por ejemplo: nombre, apellido,
domicilio. La definicin de un campo requiere: el nombre del campo, el tipo de campo, el ancho del
campo, etc.

Los registros constituyen la informacin que va contenida en los campos de la tabla, por ejemplo:
el nombre del paciente, el apellido del paciente y la direccin de este. Generalmente los diferente
tipos de campos que su pueden almacenar son los siguientes: Texto (caracteres), Numrico
(nmeros), Fecha / Hora, Lgico (informaciones lgicas si/no, verdadero/falso, etc., imgenes.

En resumen, el principal aspecto a tener en cuenta durante el diseo de una tabla es determinar
claramente los campos necesarios, definirlos en forma adecuada con un nombre especificando su
tipo y su longitud.

En general, el objetivo del diseo de una base de datos relacional es generar un conjunto de
esquemas de relaciones que permitan almacenar la informacin con un mnimo de redundancia,
pero que a la vez faciliten la recuperacin de la informacin. Una de las tcnicas para lograrlo
consiste en disear esquemas que tengan una forma normal adecuada. Para determinar si un
esquema de relaciones tiene una de las formas normales se requiere mayor informacin sobre la
empresa del "mundo real" que se intenta modelar con la base de datos. La informacin adicional la
proporciona una serie de limitantes que se denominan dependencias de los datos

Antes, de hablar de formas normales y dependencias de datos es conveniente considerar los
defectos que pueden tener una base de datos mal diseada.

Supongamos las siguientes relaciones:

PERSONA (DNI, NOMBRE, APELLIDOS)
COCHE (MATRICULA, MARCA. TIPO, POTENCIA, COLOR)
TENER (DNI, MATRICULA, FECHA, PRECIO)


Si en lugar de las anteriores relaciones que componen la BD, optsemos por una nica relacin,
formada por los atributos de las tres, sta tendra los siguientes defectos:


1. En primer lugar, algunos datos sern redundantes; en general en esta relacin una persona
aparecer tantas veces como coches posea.
2. Esta redundancia conlleva unos riesgos de incoherencia durante las actualizaciones: por ejemplo,
si resulta que el nombre de Lpez no es Pedro sino Juan, hay que tener cuidado y actualizar todas
las tuplas en las que aparece Lpez.
3. Es preciso admitir la presencia de valores nulos en una relacin de este tipo para poder mantener
en la base, coches sin propietarios o personas que no tienen coches. Si muchos de los atributos no
se aplican a todas las tuplas de la relacin, acabaremos con un gran nmero de nulos en esas
tuplas. Esto puede originar un considerable desperdicio de espacio de almacenamiento Ej: Si slo
el 10% de los empleados tiene oficinas. individuales, no se justificar incluir un atributo NUM_OFIC
en la relacin EMPLEADO; ms bien, podramos crear una relacin OFICINAS_EMPL (DNIEMP,
NUM_OFIC) contenga exclusivamente tuplas para los empleados con oficinas individuales).
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.

Por lo tanto adems de hacerse ms complicada la actualizacin (insercin, eliminacin y
modificacin), se desperdicia espacio. Uno de los objetivos en el diseo de esquemas es minimizar
el espacio de almacenamiento que ocupan las relaciones base (archivos). La agrupacin de
atributos en esquemas de relacin tiene un efecto significativo sobre el espacio de
almacenamiento, se requiere ms.

La metodologa para el diseo de las bases de datos, est basado en las siguientes tres fases:

1. Modelado conceptual (con el modelo entidad/interrelacin
2. Diseo lgico (con las dos subfases, estndar y especfico)
3. Diseo fsico.
El modelo entidad-relacin
Cuando se utiliza una base de datos para gestionar informacin, se est
plasmando una parte del mundo real en una serie de tablas, registros y campos
ubicados en un ordenador; crendose un modelo parcial de la realidad. Antes de
crear fsicamente estas tablas en el ordenador se debe realizar un modelo de
datos.
Se suele cometer el error de ir creando nuevas tablas a medida que se van
necesitando, haciendo as el modelo de datos y la construccin fsica de las tablas
simultneamente. El resultado de esto acaba siendo un sistema de informacin
parcheado, con datos dispersos que terminan por no cumplir adecuadamente los
requisitos necesarios.
Entidades y Relaciones
El modelo de datos ms extendido es el denominado ENTIDAD/RELACIN (E/R)
En el modelo E/R se parte de una situacin real a partir de la cual se definen
entidades y relaciones entre dichas entidades:
Entidad.- Objeto del mundo real sobre el que queremos almacenar informacin
(Ej: una persona). Las entidades estn compuestas de atributos que son los datos
que definen el objeto (para la entidad persona seran DNI, nombre, apellidos,
direccin,...). De entre los atributos habr uno o un conjunto de ellos que no se
repite; a este atributo o conjunto de atributos se le llama clave de la entidad, (para
la entidad persona una clave seria DNI). En toda entidad siempre hay al menos
una clave que en el peor de los casos estar formada por todos los atributos de la
tabla. Ya que pueden haber varias claves y necesitamos elegir una, lo haremos
atendiendo a estas normas:
Que sea nica.
Que se tenga pleno conocimiento de ella.- Por qu en las empresas se
asigna a cada cliente un nmero de cliente?.
Que sea mnima, ya que ser muy utilizada por el gestor de base de
datos.
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Relacin.- Asociacin entre entidades, sin existencia propia en el mundo real que
estamos modelando, pero necesaria para reflejar las interacciones existentes entre
entidades. Las relaciones pueden ser de tres tipos:
Relaciones 1-1.- Las entidades que intervienen en la relacin se asocian
una a una (Ej: la entidad HOMBRE, la entidad MUJER y entre ellos la
relacin MATRIMONIO).
Relaciones 1-n.- Una ocurrencia de una entidad est asociada con
muchas (n) de otra (Ej: la entidad EMPERSA, la entidad TRABAJADOR y
entre ellos la relacin TRABAJAR-EN).
Relaciones n-n.-Cada ocurrencia, en cualquiera de las dos entidades de la
relacin, puede estar asociada con muchas (n) de la otra y viceversa (Ej: la
entidad ALUMNO, la entidad EMPRESA y entre ellos la relacin
MATRCULA).
Representacin grfica de Entidades y Relaciones
Para asimilar fcilmente un diseo de datos cuando se emplea el modelo E/R
se utilizan los siguientes elementos grficos:

La utilizacin de estos elementos dar como resultado lo que se denomina el
esquema entidad-relacin de la base de datos. Los ejemplos que se incluyen en el
apartado anterior, grficamente quedaran como sigue:

Cmo se pasa del esquema E/R a las tablas?
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Para cada entidad del esquema se crear una tabla con tantos campos como
atributos tenga la entidad. Ejemplo:
Tabla 'TRABAJADOR'
DNI NUM_SS nombre-apellidos ...
11111111 XXXXXXXXXXX Fulano de tal ...
22222222 YYYYYYYYYYY Mengano de cual ...
...... ...... ...... ......
Las relaciones 1-1 se pueden reflejar incluyendo en una de las dos tablas un
campo en el que poder colocar la clave del elemento de la otra tabla con el que se
est relacionado. Ese nuevo campo que se incluye en la tabla recibe el nombre de
clave ajena. Ejemplo:
Tabla 'HOMBRE'
DNI Nombre ...
11111111 ... ...
22222222 ... ...
... ... ...
Tabla 'MUJER'
DNI Nombre ... DNI-ESPOSO
33333333 ... ... 11111111
44444444 ... ... (nulo)
... ... ... ...
Donde el campo DNI-ESPOSO es clave ajena de la tabla HOMBRE. Aqu
hay que hacer notar que el campo DNI-ESPOSO puede tomar o bien un valor
nulo, en el caso de aquellas mujeres que no estn casadas, o bien el valor de
alguno de los DNI de la tabla HOMBRE, en el caso de las mujeres casadas; en
este segundo caso, ese DNI (la clave ajena) no se deber repetir en ningn otro
registro de la tabla MUJER.
Las relaciones 1-n se representan de forma muy parecida a como se ha
explicado para las relaciones 1-1. La diferencia est en que ahora no es
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
indiferente donde se coloque la clave ajena, esta debe estar obligatoriamente en
la tabla del 'mucho' (n); y adems, para este caso si se permitir que haya valores
repetidos en dicho campo. Ejemplo:
Tabla 'EMPRESA'
CIF Nombre ...
XX-1111-AA ... ...
YY-2222-BB ... ...
... ... ...
Tabla 'TRABAJADOR'
DNI Nombre ... CIF
11111111 ... ... XX-1111-AA
22222222 ... ... YY-2222-BB
33333333 ... ... YY-2222-BB
44444444 ... ... XX-1111-AA
... ... ... ...
Para representar las relaciones n-n en tablas lo que se hace es crear una
nueva tabla solamente para la relacin. Esta nueva tabla tendr dos claves
ajenas y su propia clave estar formada por la unin de las claves ajenas.
Ejemplo:
Tabla 'ALUMNO'
DNI Nombre ...
11111111 ... ...
22222222 ... ...
... ... ...
Tabla 'ASIGNATURA'
COD-ASIGNATURA Nombre ...
01 ... ...
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
02 ... ...
... ... ...
Tabla 'MATRCULA'(esta es la relacin)
DNI COD_ASIGNATURA NOTA
11111111 01 7.5
11111111 02 6.25
22222222 01 5.5
22222222 02 8
... ... ...
En la tabla MATRCULA es donde se refleja la relacin. La clave de dicha
tabla est formada por los campos DNI y COD-ASIGNATURA ; y cada uno de
ellos es clave ajena, el primero de ALUMNO y el segundo de ASIGNATURA.
Hacer ver aqu que la tabla MATRICULAS puede tener ms campos adems de
los que son clave ajena como ocurre en el ejemplo; la tabla aade adems un
campo NOTA.
Ejemplo de una Universidad
Creacin de Tablas
Tabla Alumno
En una Universidad, si tenemos la entidad Alumno que definimos como:
Tabla ALUMNO(DNI, Nombre, Apellido1, Apellido2, Telefono, Calle, Ciudad,
Provincia, FNacimiento, EstadoCivil)
CP: DNI
Creando la tabla en vista "Diseo" obtenemos:

Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Tabla Asignatura
Y la entidad Asignatura definida como:
ASIGNATURA(Codigo, Nombre, Creditos, Dni_prof, Observaciones)
CP:Codigo
Tabla Matricula
Y sabiendo que un alumno se puede matricular de muchas asignaturas y que una
asignatura a su vez puede tener muchos alumnos matriculados, podemos definir
entre ambas entidades la relacin (n-m) matricula como:
MATRICULA(DNI, Codigo_asig, Fecha, Nota)
CP:DNI,Codigo_asig,Fecha
Y la tabla quedara como:

Creacin de Relaciones
Agregamos las tablas (Alumno,Asignatura y Matricula)
Que son:


Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Y por ltimo slo falta arrastrar los campos relacionados de la tabla con la relacin
1 a la tabla con la relacin muchos, es decir crear las relaciones, en las que
seleccionaremos siempre:

Exigir Integridad Referencial
Actualizar en cascada los campos relacionados
Eliminar en cascada los registros relacionados
En el caso de Alumno-Matricula (1 Alumno.DNI se puede repetir n veces en
Matricula.DNI) arrastramos el Alumno.DNI sobre la Matricula.DNI:



Y si repetimos la misma operacin entre Asignatura.Codigo y
Matricula.Codigo_asig queda el esquema E-R en Access segn se muestra en la
figura siguiente:
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.




Normalizacin de una base de datos

1. Descomposicin y Normalizacin

Siempre que un analista de sistemas de base de datos arma una base de datos, queda a su cargo
descomponer dicha base en grupos y segmentos de registros. Este proceso es la descomposicin;
el mismo es necesario independientemente de la arquitectura de la base de datos - relacional, red
o jerrquica-. Sin embargo, para la base de datos relacional, la accin correspondiente puede
dividirse y expresarse en trminos formales y se denomina normalizacin a la misma.

La normalizacin convierte una relacin en varias subrelaciones, cada una de las cuales obedece a
reglas. Estas reglas se describen en trminos de dependencia. Una vez que hayamos examinado
las distintas formas de dependencia, encontraremos procedimientos a aplicar a las relaciones de
modo tal que las mismas puedan descomponerse de acuerdo a la dependencia que prevalece.
Esto no llevar indefectiblemente a formar varias subrelaciones a partir de la nica relacin
preexistente.

En definitiva, la normalizacin es el proceso de organizar los datos de una base de datos. Se
incluye la creacin de tablas y el establecimiento de relaciones entre ellas segn reglas diseadas
tanto para proteger los datos como para hacer que la base de datos sea ms flexible al eliminar la
redundancia y las dependencias incoherentes.

Los datos redundantes desperdician el espacio de disco y crean problemas de mantenimiento. Si
hay que cambiar datos que existen en ms de un lugar, se deben cambiar de la misma forma
exactamente en todas sus ubicaciones. Un cambio en la direccin de un cliente es mucho ms fcil
de implementar si los datos slo se almacenan en la tabla Clientes y no en algn otro lugar de la
base de datos.
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.

Qu es una "dependencia incoherente"? Aunque es intuitivo para un usuario mirar en la tabla
Clientes para buscar la direccin de un cliente en particular, puede no tener sentido mirar all el
salario del empleado que llama a ese cliente. El salario del empleado est relacionado con el
empleado, o depende de l, y por lo tanto se debera pasar a la tabla Empleados. Las
dependencias incoherentes pueden dificultar el acceso porque la ruta para encontrar los datos
puede no estar o estar interrumpida.

Hay algunas reglas en la normalizacin de una base de datos. Cada regla se denomina una "forma
normal". Si se cumple la primera regla, se dice que la base de datos est en la "primera forma
normal". Si se cumplen las tres primeras reglas, la base de datos se considera que est en la
"tercera forma normal". Aunque son posibles otros niveles de normalizacin, la tercera forma
normal se considera el mximo nivel necesario para la mayor parte de las aplicaciones.

Al igual que con otras muchas reglas y especificaciones formales, en los escenarios reales no
siempre se cumplen los estndares de forma perfecta. En general, la normalizacin requiere tablas
adicionales y algunos clientes consideran ste un trabajo considerable. Si decide infringir una de
las tres primeras reglas de la normalizacin, asegrese de que su aplicacin se anticipa a los
problemas que puedan aparecer, como la existencia de datos redundantes y de dependencias
incoherentes.
Primera forma normal
Elimine los grupos repetidos de las tablas individuales.
Cree una tabla independiente para cada conjunto de datos relacionados.
Identifique cada conjunto de datos relacionados con una clave principal.
No use varios campos en una sola tabla para almacenar datos similares. Por ejemplo, para realizar
el seguimiento de un elemento del inventario que proviene de dos orgenes posibles, un registro
del inventario puede contener campos para el Cdigo de proveedor 1 y para el Cdigo de
proveedor 2.

Qu ocurre cuando se agrega un tercer proveedor? Agregar un campo no es la respuesta,
requiere modificaciones en las tablas y el programa, y no admite fcilmente un nmero variable de
proveedores. En su lugar, coloque toda la informacin de los proveedores en una tabla
independiente denominada Proveedores y despus vincule el inventario a los proveedores con el
nmero de elemento como clave, o los proveedores al inventario con el cdigo de proveedor como
clave.

Segunda forma normal
Cree tablas independientes para conjuntos de valores que se apliquen a varios registros.
Relacione estas tablas con una clave externa.
Los registros no deben depender de nada que no sea una clave principal de una tabla, una clave
compuesta si es necesario. Por ejemplo, considere la direccin de un cliente en un sistema de
contabilidad. La direccin se necesita en la tabla Clientes, pero tambin en las tablas Pedidos,
Envos, Facturas, Cuentas por cobrar y Colecciones. En lugar de almacenar la direccin de un
cliente como una entrada independiente en cada una de estas tablas, almacnela en un lugar, ya
sea en la tabla Clientes o en una tabla Direcciones independiente.

Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Tercera forma normal
Elimine los campos que no dependan de la clave.
Los valores de un registro que no sean parte de la clave de ese registro no pertenecen a la tabla.
En general, siempre que el contenido de un grupo de campos pueda aplicarse a ms de un nico
registro de la tabla, considere colocar estos campos en una tabla independiente. Por ejemplo, en
una tabla Contratacin de empleados, puede incluirse el nombre de la universidad y la direccin de
un candidato. Pero necesita una lista completa de universidades para enviar mensajes de correo
electrnico en grupo. Si la informacin de las universidades se almacena en la tabla Candidatos,
no hay forma de enumerar las universidades que no tengan candidatos en ese momento. Cree una
tabla Universidades independiente y vinclela a la tabla Candidatos con el cdigo de universidad
como clave.

EXCEPCIN: cumplir la tercera forma normal, aunque en teora es deseable, no siempre es
prctico. Si tiene una tabla Clientes y desea eliminar todas las dependencias posibles entre los
campos, debe crear tablas independientes para las ciudades, cdigos postales, representantes de
venta, clases de clientes y cualquier otro factor que pueda estar duplicado en varios registros. En
teora, la normalizacin merece el trabajo que supone. Sin embargo, muchas tablas pequeas
pueden degradar el rendimiento o superar la capacidad de memoria o de archivos abiertos.

Puede ser ms factible aplicar la tercera forma normal slo a los datos que cambian con
frecuencia. Si quedan algunos campos dependientes, disee la aplicacin para que pida al usuario
que compruebe todos los campos relacionados cuando cambie alguno.


Otras formas de normalizacin
La cuarta forma normal, tambin llamada Forma normal de Boyce Codd (BCNF, Boyce Codd
Normal Form), y la quinta forma normal existen, pero rara vez se consideran en un diseo real. Si
no se aplican estas reglas, el diseo de la base de datos puede ser menos perfecto, pero no
debera afectar a la funcionalidad.

Normalizar una tabla de ejemplo
Estos pasos demuestran el proceso de normalizacin de una tabla de alumnos ficticia.

Tabla sin normalizar:




Primera forma normal: no hay grupos repetidos.
Las tablas slo deben tener dos dimensiones. Puesto que un alumno tiene varias clases, estas
clases deben aparecer en una tabla independiente. Los campos Clase1, Clase2 y Clase3 de los
registros anteriores son indicativos de un problema de diseo.

Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.


Segunda forma normal: eliminar los datos redundantes

Observe los diversos valores de N clase para cada valor de N alumno en la tabla anterior. N
clase no depende funcionalmente de N alumno (la clave principal), de modo que la relacin no
cumple la segunda forma normal.

Las dos tablas siguientes demuestran la segunda forma normal:

Alumnos


Registro



Tercera forma normal: eliminar los datos no dependientes de la clave

Alumnos:
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.


Personal:


En el ltimo ejemplo, Despacho-Tut (el nmero de despacho del tutor) es funcionalmente
dependiente del atributo Tutor. La solucin es pasar ese atributo de la tabla Alumnos a la tabla
Personal, segn se muestra a continuacin:


Ejercicio prctico
Tenemos una empresa pblica donde los puestos de trabajo estn regulados por el Estado, de
modo que las condiciones salariales estn determinadas por el puesto. Se ha creado el siguiente
esquema relacional EMPLEADOS (nss, nombre, puesto, salario, emails) con nss como clave
primaria.


1. Normalizar esta tabla explicando cada paso.
2. Realiza el modelo entidad relacin para la tabla empleados y supn que hay tres tablas ms,
empresa, almacn y vehculo. Imagina que eres el gerente de una empresa de paquetera y
logstica con todos los problemas y tareas que eso implica. Inventa en base a ese supuesto que
campos pondras a las tres nuevas tablas y justifcalos.
3. Realiza el diagrama entidad-relacin que correspondera y explica las dependencias y las claves
externas

Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Practica N.0: PHP: MySQL y acceso a una base de
datos
Resumen
Aprender a administrar una base de datos con MySQL. Conocer algunas
herramientas que ayudan a administrar una base de datos de MySQL. Aprender a
acceder a una base de datos desde PHP. Aprender a realizar una consulta
SELECT y mostrar el resultado en una pgina web.
Contenido
1. Objetivos
2. Qu tengo que hacer?
3. Cmo lo hago?
4. Recomendaciones
5. Recursos
Objetivos
Aprender a administrar una base de datos con MySQL.
Conocer algunas herramientas que ayudan a administrar una base de datos de
MySQL.
Aprender a acceder a una base de datos desde PHP.
Aprender a realizar una consulta SELECT y mostrar el resultado en una pgina web.

Qu tengo que hacer?
MySQL es el sistema gestor de bases de datos de cdigo abierto ms popular en
la actualidad. MySQL est disponible para distintos sistemas operativos, como
Linux, Mac OS X, Solaris, Windows y otros ms. MySQL es muy popular en el
desarrollo de aplicaciones web, ya que forma parte como sistema gestor de bases
de datos de las plataformas LAMP, BAMP, MAMP y WAMP.
En esta prctica tienes que crear una base de datos en MySQL para almacenar
los datos que emplea el sitio web. La base de datos se tiene que llamar "pibd" y
tiene que tener las siguientes tablas (se indica el tipo de dato ms apropiado para
cada columna, pero se puede cambiar segn la necesidad de cada uno):
Tabla Usuarios
IdUsuario : entero, autoincremento y clave primaria.
NomUsuario : texto (longitud mxima 15 caracteres) y valor nico.
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Clave : texto (longitud mxima 15 caracteres).
Email : texto.
Sexo : entero pequeo.
FNacimiento : fecha.
Ciudad : texto; no se relaciona con una tabla porque los nombres de todas las
ciudades del mundo es imposible de conocer.
Pais : entero y clave ajena a Paises.
Foto : texto; contiene el nombre y quizs la ruta del fichero que almacena la foto, el
uso de este campo depende de la implementacin que realice el alumno.
FRegistro : marca de tiempo (fecha y hora); fecha de registro en el sistema del
usuario.
Tabla Paises
IdPais : entero, autoincremento y clave primaria.
NomPais : texto.
Tabla Albumes
IdAlbum : entero, autoincremento y clave primaria.
Titulo : texto.
Descripcion : texto.
Fecha : fecha; fecha en el que fueron tomadas las fotografas del lbum, si es un
perodo de tiempo se puede poner la fecha del primer da o dejar en blanco.
Pais : entero y clave ajena a Paises; pas en el que se tomaron las fotos, si son varios
se puede dejar en blanco.
Usuario : entero y clave ajena a Usuarios.
Tabla Fotos
IdFoto : entero, autoincremento y clave primaria.
Titulo : texto.
Fecha : fecha; fecha en la que fue tomada la foto, se puede dejar en blanco.
Pais : entero y clave ajena a Paises; pas en el que se tomo la foto, se puede dejar en
blanco.
Album : entero y clave ajena a Albumes.
Fichero : texto; contiene el nombre y quizs la ruta del fichero que almacena la foto, el
uso de este campo depende de la implementacin que realice el alumno.
FRegistro : marca de tiempo (fecha y hora); fecha de registro en el sistema de la foto,
se emplea para mostrar las ltimas cinco fotos introducidas.
Nota: este diseo de la base de datos se ver modificado en prcticas posteriores
cuando se incorporen algunas funcionalidades adicionales.
El mantenimiento de la tabla Paises se realiza directamente a travs de la base de
datos: los datos se introducen directamente en la tabla. Respecto a las otras
tablas, el mantenimiento se realizar en una prxima prctica, pero por ahora
introduce los datos directamente en las tablas para poder hacer pruebas.
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Adems, tienes que modificar las siguientes pginas (Figura 1) para que realicen
la consulta SELECT correspondiente y visualicen el resultado obtenido (sustituye los
datos estticos que tengas en las pginas web por los datos devueltos por la base
de datos):
Pgina principal
Contiene un listado con un resumen (foto, ttulo, fecha, pas) de las ltimas cinco
fotos que se han introducido.
Pgina con el formulario de registro como nuevo usuario
En la lista desplegable para seleccionar el pas, mostrar los pases a partir de la
tabla Paises de la base de datos.
Pgina con el formulario de bsqueda
En la lista desplegable para seleccionar el pas, mostrar los pases a partir de la
tabla Paises de la base de datos.
Pgina con el listado resultado de una bsqueda
A partir de los datos recibidos desde la [Pgina con el formulario de bsqueda]
(ttulo, fecha y/o pas) debe realizar una bsqueda en la tabla Fotos y mostrar el
resultado obtenido.
Pgina detalle foto
Muestra toda la informacin sobre una foto seleccionada en la pgina anterior
(foto, ttulo, fecha, pas, lbum de fotos y usuario al que pertenece).
Pgina control de acceso
Controla el acceso a la parte privada para los usuarios registrados (los que figuran
en la tabla Usuarios). Si el usuario est registrado, mediante una redireccin en la
parte del servidor se debe mostrar la pgina con el men de usuario registrado; si
el usuario no est registrado, mediante una redireccin en la parte del servidor se
debe mostrar la pgina principal del sitio web.
Pgina "Crear lbum"
En la lista desplegable para seleccionar el pas, mostrar los pases a partir de la
tabla Paises de la base de datos.
Pgina "Mis lbumes"
Muestra un listado con todos los lbumes del usuario.
Pgina "Ver lbum"
Desde la [Pgina "Mis lbumes"], muestra todas las fotos que contiene un lbum.
Pgina "Aadir foto a lbum"
Contiene un formulario con los datos necesarios para aadir una foto (ttulo, fecha,
pas, foto y lbum al que se aade la foto).
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Figura 1: Diagrama de pginas que componen el sitio web
Cmo lo hago?
Creacin de la base de datos desde la lnea de comandos
Para crear la base de datos en MySQL tienes diferentes alternativas.
Por un lado, puedes acceder a MySQL a travs de MySQL
monitor que se encuentra en el directorio \xampp\mysql\bin . En
la Figura 2 podemos ver una sesin de ejecucin con los siguientes
comandos:
mysql -u root : inicia la conexin a la base de datos con el usuario root.
show databases; : muestra las bases de datos que existen.
use library; : selecciona una base de datos.
show tables; : muestra las tablas que existen en la base de datos.
describe books; : muestra el esquema de la tabla.
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Figura 2: Acceso a MySQL desde la lnea de comandos
Para crear la base de datos debemos emplear el lenguaje de
definicin de datos (Data Definition Language, DDL) de SQL que
permite definir las estructuras de la base de datos que almacenarn
los datos. En concreto, los comandos SQL ms importantes que se
utilizan para crear y mantener una base de datos son:
CREATE DATABASE : crea una base de datos con el nombre dado.
DROP DATABASE : borra todas las tablas en la base de datos y borra la
base de datos.
CREATE TABLE : crea una tabla con el nombre dado.
ALTER TABLE : permite cambiar la estructura de una tabla existente.
DROP TABLE : borra una o ms tablas.
Adems, MySQL es un sistema gestor de bases de datos que
funciona con usuarios y permisos. Cuando se realiza una conexin a
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
una base de datos desde una pgina web se debe emplear un
usuario especial para reducir los riesgos de seguridad y evitar que un
usuario malintencionado pueda modificar o incluso eliminar toda una
base de datos. El usuario para conectarse desde una pgina web
debe tener otorgados nicamente los permisos para manipular los
datos ( SELECT, INSERT, UPDATE y DELETE ) y NO los permisos para cambiar
la estructura ( CREATE, ALTER , etc.) o administrar ( GRANT, SHUTDOWN , etc.)
la base de datos.
En MySQL se puede crear una cuenta de usuario de tres formas:
Usando el comando GRANT .
Manipulando las tablas de permisos de MySQL directamente.
Usar uno de los diversos programas proporcionados por terceras partes
que ofrecen capacidades para administradores de MySQL,
como phpMyAdmin.
Desde la lnea de comandos el mtodo preferido es usar el
comando GRANT , ya que es ms conciso y menos propenso a errores
que manipular directamente las tablas de permisos de MySQL.
Por ejemplo, las siguientes instrucciones crean un nuevo usuario
llamado wwwdata con contrasea abc , que slo se puede usar cuando
se conecte desde el equipo local ( localhost ) y le otorga nicamente
los permisos SELECT, INSERT, UPDATE y DELETE sobre todas las bases de
datos alojadas en el servidor:
# Crea un nuevo usuario
CREATE USER 'wwwdata'@'localhost' IDENTIFIED BY 'abc';
# Otorga los permisos para poder manipular los datos
# sobre todas las bases de datos (*.*)
GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'wwwdata'@'localhost'
IDENTIFIED BY 'abc' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0
MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
# Recarga los permisos de las tablas (en principio, no es necesario porque
# GRANT debe hacerlo de forma automtica)
FLUSH PRIVILEGES;
Una ver creado un usuario, podemos consultar sus permisos con el
comando SHOW GRANTS , tal como podemos ver en la Figura 3.
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Figura 3: Privilegios de un usuario en MySQL
Desde la lnea de comandos tambin se pueden ejecutar otros
programas, como mysqladmin , mysqlcheck , mysqldump o mysqlshow .
Creacin de la base de datos desde phpMyAdmin
phpMyAdmin es una herramienta escrita en PHP que permite la
administracin de una base de datos de MySQL a travs de pginas
web, ya sea en local o de forma remota a travs de Internet. Es un
desarrollo de cdigo abierto y est disponible bajo la licencia GPL.
En la Figura 4 podemos ver la pantalla principal de la aplicacin. En el
panel de la izquierda aparecen las bases de datos que existen y entre
parntesis se indica el nmero de tablas que posee cada base de
datos. En la parte principal de la pantalla se indica la versin del
servidor de MySQL y el usuario que se est empleando para
conectarse. En XAMPP, por defecto se emplea el usuario "root" sin
contrasea, lo que supone una vulnerabilidad del sistema ya que
facilita un posible ataque. Para evitarlo, es conveniente asignar una
contrasea al usuario "root" en MySQL y configurar la contrasea
para phpMyAdmin en el fichero config.inc.php .
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Figura 4: Pgina principal de phpMyAdmin
Adems, en la pgina principal existen varias funciones, como crear
una nueva base de datos, modificar los privilegios o importar y
exportar el esquema y los datos de una base de datos.
Desde la pantalla principal se puede crear una nueva base de datos.
Una vez creada, aparece la pantalla que podemos ver en la Figura 5;
en esta pantalla se visualiza la sentencia SQL que ha creado la base
de datos y se puede indicar el nombre para una nueva tabla en la
base de datos recin creada. En este ltimo caso, tambin hay que
indicar el nmero de campos (columnas) que se quiere que tenga la
tabla; ms adelante se pueden aadir ms campos en cualquier
momento.
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Figura 5: Creacin de una nueva base de datos en phpMyAdmin
En la Figura 6 podemos ver la pantalla de creacin de una nueva
tabla con dos campos. En esta pantalla se tiene que indicar la
definicin de cada campo (columna) de la tabla, como el nombre del
campo, el tipo de dato, si admite valor nulo, si es clave primaria, etc.
Esta pantalla cambia de aspecto segn el nmero de campos que
tenga la tabla; por ejemplo, en la Figura 7 podemos ver la misma
pantalla pero cuando una tabla posee siete campos, en vez de una
disposicin vertical la definicin de los campos adquiere una
disposicin horizontal.
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Figura 6: Creacin de una nueva tabla en phpMyAdmin
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Figura 7: Creacin de una nueva tabla en phpMyAdmin
Adems, se tiene que seleccionar el motor de almacenamiento para
la tabla. MySQL permite seleccionar diferentes motores de
almacenamiento. La principal diferencia entre los distintos motores
reside en el soporte de las transacciones, el manejo de las claves
ajenas y el particionamiento de las tablas.
En la Figura 8 podemos ver la pantalla de respuesta que aparece al
crear una nueva tabla. En esta pantalla figura la sentencia SQL de
creacin de la tabla y tambin se puede modificar la estructura de la
tabla recin creada.
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Figura 8: Creacin de una nueva tabla en phpMyAdmin
Una vez creada una tabla se pueden insertar datos en la misma. Para
ello se emplea la opcin Insertar que muestra un formulario como el
de la Figura 9. En este formulario aparecen todos los campos que
componen una tabla y para cada campo se indica su tipo de dato.
Cuando un campo es de tipo autoincremento la base de datos le
asignar un valor de forma automtica, pero de todas formas
aparecer en el formulario de insercin, por lo que se debe dejar
vaco.
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Figura 9: Insercin de datos en una tabla en phpMyAdmin
Por ltimo, y tal como se ha explicado en el apartado anterior, se
debe emplear un usuario especfico para conectarse desde una
pgina web, que tenga otorgados nicamente los permisos para
manipular los datos ( SELECT, INSERT, UPDATE y DELETE ). En la Figura
10 podemos ver la pantalla de la opcin Privilegios, donde se
muestran todos los usuarios que existen y los permisos que poseen.
Desde esta pantalla se puede acceder a la funcin agregar un nuevo
usuario que vemos en laFigura 11.
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Figura 10: Privilegios en phpMyAdmin
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Figura 11: Agregar un nuevo usuario en phpMyAdmin
Acceso a la base de datos desde PHP
Desde PHP se puede acceder fcilmente a una base de datos en
MySQL empleando las ms de 50 funciones que existen. Las
principales funciones que se emplean para acceder a una base de
datos son:
mysql_connect(servidorBD, usuario, contrasea) : abre una conexin con
un servidor de bases de datos de MySQL, devuelve
un identificador que se emplea en algunas de las siguientes funciones
o FALSE en caso de error.
mysql_close(identificador) : cierra una conexin con un servidor de
MySQL, devuelve TRUE en caso de xito y FALSE en caso contrario.
mysql_ping(identificador) : verifica que la conexin con el servidor de
bases de datos funciona, devuelve TRUE en caso de xito y FALSE en
caso contrario.
mysql_select_db(nombreBD, identificador) : selecciona una base de
datos, devuelve TRUE en caso de xito y FALSE en caso contrario.
mysql_query(sentencia, identificador) : ejecuta una sentencia SQL y
devuelve un resultado ( SELECT, SHOW, EXPLAIN o DESCRIBE , ...)
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
o TRUE ( INSERT, UPDATE, DELETE , ...) si todo es correcto, o FALSE en caso
contrario.
mysql_fecth_array(resultado) : recorre un resultado, devuelve un array
que representa una fila (registro) o FALSE en caso de error (por ejemplo,
llegar al final del resultado); al array se puede acceder de forma
numrica (posicin de la columna) o asociativa (nombre de la columna).
mysql_fetch_assoc(resultado) y mysql_fetch_row(resultado) : ambas
funciones son similares a la anterior mysql_fecth_array(resultado) , pero
slo permiten el acceso como array asociativo o con ndices numricos
respectivamente.
mysql_affected_rows(identificador) : devuelve el nmero de filas (tuplas)
afectadas por la ltima operacin si fue del tipo INSERT, UPDATE , etc.,
que no devuelven un resultado.
mysql_num_rows(resultado) : devuelve el nmero de filas (tuplas)
afectadas por la ltima operacin si fue del tipo SELECT .
mysql_free_result(resultado) : libera la memoria ocupada por un
resultado; en principio, se libera automticamente al finalizar la pgina,
es necesario si en una misma pgina se realizan varias consultas con
resultados muy grandes.
El siguiente ejemplo muestra como visualizar todo el contenido de
una tabla en una pgina web. En concreto, se conecta al servidor
local con el usuario wwwdata sin contrasea, selecciona la base de
datos biblioteca, recupera todo el contenido de la tabla libros y
muestra los campos Titulo y Resumen :
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Prueba de SELECT y MySQL</title>
</head>
<body>
<?php
// Se conecta al SGBD
if(!($iden = mysql_connect("localhost", "wwwdata", "")))
die("Error: No se pudo conectar");
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.

// Selecciona la base de datos
if(!mysql_select_db("biblioteca", $iden))
die("Error: No existe la base de datos");

// Sentencia SQL: muestra todo el contenido de la tabla "books"
$sentencia = "SELECT * FROM libros";
// Ejecuta la sentencia SQL
$resultado = mysql_query($sentencia, $iden);
if(!$resultado)
die("Error: no se pudo realizar la consulta");

echo '<table>';
while($fila = mysql_fetch_assoc($resultado))
{
echo '<tr>';
echo '<td>' . $fila['Titulo'] . '</td><td>' . $fila['Resumen'] . '</td>
';
echo '</tr>';
}
echo '</table>';

// Libera la memoria del resultado
mysql_free_result($resultado);

// Cierra la conexin con la base de datos
mysql_close($iden);
?>
</body>
</html>
El siguiente ejemplo es similar al anterior, pero emplea una funcin
llamada sql_dump_result(resultado) que visualiza todo el contenido del
resultado de una consulta SELECT en forma de tabla de HTML, sin
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
tener que indicar uno a uno los campos que componen el resultado;
adems, la primera fila de la tabla creada contiene los nombres de los
campos a modo de encabezados de las columnas de la tabla:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Prueba de SELECT y MySQL</title>
</head>
<body>
<?php
// Devuelve todas las filas de una consulta a una tabla de una base de da
tos
// en forma de tabla de HTML
function sql_dump_result($result)
{
$line = '';
$head = '';

while($temp = mysql_fetch_assoc($result))
{
if(empty($head))
{
$keys = array_keys($temp);
$head = '<tr><th>' . implode('</th><th>', $keys). '</th></tr>';
}

$line .= '<tr><td>' . implode('</td><td>', $temp). '</td></tr>';
}

return '<table>' . $head . $line . '</table>';
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
}

// Se conecta al SGBD
if(!($iden = mysql_connect("localhost", "wwwdata", "")))
die("Error: No se pudo conectar");

// Selecciona la base de datos
if(!mysql_select_db("biblioteca", $iden))
die("Error: No existe la base de datos");

// Sentencia SQL: muestra todo el contenido de la tabla "books"
$sentencia = "SELECT * FROM libros";
// Ejecuta la sentencia SQL
$resultado = mysql_query($sentencia, $iden);
if(!$resultado)
die("Error: no se pudo realizar la consulta");

// Muestra el contenido de la tabla como una tabla HTML
echo sql_dump_result($resultado);

// Libera la memoria del resultado
mysql_free_result($resultado);

// Cierra la conexin con la base de datos
mysql_close($iden);
?>
</body>
</html>

Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Recomendaciones
Recuerda que las pginas que contengan cdigo PHP tienen que
tener la extensin .php . Si modificas alguna pgina web que ya
tengas hecha de prcticas anteriores para aadirle cdigo PHP,
tendrs que cambiarle la extensin y corregir todos los enlaces que
apunten a esa pgina.
La pgina web Build Your Own Database Driven Website Using PHP
& MySQL explica en cuatro partes (Introduction, The Database
Server, PHP server-side scripting language y Displaying Information
on a Web page) cmo construir un sitio web con informacin
procedente de una base de datos en MySQL.
Recuerda: nunca te conectes a una base de datos con el usuario
"root" desde una pgina web. Emplea un usuario especfico que tenga
el mnimo posible de permisos. Por ejemplo, si en una pgina web
slo necesitas mostrar el contenido de las tablas de una base de
datos, pero no necesitas actualizar o insertar nuevos datos, utiliza un
usuario que slo tenga el permiso SELECT sobre esa base de datos.
De este modo reducirs los posibles problemas de seguridad.
Fjate que en varias pginas se pide en la lista desplegable para
seleccionar el pas, mostrar los pases a partir de la tabla paises de la
base de datos. Cuando una parte de una pgina web se repita en
varias pginas, lo mejor es aislar el cdigo comn en un fichero
independiente e incluirlo en aquellos puntos donde haga falta.
Utiliza esta misma tcnica para almacenar en un fichero
independiente los datos necesarios para establecer la conexin con la
base de datos; de este modo, si algo cambia, slo lo tendrs que
cambiar en un fichero.
Aunque no se pide implementarlo en esta prctica, cuando se
muestra un listado a partir de una consulta a una base de datos y no
existe un lmite para el nmero de resultados devueltos es
conveniente mostrar el listado paginado para evitar que se devuelva
una pgina web enorme que aumente su tiempo de transmisin y
dificulte su lectura. Te atreves a hacerlo?
El manual de MySQL te lo puedes descargar en diferentes formatos
de su sitio web para tenerlo siempre a mano y poder hacer las
bsquedas de informacin rpidamente. Cuando lo descargues, elige
la versin correspondiente a tu servidor de MySQL.
Si quieres guardar una copia de seguridad de una base de datos,
puedes emplear la opcin Exportar de phpMyAdmin que se muestra
en la Figura 12.
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
Figura 12: Exportar desde phpMyAdmin

Recursos
Qu tipos de datos admite MySQL? Qu funciones existen en
MySQL?
MySQL Developer Zone : sitio web oficial de MySQL con informacin
para desarrolladores.
MySQL Cheat Sheet : resumen de los tipos de datos y de las diversas
funciones (de fecha y hora, matemticas, etc.) disponibles en MySQL.
Tambin incluye una lista de las funciones disponibles en PHP para
conectarse a MySQL y ejemplos de la consulta SELECT.
MySQL Cheat Sheet : resumen de los principales comandos de MySQL.
MySQL Quick Reference : gua de referencia rpida de lo ms
importante de MySQL (tipos de datos, funciones para usar en
sentencias SELECT y WHERE, lenguaje de definicin de datos,
lenguaje de manipulacin de datos, comandos de usuario y comandos
de transacciones y bloqueos).
Introduccin a Bases de Datos II


Docente: Ing. Arturo Diaz Pulido.
MySQL Reference Sheet : resumen de los tipos de datos y funciones de
MySQL.
Qu es el lenguaje SQL? Qu sintaxis tiene el lenguaje SQL?
SQL : definicin en la Wikipedia del lenguaje SQL.
W3Schools : cursos de aprendizaje y guas de referencia de diversas
tecnologas empleadas en la programacin web. Incluye un tutorial y
temas avanzados sobre SQL.
SQLCourse : sencillo tutorial sobre el lenguaje SQL.
SQL Cheat : resumen de las sentencias principales del lenguaje SQL.
Qu herramientas existen para trabajar con MySQL?
phpMyAdmin : permite crear y gestionar una base de datos en MySQL a
travs de una pgina web.
phpMinAdmin : script escrito en PHP en un solo fichero que permite
administrar una base de datos en MySQL, similar a phpMyAdmin, pero
no es tan potente ni tan complejo.
MySQL GUI Tools : incluye las herramientas MySQL Administrator 1.2,
MySQL Query Brow-ser 1.2 y MySQL Migration Toolkit 1.1.
MySQL Workbench : herramienta visual que permite disear, gestionar y
documentar una base de datos en MySQL.
Qu funciones se emplean en PHP para acceder a MySQL?
PHP MySQL : documentacin oficial del uso de MySQL desde PHP.
PHP MySQL Introduction : tutorial de W3Schools sobre el uso de una
base de datos de MySQL desde PHP.
Existe algn peligro cuando se accede a una base de datos desde
una pgina web?
Inyeccin SQL : definicin en la Wikipedia de este tipo de vulnerabilidad
informtica.
Inyeccin de SQL : explica qu es la inyeccin de SQL y algunas
tcnicas de proteccin con PHP.
SQL Injection Cheat Sheet : resumen de algunos mtodos de inyeccin
de SQL para distintos sistemas gestores de bases de datos.

También podría gustarte