Deber
Deber
Deber
Carrea de Electricidad
2A1
Arquitectura de una Base de datos
Objetivo general
Objetivo de la normalización
En el modelo relacional es frecuente llamar tabla a una relación, aunque para que una tabla
bidimensional sea considerada como una relación tiene cumplir con algunas restricciones:
Terminología equivalente
Uno de los factores más importantes en la creación de páginas web dinámicas es el diseño de las
Bases de Datos (BD). Si tus tablas no están correctamente diseñadas, te pueden causar un montón
de dolores de cabeza cuando tengas de realizar complicadísimas llamadas SQL en el código PHP
para extraer los datos que necesitas. Si conoces como establecer las relaciones entre los datos y la
normalización de estos, estarás preparado para comenzar a desarrollar tu aplicación en PHP. Si
trabajas con MySQL o con Oracle, debes conocer los métodos de normalización del diseño de las
tablas en tu sistema de BD relacional. Estos métodos pueden ayudarte a hacer tu código PHP mas
fácil de comprender, ampliar, y en determinados casos, incluso hacer tu aplicación mas rápida.
Básicamente, las reglas de Normalización están encaminadas a eliminar redundancias e
inconsistencias de dependencia en el diseño de las tablas. Más tarde explicaré lo que esto
significa mientras vemos los cinco pasos progresivos para normalizar, tienes que tener en cuenta
que debes crear una BD funcional y eficiente. También detallaré los tipos de relaciones que tu
estructura de datos puede tener (PDF, 2014).
Dependencia funcional Una dependencia funcional son conexiones entre uno o más atributos.
Por ejemplo si conocemos el valor de Fecha De Nacimiento podemos conocer el valor de Edad.
FechaDeNacimiento->Edad
Dependencia funcional transitiva Supongamos que los estudiantes solo pueden estar
matriculados en un solo curso y supongamos que los profesores solo pueden dar un curso.
ID_Estudiante -> Curso_Tomando Curso_Tomando -> Profesor_Asignado ID_Estudiante ->
Curso_Tomando -> Profesor_Asignado
Entonces tenemos que ID_Estudiante determina a Curso_Tomando y
el Curso_Tomandodetermina a Profesor_Asignado, indirectamente podemos saber a través
del ID_estudiante el Profesor_Asignado. Entonces tenemos una dependencia transitiva.
Claves
Clave ajena
Cuando se tienen dos tablas o más, una clave ajena es aquella columna de una tabla que hace
referencia a una clave primaria de otra tabla.
También existe el caso de Relaciones Auto referenciales. Sucede cuando en la misma relación se
tiene una clave ajena que hace referencia a la clave primeria de la misma relación. Por otro lado
las claves ajenas pueden tomar valores nulos (Alvarez, 2007).
La base de datos no debe contar valores de clave ajena sin concordancia. Así como los valores de
clave primaria representan identificadores de entidades, las claves ajenas representan referencia a
entidades.
La regla dice: Si B hace referencia a A entonces A debe existir. Surgen los siguientes dos puntos:
La integridad referencial exige concordancia en las claves ajenas, con las claves primerias, no
con las claves alternativas.
Los conceptos de clave ajena e integridad referencial se definen uno en termino del otro.
Clave candidata
Por lo general la forma más eficiente y segura para escoger o hacer la clave primaria es poniendo
un número y aumentando éste a medida que se van añadiendo filas, pero si de casualidad se diera
el caso de que existan varias claves candidatas de las cuales se deba escoger la clave primaria,
esta elección se hace utilizando el sentido común.
Claves alternativas
Clave simple
Clave compuesta
Es una clave que está compuesta por más de un atributo.
Formas Normales
Las primeras tres formas normales son suficientes para cubrir las necesidades de la mayoría de
las bases de datos. El creador de estas 3 primeras formas normales (o reglas) fue Edgar F. Codd,
éste introdujo la normalización en un artículo llamado A Relational Model of Data for Large
Shared Data Banks.
La Relación:
cursos1: nombre, código, vacantes horario1: código, día, módulo bibliografia1: código, nombre,
autor
Dependencia completa. Está en 2FN si esta en 1FN y si sus atributos no principales dependen de
forma completa de la clave principal.
Tercera Forma Normal (3FN)
Está en segunda forma normal y todo atributo no primo es implicado por la clave primaria en una
secuencia no transitiva. Se eliminan las dependencias transitivas.
Reglas de Codd
Codd se dio de cuenta que existían bases de datos en el mercado las cuales decían ser
relacionales, pero lo único que hacían era guardar la información en las tablas, sin estas tablas
estar literalmente normalizadas; entonces éste publicó 12 reglas que un verdadero sistema
relacional debería de tener, en la práctica algunas de ellas son difíciles de realizar.Un sistema
podrá considerarse "más relacional" cuanto más siga estas reglas.
Esto significa que dado un nombre de tabla, dado el valor de la clave primaria, y dado el nombre
de la columna requerida, deberá encontrarse uno y solamente un valor. Por esta razón la
definición de claves primarias para todas las tablas es prácticamente obligatoria.
Un RDBMS (Sistema Gestor de Bases de Datos Relacionales) debe ser capaz de soportar el uso
de valores nulos en el lugar de columnas cuyos valores sean desconocidos o inaplicables.
La información de tablas, vistas, permisos de acceso de usuarios autorizados, etc, debe ser
almacenada exactamente de la misma manera: En tablas. Estas tablas deben ser accesibles igual
que todas las tablas, a través de sentencias de SQL.
Esto significa que debe haber por lo menos un lenguaje con una sintaxis bien definida que pueda
ser usado para administrar completamente la base de datos.
Regla No. 6 - La regla de la actualización de vistas
Todas las vistas que son teóricamente actualizables, deben ser actualizables por el sistema
mismo.
La mayoría de las RDBMS permiten actualizar vistas simples, pero deshabilitan los intentos de
actualizar vistas complejas.
La capacidad de manejar una base de datos con operandos simples aplica no solo para la
recuperación o consulta de datos, sino también para la inserción, actualización y borrado de
datos.
Esto significa que las cláusulas SELECT, UPDATE, DELETE e INSERT deben estar disponibles
y operables sobre los registros, independientemente del tipo de relaciones y restricciones que
haya entre las tablas.
Todas las restricciones de integridad deben ser definibles en los datos, y almacenables en el
catálogo, no en el programa de aplicación.
Ningún componente de una clave primaria puede tener valores en blanco o nulos. (esta es la
norma básica de integridad).
Para cada valor de clave foránea deberá existir un valor de clave primaria concordante. La
combinación de estas reglas aseguran que haya Integridad referencial.
El sistema debe poseer un lenguaje de datos que pueda soportar que la base de datos esté
distribuida físicamente en distintos lugares sin que esto afecte o altere a los programas de
aplicación.
El soporte para bases de datos distribuidas significa que una colección arbitraria de relaciones,
bases de datos corriendo en una mezcla de distintas máquinas y distintos sistemas operativos y
que esté conectada por una variedad de redes, pueda funcionar como si estuviera disponible como
una única base de datos en una sola máquina.
Si el sistema tiene lenguajes de bajo nivel, estos lenguajes de ninguna manera pueden ser usados
para violar la integridad de las reglas y restricciones expresadas en un lenguaje de alto nivel
(como SQL).
Algunos productos solamente construyen una interfaz relacional para sus bases de datos No
relacionales, lo que hace posible la subversión (violación) de las restricciones de integridad. Esto
no debe ser permitido (EcuRec, 2014).
Trabajos citados
Libros google. (11 de Abril de 2011). Recuperado el 06 de Julio de 2017, de ARQUITECTURAS DE
SISTEMAS DE BASES DE DATOS:
https://docs.google.com/document/d/1WSWPlIGuT0Acth7mnh5-MxfSjXRiWNQz9gmk-
lubQvQ/edit
Alvarez, S. (13 de Junio de 2007). Desarrollo Web. Recuperado el 06 de Julio de 2017, de Arquitectura de
las bases de datos: https://desarrolloweb.com/articulos/arquitectura-base-de-datos.html