You are on page 1of 10

U.T.N. F.C. Ing.

Adriana Olmedo UNIDAD N 2:

Tcnico Superior en Programacin Laboratorio de Computacin I NORMALIZACIN DE UNA BASE DE DATOS

NORMALIZACIN DE DATOS.
Ms adelante hablaremos de los pasos bsicos a seguir para crear una base de datos relacional, en dnde la normalizacin est implcita. Ahora explicaremos qu es la normalizacin y qu implica la misma. La Normalizacin es el proceso mediante el cual se transforman datos complejos a un conjunto de estructuras de datos ms pequeas, que adems de ser ms simples y ms estables, son ms fciles de mantener. Tambin se puede entender la normalizacin como una serie de reglas que sirven para ayudar a los diseadores de bases de datos a desarrollar un esquema que minimice los problemas de lgica. Cada regla est basada en la que le antecede. La normalizacin tambin hace las cosas fciles de entender. Las guas que la normalizacin provee, crean el marco de referencia para simplificar una estructura de datos compleja. Es decir, es un proceso de refinamiento de las estructuras de la base de datos para mejorar la velocidad a la que los datos puedan accederse, as como mejorar su integridad. La meta bsica de la normalizacin es eliminar la informacin redundante de la base de datos. La Normalizacin implica los siguientes procesos: Asegurarse de que los campos de cada tabla cuentan con un identificador nico en la clave principal de la tabla. Asegurarse de que cada campo representa una sola pieza de informacin. Por ejemplo no almacene los nombres de ciudades y de los pases en el mismo campo. Eliminar informacin redundante de las tablas. Cada registro de la base de datos deber contener informacin nica. Cada pieza de informacin deber almacenarse en un solo lugar (a excepcin de los campos clave, los cuales tienen valores duplicados en toda la base de datos). Eliminar los campos de repeticin de grupos si existe la posibilidad de que se aadan ms campos al grupo. Asegurarse de que en los campos no almacenen datos originados por clculos. Otra ventaja de la normalizacin de base de datos es el consumo de espacio. Una base de datos normalizada ocupa menos espacio en disco que una no normalizada. Hay menos repeticin de datos, lo que tiene como consecuencia mucho menor uso de espacio en disco. El proceso de normalizacin tiene un nombre y una serie de reglas para cada fase. Esto puede parecer un poco confuso al principio, pero poco a poco se va entendiendo el proceso, as como las razones para hacerlo de esta manera. Grados de Normalizacin En los aos 70 Codd cre las bases de la teora de la normalizacin. A cada regla de la teora la denomin forma normal. Codd cre las formas normales 1, 2 y 3.

Pgina - 1 -

U.T.N. F.C. Ing. Adriana Olmedo

Tcnico Superior en Programacin Laboratorio de Computacin I

Primera Forma Normal La regla de la Primera Forma Normal establece que los campos (columnas) repetidas deben eliminarse, esto resuelve el problema de los encabezados de campo (columna) mltiples Por ejemplo apellido y nombre o direccin. Esto ayuda a clarificar la base de datos y a organizarla en partes ms pequeas y ms fciles de entender.

Form sN a s a orm le

Segunda Forma Normal La regla de la Segunda Forma Normal establece que todas las dependencias parciales se deben eliminar y separar dentro de sus propias tablas. Una dependencia parcial es un trmino que describe a aquellos datos que no dependen de la clave primaria de la tabla para identificarlos. Esto ayuda a clarificar la base de datos y a organizarla en partes ms pequeas y ms fciles de entender. Tercera Forma Normal Una tabla est normalizada en esta forma, si todos los campos (columnas) que no son clave son funcionalmente dependientes por completo de la clave primaria y no hay dependencias transitivas. Una dependencia transitiva es aquella en la cual existen campos (columnas) que no son clave y que dependen de otros campos (columnas) que tampoco lo son. Cuando las tablas estn en la Tercera Forma Normal se previenen errores de lgica cuando se insertan o borran registros. Cada campo (columna) en una tabla est identificada de manera nica por la clave primaria, y no debe haber datos repetidos.

PAUTAS PARA EL DISEO DE UNA BASE DE DATOS


Un buen diseo de la base de datos es la pieza clave para crear una base de datos que realice las operaciones que desee de una forma efectiva, precisa y eficaz. El diseo debe ser flexible, lgico y metdico. Algunos de los puntos importantes que definen una base de datos relacional efectiva son: Se adapta con facilidad para satisfacer los cambios futuros y los requerimientos de diseo. Sus diseos y relaciones de tablas son muy fciles de comprender. Ofrece un desempeo aceptable y una utilizacin del disco muy adecuada. Pgina - 2 -

U.T.N. F.C. Ing. Adriana Olmedo

Tcnico Superior en Programacin Laboratorio de Computacin I

A continuacin presentamos los pasos bsicos a seguir para disear una base de datos: 1. Determinar la finalidad de la base de datos. El primer paso para disear una base de datos es determinar la finalidad de la base de datos y cmo se utiliza. Debe saberse qu informacin desea obtener de la base de datos. A partir de ah, puede determinar sobre qu asuntos necesita almacenar hechos (las tablas) y qu hechos necesita almacenar sobre cada asunto (los campos de las tablas). 2. Determinar las tablas que se necesitan. Determinar las tablas puede ser el paso ms complicado del proceso de diseo de la base de datos. Esto se debe a que los resultados que desea obtener de la base de datos (los informes que desea imprimir, los formularios que desea utilizar, las preguntas para las que desea respuestas) no proporcionan pistas necesariamente acerca de la estructura de las tablas que los producen. Lo ms conveniente realizar un boceto en papel de la base de datos y trabajar sobre el diseo primero. Al disear las tablas, divida la informacin teniendo en cuenta los siguientes principios de diseo fundamentales: Una tabla no debe contener informacin duplicada y la informacin no debe duplicarse entre las tablas. Cuando cada elemento de informacin est almacenado en una tabla, se actualiza en un slo lugar. Esto resulta ms eficiente y elimina la posibilidad de que existan entradas duplicadas que contengan informacin diferente. Por ejemplo, probablemente desee almacenar la direccin y el nmero de telfono de cada cliente una sola vez en una sola tabla. Cada tabla debe contener informacin sobre un asunto. Cuando cada tabla contiene hechos slo sobre un asunto, puede mantener la informacin acerca de cada asunto independientemente de otros asuntos. Por ejemplo, puede almacenar las direcciones de los clientes en una tabla diferente de los pedidos de los clientes, de modo que pueda eliminar un pedido y conservar a la vez la informacin sobre el cliente. 3. Determinar los campos que se necesitan. Cada tabla contiene informacin acerca del mismo asunto, y cada campo de una tabla contiene hechos individuales sobre el asunto de la tabla. Por ejemplo, la tabla de Clientes puede incluir los campos del nombre de la empresa, la direccin, la ciudad, el pas y el nmero de telfono. Al realizar bocetos de los campos para cada tabla, tenga en cuenta estas sugerencias: Relacione cada campo con el asunto de la tabla. No incluya datos derivados ni calculados (datos que son el resultado de una expresin). Incluya toda la informacin que necesite. Almacene informacin en sus partes lgicas ms pequeas (por ejemplo, Nombre y Apellidos, en lugar del Nombre completo). 4. Identificar los campos con valores exclusivos. Para conectar informacin almacenada en tablas independientes (por ejemplo, para conectar a un cliente con todos los pedidos del cliente), cada tabla de la base de datos debe incluir un campo o un conjunto de campos que identifiquen de forma exclusiva cada registro individual de la tabla. Este campo o conjunto de campos se denomina clave principal. Generalmente se acostumbra identificar a cada fila o registro con un nmero de cdigo o de serie, como por ejemplo nmero de empleado o cdigo del producto; a esta informacin de identificacin la llamaremos CLAVE PRINCIPAL DE LA TABLA. Cuando abrimos una base de datos existente, cada tabla tendr su orden determinado inicialmente por su clave principal, y en base a la misma construiremos las relaciones entre las distintas tablas, puesto que se asocian datos de distintas tablas siempre en base a su clave principal.

Pgina - 3 -

U.T.N. F.C. Ing. Adriana Olmedo

Tcnico Superior en Programacin Laboratorio de Computacin I

5. Determinar las relaciones entre las tablas. Ahora que ha dividido la informacin en tablas y que ha identificado los campos de clave principal, necesita una forma de indicar cmo volver a reunir toda la informacin relacionada de un modo significativo. Para ello, debe definir relaciones entre las tablas. 6. Precisar el diseo. Una vez diseadas las tablas, los campos y las relaciones que necesita, es el momento de estudiar el diseo y detectar los posibles fallos que pueden quedar. Es ms sencillo cambiar el diseo de la base de datos ahora que una vez que haya rellenado las tablas con datos. Utilice SQL Server para crear las tablas, especificar relaciones entre las tablas e introducir algunos registros de datos en cada tabla. Observe si se puede utilizar la base de datos para obtener las respuestas que desee. 7. Introducir datos y crear otros objetos de la base de datos. Cuando considere que la estructura de las tablas cumple los objetivos de diseo descritos anteriormente, es el momento de comenzar a agregar los datos existentes a las tablas. A continuacin, puede crear las consultas que desee.

CAMPOS CLAVES
Hay dos tipos de Claves. Clave Principal Una Clave Principal es uno o ms campos (Columnas) cuyo valor o valores identifican de manera exclusiva cada registro de una tabla. Las claves principales tambin de denominan restricciones de clave principal, porque realmente restringen los valores que se pueden agregar a la tabla: evitan que se agregue una fila a la tabla, cuyas columnas de clave principal son iguales a los valores correspondientes de otra fila de dicha tabla. Clave Externa Una clave externa es una correspondencia entre un conjunto de Campos (columnas) de una tabla y el conjunto de campos (columnas) de la clave principal de otra tabla. Cuando se analizan las claves externas, las dos tablas que participan se denominan, en ocasiones, tabla de claves externas y tabla de claves principales. Las claves externas tambin reciben el nombre de restricciones de clave externa, porque restringen las filas de una tabla: garantizan que las filas que se agreguen a la tabla de claves externas tengan una fila correspondiente en la tabla de claves principales. Es decir, requieren que las filas que se incorporen a la tabla de claves principales tengan valores en la columna de claves externas que se correspondan con los valores respectivos de las columnas de claves principales para una fila de la tabla de claves principales. La caracterstica esencial de un campo clave es que su valor es distinto para cada registro. Al procedimiento de seleccionar el campo clave, y en general, a la estructuracin de la base de datos, se le llama normalizacin. El campo clave sirve para localizar un registro dado y eventualmente seleccionar alguno de sus campos.

Pgina - 4 -

U.T.N. F.C. Ing. Adriana Olmedo


CASOS TPICOS DE RELACIONES 1. Una Tabla: Tabla sin relacin AGENDA Cod_age Apellido_age Nombre_age ............. 2. Mltiples Tablas:

Tcnico Superior en Programacin Laboratorio de Computacin I

a) Relacin Uno a Uno En una relacin de uno a uno, cada registro de la Tabla Productos slo puede tener un registro coincidente en la Tabla Detalle Vestir o Detalle Alimento, y viceversa. PRODUCTOS Cod_prod Cant_prod Precio_prod 1 1 1 DETALLE VESTIR Cod_vestir Descr_prod Talle_vestir ............ 1 DETALLE ALIMENTO Cod_Alim Fecha_elab Fecha_venc .......................

b) Relacin Uno a Varios La relacin uno a varios es el tipo de relacin ms comn. En este tipo de relacin, un registro de la Tabla Editoriales, puede tener muchos registros coincidentes en la Tabla Libros. Pero un registro de la Tabla Libros slo tiene un registro coincidente en la Tabla Editoriales. EDITORIALES Cod_edit Nomb_edit Dom_edit .. 1 N LIBROS Cod_lib Titulo_lib Cod_edit .................

c) Relacin Varios a Varios En una relacin varios a varios, un registro de la Tabla Alumnos, puede tener muchos registros coincidentes en la Tabla Docentes, y viceversa. 1 1 ALUMNOS N N DOCENTES Legajo_alu Legajo_doc (no est permitido) Apellido_doc Apellido_alu Nombre_alu Nombre_doc ................. CURSOS Cod_Movim Cod_curso Legajo_doc Legaj_-alu ............. N

Pgina - 5 -

U.T.N. F.C. Ing. Adriana Olmedo

Tcnico Superior en Programacin Laboratorio de Computacin I

Integridad Referencial La integridad referencial es un sistema de reglas para garantizar que las relaciones entre los registros de tablas relacionadas sean vlidas y que no se eliminen ni modifiquen accidentalmente datos relacionados. Las relaciones de integridad referencial ayudan a garantizar que la informacin contenida en una tabla se corresponda con la informacin contenida en la otra. Diferentes Tipos de Tablas Dentro de este conjunto de tablas relacionadas que conforman una Base de datos, existen cuatro grupos bien diferenciados de Tablas: Aquellas que por su contenido se le realizan operaciones de Altas, Bajas y Modificaciones de sus atributos con muy poca frecuencia, llamados Tablas Maestras o Fijas. Por ejemplo Tablas de Proveedores, Clientes, Alumnos, Profesores, etc. Las que por su contenido se le agregan permanentemente registros como resultado de las transacciones diarias y que se relacionan con otras tablas como las fijas y auxiliares, son las denominadas Tablas de Movimientos o Transacciones. Por ejemplo: Facturacin, Cobranzas, etc. Las Tablas Auxiliares son las que por lo general contienen pocos campos y que sirven para evitar redundancia en las tablas Fijas o de Movimientos. Las Tablas Histricas contienen backup de datos de las Bases de Datos, estos se realizan en forma peridica, segn las caractersticas del sistema. Por ejemplo: todos los aos se crean histricos de facturacin de manera que podamos iniciar el nuevo ao con la tabla de facturacin vaca.

EJERCICIOS DE NORMALIZACIN: Casos tpicos


EJERCICIO N 1: Juan est creando una biblioteca barrial y necesita registrar los datos de los libros y los datos de sus autores. Aclaracin: un libro pertenece a un solo escritor y el escritor puede tener publicado varios libros. EJERCICIO N 2: La farmacia Cabildo necesita registrar los datos de los medicamentos y los datos del Laboratorio que los provee. Aclaracin: Un medicamento es provisto por un solo Laboratorio y este puede proveer varios medicamentos a la farmacia. EJERCICIO N 3: La zapatera Canelo desea registrar las distintas caractersticas de sus calzados y los datos de los proveedores de los mismos. EJERCICIO N 4: El Supermercado ONCE comercializa productos de distintos rubros. El encargado desea ordenar los productos registrando los siguientes datos cdigo de producto, descripcin del producto, nombre del producto, fecha de elaboracin, vencimiento, marca, peso, precio, etc. Los rubros podrn ser: alimentos, golosinas, perfumera, bebidas, lcteos). Pgina - 6 -

U.T.N. F.C. Ing. Adriana Olmedo

Tcnico Superior en Programacin Laboratorio de Computacin I

EJERCICIO N 5: La secretaria de Instituto de enseanza SEIKOS necesita registrar los datos de los alumnos inscriptos en las distintas carreras que se ofrecen. Aclaracin: Un alumno se puede inscribir en una sola carrera. EJERCICIO N 6: Sara, es una joven amante de la buena msica; y tiene una gran coleccin de CD de cantantes solistas que desea organizar. A ella le interesa identificar de cada CD su ttulo, el nombre o seudnimo del cantante, el gnero a que pertenece el mismo y la cantidad de temas que incluye. EJERCICIO N 7: Luciano, es un joven amante de la buena pintura; y tiene una gran pinacoteca que desea organizar. A l le interesa identificar de cada obra su nombre, el nombre o seudnimo del artista, su domicilio, telfono, e-mail, pas y las dimensiones de la obra. EJERCICIO N 8: El dueo de un supermercado proveedor. Los lamos desea registrar los productos ingresados y su

EJERCICIO N 9: La fbrica de aberturas Maguero necesita registrar a cada empleado con sus datos personales y su respectiva actividad o cargo, de las cuales se registra el nro. de la actividad, nombre y seccin a la que pertenece (ej. cargo: soldador, seccin: produccin). Aclaracin: un empelado solo posee una sola actividad, pero esa actividad la pueden desempear varios empleados. EJERCICIO N 10: Una empresa de produccin de embutidos cuenta con muchos empleados, los cuales al tener controles sanitarios peridicos la empresa ha contratado varios mdicos, a los que, se les ha asignado un grupo de empleados a cada uno. La empresa quiere registrar los datos de los empleados y el mdico asignado. Aclaracin: cada empleado ser atendido siempre por el mismo mdico. EJERCICIO N 11: La secretaria del Club Los Carolinos desea registrar en fichas los datos de cada socio y la actividad que realiza. Aclaracin: cada Socio solo puede realizar una sola actividad. EJERCICIO N 12: La guardera Pichoncitos desea registrar los datos de los nios y su respectivo tutor (padre o madre).

Pgina - 7 -

U.T.N. F.C. Ing. Adriana Olmedo

Tcnico Superior en Programacin Laboratorio de Computacin I

SQL - Sentencias de Creacin de una Base de Datos TRANSACT-SQL


SQL Server tiene incorporado un lenguaje denominado Transact-SQL que contiene los comandos y sentencias necesarios para administrar una instancia de SQL Server, crear y administrar sus objetos, y consultar, insertar, modificar, y eliminar datos de las tablas.

TIPOS DE DATOS
Como sabemos una base de datos esta compuesta de tablas donde almacenamos registros catalogados en funcin de distintos campos (caractersticas). Un aspecto previo a considerar es la naturaleza de los valores que introducimos en esos campos. Dado que una base de datos trabaja con todo tipo de informacin, es importante especificarle qu tipo de valor le estamos introduciendo de manera que, por un lado, facilite la bsqueda posterior y por otro, optimice los recursos de memoria. Es importante especificar que tipo de informacin ser permitida en cada una de las columnas que conforman la estructura de la fila. Por ejemplo, si desea almacenar precios de productos en una columna debera especificar que el tipo de datos sea money, si desea almacenar nombres debe escoger un tipo de dato que permita almacenar informacin de tipo carcter. Los tipos de datos incluidos en SQL Server son:

Binario

Almacenan cadenas de bits. EL dato consiste en nmeros hexadecimales.

Carcter

Consiste en una combinacin de letras, smbolos y nmeros.

Consiste en Fecha y Hora combinaciones vlidos de fechas y horas Decimal Se almacena informacin significativa despues del punto decimal.

Longitud fija (hasta 8 Kb) Puede variar en el nro. de dgitos varbinary hexadecimales (hasta 8 Kb.) Longitud variable y puede exceder los image 8 Kb. char Longitud fija (hasta 8 Kb) Puede variar el nro. de caracteres varchar (hasta 8Kb.) Pueden ser caracteres ASCII y exceder text los 8 Kb. Fechas entre el 01/01/1753 hasta datetime 31/12/9999 (8 by) Fechas entre el 01/01/1900 hasta smalldatetime 06/06/2079 (4 by) decimal Pueden tener hasta 38 dgitos numeric float real bigint int smallint tinyint Pgina - 8 Equivalente al decimal. Entre 1,79E + 308 hasta 1,79 + 308 Entre 3,40E + 38 hasta 3,40 + 38. Entre 2^63 hasta 2^63 - 1 (8 by) Entre -2,147,483,648 hasta 2,147,483,648 (4by) Entre -32,768 hasta 32,767 (2by) Entre 0 y 255 (1 by)

binary

Punto FlotanteNmeros Aproximados

Enteros

Datos numricos positivos o negativos

U.T.N. F.C. Ing. Adriana Olmedo


Monetario Cantidades monetarias positivas o negativas money

Tcnico Superior en Programacin Laboratorio de Computacin I

Especiales

Unicode

Entre 922,337,203,685,477,5808 positivos y negativos (8 by) smallmoney Entre 214,748,3648 (4 by) Datos que consisten de 1 o 0. Similar bit al True o False Es empleado en variables o cursor procedimientos almacenados. Indica la actividad que ocurre sobre timestamp una fila. Es un identificador nico de la fila uniqueidentifier dentro de la base de datos Almacena varios tipos de datos sql_variant excepto el tect, ntext, timestamp, image. Almacena un resultado de una table consulta. Longitud fija hasta 4000 caracteres nchar Unicode. Se puede almacenar datos Unicode. Utilizan 2 by por Longitud variable hasta 4000 cada carcter nvarchar caracteres unicode ntext Exceden los 4000 caracteres unicodes.

CREACIN DE UNA TABLA


Sintaxis de una sentencia bsica de creacin de tabla: CREATE TABLE nombre_tabla ( nom_col1 tipo_dato [IDENTITY(inicio, incremento)] [NULL|NOT NULL], nom_col2 tipo_dato, [CONSTRAINT nombre_constraint PRIMARY KEY(nom_col1)], [CONSTRAINT nombre_constraint FOREIGN KEY (nom_col2) REFERENCES tabla2(nombre_columna_tabla2)] ) Lo que est entre [ ] es opcional. En donde: CREATE TABLE nombre_tabla: se debe especificar el nombre de la tabla a crear. Nom_col1 tipo_dato: se describen los nombres de columnas con su tipo de dato, separados por comas. IDENTITY(inicio, incremento): es una propiedad que se utiliza para definir a una columna como columna identidad. En donde inicio es el primer valor a insertarse en la tabla e incremento es un valor que indica en cunto se incrementa el siguiente valor a insertarse. Esta provee un valor nico e incremental, y se suele utilizar en conjunto con la PRIMARY KEY. Solo puede ser asignada a tipos de datos numricos, y puede existir solo una columna con esta propiedad por tabla. CONSTRAINT: esta propiedad es opcional y se utiliza para hacer cumplir la integridad de los datos. Algunas de las Constraint que se pueden crear son: PRIMARY KEY: para establecer la clave principal o primaria de la tabla Pgina - 9 -

U.T.N. F.C. Ing. Adriana Olmedo

Tcnico Superior en Programacin Laboratorio de Computacin I

FOREIGN KEY: para establecer las claves secundarias o forneas de la tabla con respecto a otras.

Ejemplo: CREATE TABLE tipos_DNI ( id_tipo_doc int IDENTITY (1,1) NOT NULL, descripcion varchar(10), CONSTRAINT pk_tipo_doc PRIMARY KEY (id_tipo_doc) ) CREATE TABLE personas ( documento int NOT NULL, apellido varchar(50), nombre varchar(50), fecha_nac datetime, peso numeric(3,3), altura numeric(3,2), id_tipo_doc int, CONSTRAINT pk_documento PRIMARY KEY (documento), CONSTRAINT fk_persona_tdoc FOREIGN KEY (id_tipo_doc) REFERENCES tipos_DNI (id_tipo_doc) )

EJERCICIOS CON SQL


EJERCICIO N 1: Crear las tablas correspondientes a los ejercicios ya normalizados de esta Unidad, definiendo tipos de datos, claves primarias y forneas.

Pgina - 10 -

You might also like