Está en la página 1de 23

Pgina

Generalidades
Introduccin al concepto de Base de Datos
Qu es una Base de Datos (BD)?

Es una coleccin integrada de datos con una organizacin interrelacional, dichos datos pueden estar en diferentes archivos. Cada archivo puede ser visto como una coleccin de registros y cada registro est compuesto de una coleccin de campos. Cada uno de los campos de cada registro permite llevar informacin de alguna caracterstica o atributo (datos) de alguna entidad del mundo real. Los datos son independientes de los programas que los manejen Otra forma dar a entender lo que es una BD sera imaginndola como una carpeta en donde se guardan tablas tambin llamadas entidades, y en donde cada tabla tiene propiedades (columnas) diferentes e informacin repartida en filas (registros). El esquema siguiente muestra que una base de datos puede estar conformada por diferentes tipos de archivos, lo que aqu importa es saber cmo estn relacionados entre s.

Qu es un SGBD?

Un SGBD o Sistema Gestor de Base de Datos, consiste de una coleccin de datos interrelacionados y un conjunto de programas para acceder a dichos datos. La coleccin de datos, normalmente llamada base de datos, contiene informacin relevante para la empresa.
ISC. Eli Alejandro Moreno Lpez Revisin: 1

Pgina

Para entender mejor este concepto, imaginemos que el SGDB es un archivero en donde guardamos carpetas (en este caso BD) y estas contienen un nombre e informacin importante dentro de la empresa. En la siguiente figura se representa lo que es un SGDB en forma de rbol jerrquico.

Donde SGDB representa a todo el sistema, en la segunda fila se encuentran las bases de datos (Control de alumnos, Web y Control de Personal) y en la ultima fila (si se le puede llamar as) se encuentran las tablas (Web contiene a Noticias, Avisos y Galera de fotos) que componen a cada BD. El Objetivo principal de un SGBD es proporcionar una forma de almacenar y recuperar informacin de una base de datos de manera que sea tanto prctica como eficiente. Los Sistemas de Base de Datos se disean para gestionar grandes cantidades de informacin. La gestin de los datos implica tanto definicin de estructuras de informacin (en ingls DDL) como provisin de mecanismos para la manipulacin de informacin (en ingls DML). Practicas 1.Solicite a cada alumno o equipo de alumnos que d un ejemplo de una base de datos y que identifique las entidades que la conforman,

ISC. Eli Alejandro Moreno Lpez

Revisin: 1

Pgina

adems que identifiquen los atributos que componen a cada entidad.

Tipos de Bases de Datos


Desde el punto de vista de la organizacin lgica: a.Jerrquicas. (Progress) b.Relacionales. (Oracle, MySQL, Access, Sybase, MS SQL Server ) Desde el punto de vista de nmero de usuarios: a.Monousuario. (dBase, Access, Paradox) b.Multiusuario cliente/servidor. (Oracle, Sybase, MySQL, MS SQL Server)

Funciones de las Bases de Datos


Permitir

la introduccin de datos por parte de los usuarios (o programadores). Salida de datos. Almacenamiento de datos. Proteccin de datos (seguridad). Elaboracin de datos.

Bsicamente, la comunicacin del usuario-programador con la BD se hace a travs de un lenguaje denominado SQL: Structured Query Language (Lenguaje estructurado de consultas).

Componentes de las Bases de datos


Una base de datos consta de varios componentes:

ISC. Eli Alejandro Moreno Lpez

Revisin: 1

Pgina a.Motor:

el programa ejecutable que debe estar en memoria para manejar la BD. Cuando este programa est ejecutndose se dice que la BD est levantada (startup), en caso contrario se dice que la base de datos est bajada (shutdown). b.Servicio de red: Es un programa que se encarga de establecer las conexiones y transmitir datos entre cliente y servidor o servidor y servidor. c.Listener (escuchador): Es un programa que residente en memoria encargado de recibir las llamadas que llegan a la BD desde la red, y de pasrselas a esta. Una Base de Datos que no tenga un listener cargado, no podr recibir llamadas remotas. El Listener se comunica con el servicio de red.

a.Utilidades: Programas de utilidad como pueden Intrpretes de consultasProgramas de administracin de BD. Programas de copia de seguridad. Monitores de rendimiento.

ser:

A todo el conjunto de la base de datos se le denomina RDBMS: Ralational Database Manager System: Sistema de Gestion de Bases de Datos Relacionales. El primer fabricante en disear un RDBMS fue IBM, aunque fue Oracle, en 1979, la primer empresa en hacer una implementacin comercial de un RDBMS.

El lenguaje SQL: Historia


El nacimiento del lenguaje SQL data de 1970 cuando E.F. Codd publica su libro: Un modelo de datos relacional para grandes bancos de datos

ISC. Eli Alejandro Moreno Lpez

Revisin: 1

Pgina

compartidos. Ese libro dictara las directrices de todas las bases de datos relacionales. Apenas dos aos despus IBM (para quien trabajaba Codd) utiliza las directrices de Codd para crear el Standard Engish Query Language (Lenguaje Estndar Ingls para Consultas) al que se le llam SEQUEL. Ms adelante te le asignaron las siglas SQL (aunque en ingls se sigue pronunciando SEQUEL en espaol se le llama esecuele). Tiempo despus se converta en un estndar en el mundo de las bases de datos avalado por los organismos ISO y ANSI. Hoy en da es uno de los estndares ms importantes de la industria Informtica. Existen tres versiones del estndar la ultima es SQL:2003.

Tipos de datos o Tipos de Columnas

En este curso hablaremos de los tipos de datos usados por MySQL Server, debido a que es SGDB que se utilizar para las prcticas. Es importante conoces los Tipos de datos que puede manejar un servidor de BD en cada columna de sus tablas. Los tipos de datos se dividen en tres grupos: 1.Tipos Numricos. 2.Tipos de Fecha y hora. 3.Tipos de cadenas de caracteres. En las descripciones de los tipos de columnas usan estas convenciones: M Indica las mxima anchura al mostrar los datos. El mximo ancho de muestra es 255. D Se aplica a tipos de coma flotante y de coma fija e indica el nmero de dgitos a continuacin del punto decimal. El valor mximo posible es 30, pero no debe ser mayor que M-2.
[

y ]

Los corchetes [ y ] indican partes de especificadotes de tipos opcionales.

Tipos numricos
A continuacin hay un resumen de los tipos de columnas numricos. BIT[(M)] Es un tipo de datos bit. M indica el nmero de bits por valor, de 1 a 64. El valor por defecto es 1 si se omite M.

ISC. Eli Alejandro Moreno Lpez

Revisin: 1

Pgina

TINYINT [(M)] [UNSIGNED] [ZEROFILL] Un entero muy pequeo. El rango con signo es de -128 a 127. El rango sin signo es de 0 a 255. INT [ ( M) ] [UNSIGNED] [ZEROFILL] Un entero de tamao normal. El rango con signo es de -2147483648 a 2147483647. El rango sin signo es de 0 a 4294967295. INTEGER [ ( M) ] [UNSIGNED] [ZEROFILL] Es un sinnimo de INT. FLOAT [ ( M, D) ] [UNSIGNED] [ZEROFILL] Un nmero de coma flotante pequeo (de precisin simple). Lo valores permitidos son de -3.402823466E+38 a -1.175494351E-38, 0, Y DE 1.175494351E-38 a 3.402823466E+38 . Si se especifica UNSIGNED, los valores negativos no se permiten. M es la anchura de la muestra y D es el nmero de dgitos significativos. DOUBLE [ ( M, D) ] [UNSIGNED] [ZEROFILL] Nmero de cmo flotante de tamao normal (precisin doble). Los valores permitidos son de -1.7976931348623157E+308 a -2.2250738585072014E-308, 0, y de 2.2250738585072014E-308 a 1.7976931348623157E+308. Si se especifica UNSIGNED, no se permiten valores negativos. M es la anchura de muestra y D es el nmero de bits de precisin. Un nmero (FLOAT sin parametros) de coma flotante con precisin sencilla tiene una precisin de 7 decimales aproximadamente, en tanto un nmero (DOUBLE sin parametros) con coma flotante de doble precisin tiene una precisin aproximada de 15 decimales.

Tipos de fecha y hora


Un resumen de los tipos continuacin. de columnas temporales se muestra

DATE Una fecha. El rango soportado es de 1000-01-01 a 9999-12-31. El formato recomendado para su uso es YYYY-MM-DD. DATETIME Combinacin de fecha y hora. El rango soportado es de 1000-01-01 00:00:00 a 9999-12-31 23:59:59. El formato recomendado para su utilizacin es YYYY-MM-DD HH:MM:SS. TIME

ISC. Eli Alejandro Moreno Lpez

Revisin: 1

Pgina

Una hora. El rango es de -838:59:59 a 838:59:59. El formato recomendado es HH:MM:SS

Tipos de cadenas de Caracteres


Un resumen de los tipos de columnas de cadenas de caracteres se muestra a continuacin. CHAR (M) Una cadena de caracteres de longitud fija que siempre tiene el nmero necesario de espacio a la derecha para ajustarla a la longitud especificada al almacenarla. M representa la longitud de la columna. El rango normal de M es de 0 a 255 caracteres. VARCHAR (M) Cadena de caracteres de longitud variable. M representa la longitud de la columna mxima. Normalmente el valor haba sido de 0 a 255, pero en algunos manejadores de BD pude ir de 0 a 65,535. TEXT Una columna TEXT con longitud mxima de 65,535 (2^16-1) caracteres. LONGTEXT Una columna TEXT con longitud mxima de 4,294,967,295 o 4GB (2^321) caracteres. La longitud mxima efectiva (permitida) de columnas LONGTEXT depende del tamao mximo de paquete configurado en el protocolo cliente/servidor y la memoria disponible.

Requisitos de almacenamiento segn el tipo de columna


Tipo de columna TINYINT INT, INTEGER FLOAT DOUBLE DATE DATETIME TIME CHAR (M) VARCHAR (M) TEXT LONGTEXT Almacenamiento requerido 1 byte 4 bytes 4 bytes 8 bytes 3 bytes 8 bytes 3 bytes M bytes, 0 <= M <= 255 L+1 bytes, donde L <= M y 0 <= M <= 255 L+2 bytes, donde L < 2^16 L+2 bytes, donde L < 2^32

ISC. Eli Alejandro Moreno Lpez

Revisin: 1

Pgina

Nota: Si deseas ampliar la informacin lee el Manual de referencia de MySQL 5.

Tablas
Concepto de tabla, registro y campo
Una tabla es una estructura lgica que sirve para almacenar los datos de un mimo tipo (desde el punto de vista conceptual). Almacenar los datos de un mismo tipo no significa que se almacenen slo datos numricos, o slo datos alfanumricos. Desde el punto de vista conceptual esto significa que cada entidad se almacena en estructuras separadas. Por ejemplo: La entidad factura se almacena en estructuras diseadas para ese tipo de entidad: la tabla FACTURA y la tabla FACTURA_COMPRA etc. As, cada entidad, tendr una estructura (tabla) pensada y diseada para este tipo de entidad. Cada entidad dentro de una tabla recibe el nombre de registro o fila. As si la tabla FACTURA almacena 1,000 facturas, se dice que la tabla FACTURA contiene 1,000 registros o filas. Una tabla se compone de campos o columnas, que son conjuntos de datos del mismo tipo (desde el punto de vista fsico). Ahora cuando decimos del mismo tipo queremos decir que los datos de una columna son todos del mismo tipo: numricos, alfanumricos, fechas Con lo que hemos dicho la estructura de una tabla es esta:

ISC. Eli Alejandro Moreno Lpez

Revisin: 1

Pgina

En este esquema se puede ver que cada fila almacena los datos de una factura (es decir, la entidad factura en s), y cada columna almacena los datos de un mismo tipo (las descripciones, los clientes, etc.). De este modo se puede crear una tabla para cada tipo de entidad, y almacenar en ella los valores correspondientes.

Concepto de ndice
Antes de ver qu es un ndice tenemos que entender cmo se almacenan los datos. Los registros de una tabla se almacenan uno detrs de otro, respetando las longitudes de cada columna. Esto es una norma general pero en la actualidad no se cumple en todas las bases de datos. Los datos de la tabla FACTURA que hemos visto antes tienen la siguiente estructura: Columna N Factura Descripci n Cliente Importe Descuento Importe Final Tipo INT(3) CHAR(50) CHAR(20) INT INT(3) INT Ocupacin (bytes) 4 50+1 20+1 4 4 4

La ocupacin se incrementa en uno para incluir una marca de fin de columna, y en la ltima columna una marca de fin.

ISC. Eli Alejandro Moreno Lpez

Revisin: 1

Pgina

La ocupacin se incrementa en uno para incluir una marca de fin de columna, y en la ltima columna una marca de fin de registro. La forma de almacena en el disco duro los registros en el ejemplo sera aproximadamente as: BOF||001|Tornillosinrosca| Adrian000000001000|010|000000900||002| Tuercassinagujero|Carlos0000000500|001| 0000000495||003|Tuercasdesegundamano| Joel000000005500|001|000000005500|EOF Podemos ver que al principio de la tabla hay una marca BOF (Begin of file), y al final de la tabla hay una marca EOF (End of File). Esto delimita el rango en el que estn los datos de una determinada tabla. Hay que darse cuenta que aunque la descripcin de la factura no ocupe los 50 caracteres, en la BD se estn almacenando los caracteres restantes con el carcter Si a la BD le damos la siguiente orden: Selecciname la descripcin de aquellas facturas cuyo cliente sea Joel Lo que har es recorrerse el fichero de datos desde la marca BOF hasta la marca EOF, dando saltos de N caracteres para leer slo el campo cliente. As dar saltos de 55 (4 + 50 + 1) bytes que es el espacio que hay entre el principio de registro y el principio de la columna Cliente. Una vez encontrada esta posicin, sabemos que la descripcin est a 51 bytes anteriores al cliente, as que hay que posicionarse en ese byte, leer el valor y retornar el resultado. El pseudocdigo que presenta este algoritmo puede ser: Abrir fichero; Bucle mientras no se acabe el fichero Dar salto de 55 bytes en el fichero; valor_campo = Leer 20 bytes de fichero; Si valor_campo = Joel entonces posicion_cliente = posicion actual del fichero Dar salto de -posicion_cliente bytes; //esto va al principio del fichero Dar salto de posicion_cliente - 51 bytes; Valor = Leer 50 bytes;
ISC. Eli Alejandro Moreno Lpez Revisin: 1

Pgina

Retornar valor; Fin-si; Fin-Bucle; Retornar NO_ENCONTRADO; En este pseudocdigo tenemos que tener en cuenta que la instruccin leer no consume casi tiempo, sin embargo la instruccin dar salto es la que ms tiempo consume y cuando mayor sea el nmero de bytes de desplazamiento, peor ser. Esto es debido a que la operacin ms lenta en los soportes de disco es la de posicionar las cabezas lectoras en el cilindro y sector adecuados, y una vez que el posicionamiento est hecho, la lectura es prcticamente instantnea. As que en este algoritmo es muy lento porque hace demasiados saltos. A este tipo de lectura se le denomina Lectura Secuencial o Full Scan y es el caso ms desfavorable en una consulta de BD. Adems, cuando mayor sea el volumen de datos, se consiguen peores tiempo con un Full Scan. Un ndice es una tabla paralela a otra principal que tan slo contiene la(s) columna(s) indicada(s) en la creacin del ndice. Estas columnas se las denomina columnas indexadas. Podemos usar la analoga del ndice de un libro. Cuando nosotros necesitamos buscar un tema en un libro, tenemos dos posibilidades:
1.Recorrer

todas las pginas del libro buscando la primera hoja de cada tema y comprobando si es el que necesitamos. En esta bsqueda perderemos la mayora del tiempo en pasar hojas (posicionar las cabezas lectoras) buscando el principio de cada tema, y una vez que lo hayamos encontrado, comprobar si el tema es el deseado (leer el dato) no nos ocupar nada de tiempo. 2.Podemos ir al ndice en el que slo estn escritos los ttulos de los temas y tan solo con pasar tres hojas (posicionamiento de cabezas lectoras mnimo) ya hemos recorrido todo el temario. Despus vamos a la pgina (puntero a una posicin de disco) que nos indique el ndice y consultamos lo que necesitamos.

ISC. Eli Alejandro Moreno Lpez

Revisin: 1

Pgina

Los ndices en las tablas de BD podra decirse que son equivalentes a los ndices de los libros. Siempre que exista ndice, debe consultarse porque si no las bsquedas se dispararn en tiempo.

Diseo de tablas con MySQL Workbench 5.1 OSS

Operaciones sobre tablas (Consultas)


Qu son y como funcional las Consultas?

Crear una tabla

Introducir informacin en una tabla

Ver informacin de una tabla

Personalizar la forma en que se presenta la informacin

Filtrar informacin de una tabla

ISC. Eli Alejandro Moreno Lpez

Revisin: 1

Pgina

ISC. Eli Alejandro Moreno Lpez

Revisin: 1

Pgina

Apndice A
Formas normales
El anlisis de un sistema de BD consta de varas fases. Entre ellas, las siguientes: Anlisis conceptual (o lgico, o relacional); Es un anlisis abstracto de aquellas entidades que formarn la BD, as como las relaciones que establecen unas con otras y las restricciones que se aplican a cada una de ellas. El resultado de esta fase de anlisis se ve reflejado en algo llamado Modelo Conceptual o lgico, que una descripcin de las entidades, atributos, relaciones y restricciones que compondrn la BD. El anlisis conceptual es abstracto, por lo que no depende de BD que vayamos a utilizar ni del sistema en que se vaya a implementar la BD. Anlisis fsico: Consta de un anlisis especfico teniendo en cuenta que BD se va a utilizar (Oracle, MySQL, MS SQL, ) y en qu arquitectura se va a implementar la BD (entornos multiusuario, plataformas NT, Linux ). Las formas normales no son ms que tres reglas que se deben tener en cuenta dentro del Anlisis conceptual, utilizando concretamente Entidad/Relacin. El proceso de aplicar las tres formas normales se llama normalizacin. Un diseo de base de datos que no cumpla con la primera forma normal no ser correcto. Cuantas ms formas normales cumple el diseo de la BD, significar que la BD est ms correctamente analizada. Primera forma normal: Identificar cada tabla con una clave primaria, y poner los datos en tablas separadas, de manera que los datos de cada tabla sean de un tipo similar (desde el punto de vista conceptual). Segunda forma normal: Sacar las columnas que slo dependen de una parte de la clave primaria a otra tabla. Tercera forma normal: Incluir en cada tabla slo los datos que pertenezcan a la misma unidad lgica.

ISC. Eli Alejandro Moreno Lpez

Revisin: 1

Pgina

Estas tres normas formales las vamos a explicar con un ejemplo: Dado esta definicin de la tabla FACTURA Columna Descripcin Cliente Direccin Cliente Telfono Cliente Importe Tipo CHAR(50) CHAR(20) CHAR(30) CHAR(10) INT

Tenemos necesidad de identificar cada uno de los registros de esta tabla inequvocamente. No podemos utilizar la descripcin porque es posible que haya dos facturas con la misma descripcin (dos ventas de tornillos), tampoco el cliente porque el cliente suele tener ms de una factura. Ni tampoco el importe porque es normal tener varias facturas con el mismo importe. Para ello tenemos que definir una nueva columna que nos identifique a cada una de las facturas. Es posible (y bastante comn) que no encontremos una columna que sea capaz de identificar al registro completo, por ello se puede definir ms de una columna dentro de la clave. En este caso es el conjunto de valores de las columnas seleccionadas el que no se podr repetir. Esta columna (o conjunto de ellas) se denomina clave primaria (o primary key). Columna (*) Referencia Descripcin Cliente Direccin Cliente Telfono Cliente Importe Tipo CHAR(10) CHAR(50) CHAR(20) CHAR(30) CHAR(10) INT

Las columnas marcadas con (*) son las que componen la clave primaria.

ISC. Eli Alejandro Moreno Lpez

Revisin: 1

Pgina

Ahora podemos estar seguros de que no habr dos facturas con la misma referencia por lo que podemos consultar la factura con Referencia = FFR00123 y estaremos seguros de que slo habr una. El siguiente paso de la primera forma normal es poner los datos en tablas separadas, asegurndonos de que los datos de una tabla son datos correspondientes a aquello que almacena la tabla. En este ejemplo podemos ver cmo en la tabla FACTURA, estaremos repitiendo la direccin y el telfono para cada una de las facturas. Esto se denomina redundancia de datos y produce tres efectos negativos: 1.Mayor ocupacin en disco de los datos: El mismo dato se repite N veces. 2.Posibles inconsistencias de datos: Es posible que en una factura el telfono sea 9196700000 y en otra sea 9196700011 (cul ser la correcta?). 3.Problemas a la hora de cambiar datos repetidos: Si un cliente cambia de direccin tenemos que modificar todas sus facturas para cambiarle el dato. Hay casos muy especiales en los que la redundancia de datos se recomienda por razones de rendimiento, aunque es la excepcin que confirma la regla. La solucin que da la primera forma norma a este problema es poner los datos en tablas separadas, dependiendo del origen de la informacin: la informacin perteneciente a la factura ir en la tabla factura y la informacin perteneciente a clientes ir en la tabla CLIENTE. Podemos encontrarnos con el problema que los clientes de pases distintos tiene una codificacin independiente, es decir, que puede existir el cliente 1 de Espaa y el cliente 1 de Francia a la vez. Un diseo que cumpla la primera forma normal podra ser:

ISC. Eli Alejandro Moreno Lpez

Revisin: 1

Pgina

Tan slo se almacena el cdigo del cliente para una de sus facturas y cuando se tenga que modificar la direccin, se modificar para todas la facturas de ese cliente. Con esto ya hemos hecho que se cumpla la 3a forma normal. Y para la tabla CLIENTE hemos tenido que aadir una nueva columna (Cdigo) que sirva para identificar a cada cliente con un cdigo. Dado que es posible que exista el mismo cdigo de cliente varias veces (una vez por cada pas), la columna Pas se ha tenido que incluir dentro de la clave primaria. La segunda forma norma nos dice que hay que sacar las columnas descriptivas que pertenezcan a la clave a otra tabla. La primera forma normal nos dice que la tabla cliente esta mal definida, ya que todos los campos son datos relacionados con el cliente. Pero vemos que le Pas se repetir varias veces, volviendo a caer en el error de redundancia. Para ello hay que crear una tabla aparte en la que se incluya el cdigo y la descripcin del pas, as ala hora de almacenar el pas en la tabla CLIENTE, slo se almacenar un cdigo y no su descripcin completa que ocupa mucho ms espacio. Adems a la hora de modificar una descripcin, slo habr que modificarla una vez. El esquema de la segunda forma normal quedara as:

ISC. Eli Alejandro Moreno Lpez

Revisin: 1

Pgina

En este punto, aunque slo hayamos aplicada la primera y segunda forma normal, ya tenemos la BD normalizada, ya que la tercera forma normal, se cumple en todas las tablas. Una forma de abreviar las formas normales es aplicando directamente la tercera, ya que si un esquema de BD cumple la tercera forma normal, automticamente est cumpliendo la primera y la segunda.

Concepto de Relacin
Se denomina relacin a todos aquellos vnculos que establecen unas tablas con otras, debidos a la aplicacin de las formas normales. En el ejemplo anterior, hemos creado relaciones entre unas tablas y otras desde el momento en que se separan los datos en ms de una tabla y se utiliza el cdigo como enlace entre unas y otras. Una relacin que hemos creado ha sido la que se establece entre la tabla CLIENTE y la tabla PAS. Ambas tablas estn intercomunicadas por una de sus columnas: Cd. Pas para CLIENTE y Cdigo para PAS. Con esta relacin sabemos que todo campo Cd. Pas de la tabla CLIENTE, tiene un registro equivalente en la tabla PAS.

Relacin 1-1
La relacin 1-1 se establece cuando un registro de la tabla A tiene un solo registro relacionado en la tabla B. Esta relacin se podra establecer por ejemplo si creamos una tabla de Pagos de Facturas. Suponiendo que una factura se paga de una sola vez. Podemos definir la siguiente tabla para almacenar cuando se pagan las facturas:

ISC. Eli Alejandro Moreno Lpez

Revisin: 1

Pgina

Podemos ver que la clave de esta tabla esta es la referencia de la factura. Esto es el dato relevante que nos dice que la relacin esta establecida entre la tabla y otra es 1-1. En la tabla PAGOS_FACTURA slo puede aparecer una vez cada referencia. Y en la tabla factura slo puede aparecer una vez cada referencia. Desde el punto de vista conceptual, las relaciones 1-1 son necesarias y convenientes, para que se cumpla la tercera forma norma y que en cada tabla slo aparezcan datos correspondientes a su nivel lgico. Sin embargo, desde el punto de vista productivo y prctico, una relacin 1-1 se puede sustituir por ms registros en la tabla original. Ya que un registro de A solo puede tener un registro en B, entonces las columnas B pueden entrar a formar parte de A. En un anlisis ms prctico que exhaustivo podramos haber definido facturas de la siguiente manera:

Relacin 1-N
Una relacin 1-N es ms comn que 1-1, ya que tanto desde el punto de vista conceptual, como desde el prctico, es necesario hacerlas. Volviendo al caso de los pagos de las facturas, podemos permitir que una factura se pague fraccionada, por ejemplo a 30, 60 y 90 das. Para este caso necesitamos que una referencia aparezca ms de una vez en la tabla de PAGOS, por lo que la clave primaria debe ser cambiada. La definicin de la tabla para una relacin 1-N hubiese sido as:

ISC. Eli Alejandro Moreno Lpez

Revisin: 1

Pgina

Entonces una referencia puede aparecer N veces, una por fecha distinta introducida. As pagar una factura en las siguientes fracciones.

Si la clave se hubiese definido slo como Referencia, no podramos haber insertado ms de una fecha para la misma referencia. Sin embargo al definirla como Referencia, Fecha, podemos introducir tantas parejas Referencia-Fecha como queramos. En nuestro ejemplo se ha pagado una factura fraccionada en tres pagos con un mes de diferencia entre ellos. Las relaciones 1-N tambin son llamadas Maestro-Detalle, donde el maestro es la tabla A (el 1 en la relacin) y el detalle es la tabla B (la N en la relacin). En nuestro ejemplo FACTURA es el PAGOS_FRACCIONADOS_FACTURA un detalle de factura. maestro y

Como norma general (lgicamente tiene sus excepciones) podemos decir que las columnas de la clave primaria de una tabla detalle tienen que ser las mismas que su maestro, aadiendo una (o varias) columnas a la clave (que marcan la diferencia entre el maestro y el detalle). Esta norma se cumple para nuestro ejemplo. Las relaciones 1-N pueden ser optativas u obligatorias en ambos sentidos. Es decir, la tabla A puede estar obligada (o no) a tener registros relacionados en la tabla B, la tabla B puede estar obligada (o no) a tener registros relacionados en la tabla A.

ISC. Eli Alejandro Moreno Lpez

Revisin: 1

Pgina

Una relacin tpica Maestro-Detalle, es optativa en sentido A-B pero obligatoria en sentido B-A. Significa que un maestro puede tener o no detalles, pero el detalle tiene que tener maestro obligatoriamente. El concepto de relacin es muy comn dentro de las BD y est presente continuamente. Es preciso que se maneje con soltura a la hora de definir las claves primarias para cada una de las tablas.

Claves Forneas
Una vez establecidas las relaciones entre las tablas, debemos estar seguros de que stas se cumplen siempre. En nuestro ejemplo anterior debemos asegurarnos de que si hay un registro de PAGOS_FRACCIONADOS_FACTURA, debe existir la correspondiente factura, y que si sta borrada, se haga lo mismo con sus pagos. Las BD nos ofrecen esta posibilidad a travs de las claves forneas, que no son ms que un tipo de clave (como la primaria) que hace referencia a otras tablas. As la tabla PAGOS_FRACCIONADOS_FACTURA debe definir una clave que compruebe que siempre que se inserte un pago, exista la factura correspondiente (en la tabla FACTURA). Adems la BD se encarga de que si queremos borrar una factura (en la tabla FACTURA) no nos deje si existen pagos o bien borre todos los pagos correspondientes. Las claves forneas deben crearse sobre las tablas hijo, o las tablas B en cada relacin, normalmente en los detalles. En nuestro ejemplo de las tablas FACTURA, CLIENTE y PAIS se deben aplicar las siguientes claves forneas (restricciones). Cliente: Comprobar que no se puede dar de alta un cliente a un pas que no exista. Adems no se podr borrar un pas siempre que existan clientes datos a ese pas. Clave fornea en CLIENTE( cod_pais ) hace referencia sobre PAIS( codigo ) Factura: Comprobar que no se puede dar de alta una factura a un cliente (pas, cliente) que no exista. Tambin se comprobar que no se puede borrar un cliente que tenga facturas. Clave fornea en FACTURA( cod_pais, cod_cliente) hace referencia sobre CLIENTE(cod_pais, cod_cliente)

ISC. Eli Alejandro Moreno Lpez

Revisin: 1

Pgina

Se puede ver como la tabla PAIS no tiene ninguna clave fornea, y debe crearse sobre la tabla B de la relacin que representa. Como norma general, cada relacin debe tener una clave fornea, y debe crearse sobre la tabla B de la relacin que representa

ISC. Eli Alejandro Moreno Lpez

Revisin: 1

Pgina

Glosario
Bit: CharSet: Es el juego de caracteres que se utilizan para cotejar la informacin almacenada en la Base de datos. Lenguaje SQL: Monousuario: Multiplataforma: Multiusuario: SQL: Ver Lenguaje SQL.

ISC. Eli Alejandro Moreno Lpez

Revisin: 1

También podría gustarte