Ir al contenido principal

Estructura lógica vs. estructura física.

 Es claro que la forma física como estén almacenados los datos es independiente del concepto que tengamos de ellos. Son el conjunto de programas que saben cómo traer, unir y mostrar los datos, así como aquellos encargados de almacenarlos, los que le dan coherencia al concepto Base de Datos.

Digamos que es como la diferencia entre harina, levadura, sal y agua por separado y una pieza de pan. Quién le dá coherencia a esa pieza de pan es el proceso que se sigue para elaborarlo.

Es importante conceptualizar esto, porque del diseño de la estructura lógica depende toda la funcionalidad del sistema. Almacenar datos en una base de datos aprovechando solamente la estructura física no ofrece, relativamente, ninguna ventaja. En cambio un buen diseño de acuerdo a la naturaleza de los datos y a la forma como serán explotados hace toda la diferencia.

Un gran problema es la inconsistencia de datos. Digamos que empleamos un archivo secuencial para almacenar la información de clientes. Supongamos que tenemos varios programas que utilizan esa información y que en un momento dado se pueden tener registros duplicados con atributos diferentes. Por ejemplo, una persona cambia de dirección y al no tener una estructura bien definida, no alteramos el registro, sino que lo damos de alta de nuevo con la nueva dirección. De esta manera, tendremos a la misma persona con dos datos diferentes y sin posibilidad de garantizar que todos los programas tendrán en cuenta que la dirección válida es la del segundo registro que aparece.

Puede ocurrir también que dos personas estén modificando simultáneamente atributos distintos del mismo registro. Sin un sistema de manejo de concurrencia, no podemos garantizar que ambos cambios permanezcan.

Bajo la misma suposición de uno o más archivos con la información y varios programas independientes que la explotan, es fácil ver que cualquier nueva explotación de la información implica un nuevo programa y que mantener un sistema como este conlleva toda la complejidad de mantener varios programas cuando se añade o elimina una columna a los registros.

Otro ejemplo, si tenemos un registro de personas donde almacenamos datos como: nombre, RFC, puesto, salario base, dirección, teléfono, fecha de nacimiento, gustos musicales, aficiones, nombre, fecha de nacimiento y ocupación del cónyuge, nombres y fechas de nacimiento de sus hijos, nombres de sus mascotas, autos que posee (con todas las características), etc.; y frecuentemente sólo utilizaremos nombre, RFC, puesto y salario base para generar una nómina, esto implica que en cada corrida, recuperaremos información que no necesitamos, con el agravante de que tenemos que traer registros inmensos para utilizar sólo cuatro campos. El problema no es el almacenaje en disco, sino el tiempo desperdiciado en recuperar registros de tal magnitud.

Un diseño un poco más inteligente tendría dos tablas, una con los datos más frecuentemente empleados de cada persona y la otra con el resto de la información que se emplea quizá sólo para fines estadísticos o para enviar tarjetas de felicitación. Por supuesto, ambas tablas estarán relacionadas por una llave primaria común.

Si tenemos un sistema donde por un lado hacemos un abono y por otro un cargo en una operación que está relacionada, es de esperar que no ocurra el cargo si no puede ocurrir el abono, o viceversa. Es decir, debemos de tener transacciones atómicas. En este caso, la pareja de transacciones debe de ocurrir por completo o no debe de ocurrir en lo absoluto.

Finalmente, un terrible problema es la exposición de los datos. En muchos casos nos interesa que ciertas gentes tengan acceso sólo a parte de la información. Es de mal gusto que todos los empleados sepan cuál es el salario del director.

Comentarios

Entradas populares de este blog

Estructura Lógica

  Una Base de Datos se divide en unidades de almacenamiento lógicas llamadas Tablespaces. Contienen distintos objetos relacionados, como las tablas de una misma base de datos. Cada base de datos está formada por uno o más tablespaces, donde al menos debe existir el tablespace SYSTEM (diccionario de datos). Una base de datos Oracle contiene como mínimo un tablespace, SYSTEM se crea automáticamente. Un tablespace contiene uno o más segmentos, cada tablespace se corresponde con uno o más ficheros de datos. Cada segmento está formado por extensiones, que son divisiones lógicas. Una extensión está formada por bloques lógicos, así es como se asigna el espacio. Un bloque es una unidad más pequeña para las operaciones de lectura y escritura. Imagen 01: representación gráfica de la distribución de la estructura lógica de las tablespace. Tipos de datos Los tipos de datos soportados por Oracle se agrupan en los siguientes conjuntos. Alfanuméricos CHAR VARCHAR2 VARCHAR NCHAR NVARCHAR2 LONG Num...

Estructura Física

  Para la arquitectura física de la base de datos este manual se basará en la arquitectura física del gestor de bases de bases de datos Oracle esto porque se decidió que para la explicación de todo el diseño e implementación de la base de los datos se va a realizar con el gestor de bases de datos Oracle. A continuación se explica la forma en que se encontrará distribuida la arquitectura física, así como también pasos a seguir para crear nuevos archivos log iniciales. Además de explicar cómo realizar multiplicación y mantenimiento de los grupos y miembros redo log online. Finalmente se mencionan algunos problemas típicos relacionados a la arquitectura física así como también recomendaciones para los mismos. La arquitectura física de Oracle tiene tres componentes básicos: La estructura de memoria Los procesos Los archivos 1. Estructura de memoria La estructura de la memoria de Oracle está formada por dos áreas de memoria llamada: SGA (Área Global del Sistema): Asignada al iniciar la ...