jueves, 15 de diciembre de 2011

SEMANA 19 - INGIENERIA DIRECTA E INVERSA

1.INGIENERIA DIRECTA
La ingeniería es el compendio de conocimientos y técnicas científicas aplicadas a la invención, perfeccionamiento y utilización de técnicas para la resolución de problemas que afectan directamente a la sociedad en su actividad cotidiana.
En ella, el conocimiento, manejo y dominio de las matemáticas, la física y otras ciencias, obtenido mediante estudio, experiencia y práctica, se aplica con juicio para desarrollar formas eficientes de utilizar los materiales y las fuerzas de la naturaleza para beneficio de la humanidad y del ambiente.
Pese a que la ingeniería como tal (transformación de la idea en realidad) está intrínsecamente ligada al ser humano, su nacimiento como campo de conocimiento específico está unido al comienzo de la revolución industrial, constituyendo uno de los actuales pilares en el desarrollo de las sociedades modernas.
Otro concepto que define a la ingeniería es el saber aplicar los conocimientos científicos a la invención, perfeccionamiento o utilización de la técnica en todas sus determinaciones. Esta aplicación se caracteriza por utilizar principalmente el ingenio de una manera más pragmática y ágil que el método científico, puesto que una actividad de ingeniería, por lo general, está limitada a un tiempo y recursos dados por proyectos. El ingenio implica tener una combinación de sabiduría e inspiración para modelar cualquier sistema en la práctica.

Etimología
La etimología del término ingeniería es reciente, pues deriva de ingeniero, que data de 1325 del idioma inglés, cuando un engine’er (de forma literal del inglés, el que opera un engine, es decir, un motor o máquina) refiriéndose inicialmente a un constructor de máquinas militares.[1] En este contexto, ya obsoleto, un “engine” se refería a una máquina militar (hoy en día se traduce como "motor"), es decir, un dispositivo mecánico usado en las contiendas militares (por ejemplo, una catapulta). El término “engine” es aún más antiguo, pues deriva del término latino ingenium (c. 1250), al español ingenio)[2] El término evolucionó más adelante para incluir todas las áreas en las que se utilizan técnicas para aplicar el método científico. En otras lenguas como el árabe, la palabra ingeniería también significa geometría.

 El ingeniero

 
Su función principal es la de realizar diseños o desarrollar soluciones tecnológicas a necesidades sociales, industriales o económicas. Para ello el ingeniero debe identificar y comprender los obstáculos más importantes para poder realizar un buen diseño. Algunos de los obstáculos son los recursos disponibles, las limitaciones físicas o técnicas, la flexibilidad para futuras modificaciones y adiciones y otros factores como el coste, la posibilidad de llevarlo a cabo, las prestaciones y las consideraciones estéticas y comerciales. Mediante la comprensión de los obstáculos, los ingenieros deducen cuáles son las mejores soluciones para afrontar las limitaciones encontradas cuando se tiene que producir y utilizar un objeto o sistema.
Los ingenieros utilizan el conocimiento de la ciencia, la matemática y la experiencia apropiada para encontrar las mejores soluciones a los problemas concretos, creando los modelos matemáticos apropiados de los problemas que les permiten analizarlos rigurosamente y probar las soluciones potenciales. Si existen múltiples soluciones razonables, los ingenieros evalúan las diferentes opciones de diseño sobre la base de sus cualidades y eligen la solución que mejor se adapta a las necesidades.
En general, los ingenieros intentan probar si sus diseños logran sus objetivos antes de proceder a la producción en cadena. Para ello, emplean entre otras cosas prototipos, modelos a escala, simulaciones, pruebas destructivas y pruebas de fuerza. Las pruebas aseguran que los artefactos funcionarán como se había previsto.
Para hacer diseños estándar y fáciles, las computadoras tienen un papel importante. Utilizando los programas de diseño asistido por ordenador (DAO, más conocido por CAD, Computer-Aided Design), los ingenieros pueden obtener más información sobre sus diseños. El ordenador puede traducir automáticamente algunos modelos en instrucciones aptas para fabricar un diseño. La computadora también permite una reutilización mayor de diseños desarrollados anteriormente, mostrándole al ingeniero una biblioteca de partes predefinidas para ser utilizadas en sus propios diseños.
Los ingenieros deben tomar muy seriamente su responsabilidad profesional para producir diseños que se desarrollen como estaba previsto y no causen un daño inesperado a la gente en general. Normalmente, los ingenieros incluyen un factor de seguridad en sus diseños para reducir el riesgo de fallos inesperados.
La ciencia intenta explicar los fenómenos recientes y sin explicación, creando modelos matemáticos que correspondan con los resultados experimentales. Tecnología e ingeniería constituyen la aplicación del conocimiento obtenido a través de la ciencia, produciendo resultados prácticos. Los científicos trabajan con la ciencia y los ingenieros con la tecnología. Sin embargo, puede haber puntos de contacto entre la ciencia y la ingeniería. No es raro que los científicos se vean implicados en las aplicaciones prácticas de sus descubrimientos. De modo análogo, durante el proceso de desarrollo de la tecnología, los ingenieros se encuentran a veces explorando nuevos fenómenos.
También puede haber conexiones entre el funcionamiento de los ingenieros y los artistas, principalmente en los campos de la arquitectura y del diseño industrial.
Existe asimismo alguna otra creencia en la forma de entender al ingeniero del siglo XXI, ya que las raíces de este término no quedan claras, porque el término ingeniero es un anglicismo proveniente de "engineer", que proviene de engine, es decir máquina.
En algunos países, como España, existen técnicos que se dedican a labores de ingeniería: los ingenieros técnicos. Esa división de las profesiones liberales de construcción se aplica también a la arquitectura, existiendo arquitectos, de nivel de grado universitario y su versión terciaria o técnica, el arquitecto Técnico.
2. INGIENERIA INVERSA

De Wikipedia, la enciclopedia libre
El objetivo de la ingeniería inversa es obtener información o un diseño a partir de un producto accesible al público, con el fin de determinar de qué está hecho, qué lo hace funcionar y cómo fue fabricado.
Hoy en día (principios del siglo XXI), los productos más comúnmente sometidos a ingeniería inversa son los programas de computadoras y los componentes electrónicos, pero, en realidad, cualquier producto puede ser objeto de un análisis de Ingeniería Inversa.
El método se denomina así porque avanza en dirección opuesta a las tareas habituales de ingeniería, que consisten en utilizar datos técnicos para elaborar un producto determinado. En general, si el producto u otro material que fue sometido a la ingeniería inversa fue obtenido en forma apropiada, entonces el proceso es legítimo y legal. De la misma forma, pueden fabricarse y distribuirse, legalmente, los productos genéricos creados a partir de la información obtenida de la ingeniería inversa, como es el caso de algunos proyectos de Software libre ampliamente conocidos.
El programa Samba es un claro ejemplo de ingeniería inversa, dado que permite a sistemas operativos UNIX compartir archivos con sistemas Microsoft Windows. El proyecto Samba tuvo que investigar información confidencial (no liberada al público en general por Microsoft) sobre los aspectos técnicos relacionados con el sistema de archivos Windows. Lo mismo realiza el proyecto WINE para el conjunto de API de Windows y OpenOffice.org con los formatos propios de Microsoft Office, o se hace para entender la estructura del sistema de archivos NTFS y así poder desarrollar drivers para la lectura-escritura sobre el mismo (principalmente para sistemas basados en GNU/Linux).
La ingeniería inversa es un método de resolución. Aplicar ingeniería inversa a algo supone profundizar en el estudio de su funcionamiento, hasta el punto de que podamos llegar a entender, modificar y mejorar dicho modo de funcionamiento.
Pero este término no sólo se aplica al software, sino que también se considera ingeniería inversa el estudio de todo tipo de elementos (por ejemplo, equipos electrónicos, microcontroladores, u objeto fabril de cualquier clase). Diríamos, más bien, que la ingeniería inversa antecede al nacimiento del software, tratándose de una posibilidad a disposición de las empresas para la producción de bienes mediante copiado[1] desde el mismo surgimiento de la ingeniería.
En el caso concreto del software, se conoce por ingeniería inversa a la actividad que se ocupa de descubrir cómo funciona un programa, función o característica de cuyo código fuente no se dispone, hasta el punto de poder modificar ese código o generar código propio que cumpla las mismas funciones. La gran mayoría del software de pago incluye en su licencia una prohibición expresa de aplicar ingeniería inversa a su código, con el intento de evitar que se pueda modificar su código y que así los usuarios tengan que pagar si quieren usarlo.
La ingeniería inversa nace en el transcurso de la Segunda Guerra Mundial, cuando los ejércitos enemigos incautaban insumos de guerra como aviones u otra maquinaria de guerra para mejorar las suyas mediante un exhaustivo análisis.

domingo, 11 de diciembre de 2011

SEMANA 18 - ODBC . Conceptos

ODBC  . Conceptos

ODBC es una interfaz de nivel de llamada que permite que las aplicaciones tengan acceso a los datos de cualquier base de datos en la que haya un controlador ODBC. La utilización de ODBC permite crear aplicaciones de base de datos con acceso a cualquier base de datos en la que el usuario final tenga un controlador ODBC. ODBC proporciona una API que permite que la aplicación sea independiente del sistema de administración de bases de datos (DBMS) de origen.
ODBC es la parte de base de datos de la Arquitectura de servicios abiertos de Microsoft Windows (WOSA), una interfaz que permite que las aplicaciones de escritorio basadas en Windows se conecten a varios entornos de computación sin tener que volver a crear la aplicación para cada plataforma.
A continuación se incluyen componentes de ODBC:
·         API de ODBC
Biblioteca de llamadas a funciones, conjunto de códigos de error y sintaxis de lenguaje de consulta estructurado (SQL) estándar para tener acceso a los datos de los DBMS.
·         Administrador de controladores ODBC
Biblioteca de vínculos dinámicos (Odbc32.dll) que carga controladores de bases de datos ODBC en nombre de una aplicación. Esta DLL es transparente a la aplicación.
·         Controladores de bases de datos ODBC
Biblioteca o bibliotecas DLL que procesan llamadas a funciones ODBC para DBMS específicos. Para obtener una lista de los controladores proporcionados, vea Lista de controladores ODBC.
·         Biblioteca de cursores ODBC
Biblioteca de vínculos dinámicos (Odbccr32.dll) que se encuentra entre el Administrador de controladores ODBC y los controladores, y que controla el desplazamiento por los datos.
·         Administrador de ODBC
Herramienta utilizada para configurar un DBMS de modo que quede disponible como origen de datos de una aplicación.
Para que una aplicación sea independiente de los DBMS tiene que trabajar a través de un controlador ODBC creado específicamente para un DBMS, en lugar de trabajar directamente con el DBMS. El controlador convierte las llamadas en comandos que el DBMS correspondiente puede utilizar, con lo que se simplifica el trabajo del desarrollador, y hace que esté disponible para una amplia gama de orígenes de datos.
Las clases de base de datos admiten cualquier origen de datos para el que se tenga un controlador ODBC. Entre ellos se puede incluir, por ejemplo, una base de datos relacional, una base de datos de método de acceso secuencial indizado (ISAM), una hoja de cálculo de Microsoft Excel o un archivo de texto. Los controladores ODBC administran las conexiones al origen de datos y se utiliza SQL para seleccionar los registros de la base de datos.
. Configuración
Una aplicación de Conectividad abierta de bases de datos (ODBC) utiliza un origen de datos ODBC para conectarse a una instancia de Microsoft MicrosoftSQL Server. Un origen de datos ODBC es una definición almacenada que registra:
·         El controlador ODBC que se va a utilizar para las conexiones que especifican el origen de datos.
·         La información que utiliza el controlador ODBC para conectarse a un origen de datos.
·         Opciones específicas del controlador que se van a utilizar para la conexión. Por ejemplo, un SQL Server origen de datos ODBC puede registrar las opciones de ISO que va a utilizar o si los controladores deben registrar estadísticas de rendimiento.
Cada origen de datos ODBC de un cliente tiene un nombre del origen de datos (DSN) exclusivo. Un origen de datos ODBC para el controlador ODBC de SQL Server incluye toda la información utilizada para conectarse a una instancia de SQL Server, más las opciones fundamentales.


viernes, 2 de diciembre de 2011

SEMANA 17 - INTRODUCCIÓN A LAS HERRAMIENTAS CASE

 INTRODUCCIÓN A LAS HERRAMIENTAS CASE
Introducción
Hoy en día, muchas empresas se han extendido a la adquisición de herramientas CASE (Ingeniería Asistida por Computadora), con el fin de automatizar los aspectos clave de todo el proceso de desarrollo de un sistema, desde el principio hasta el final e incrementar su posición en el mercado competitivo, pero obteniendo algunas veces elevados costos en la adquisición de la herramienta y costos de entrenamiento de personal así como la falta de adaptación de la herramienta a la arquitectura de la información y a las metodologías de desarrollo utilizadas por la organización. Por otra parte, algunas herramientas CASE no ofrecen o evalúan soluciones potenciales para los problemas relacionados con sistemas o virtualmente no llevan a cabo ningún análisis de los requerimientos de la aplicación.
Sin embargo, CASE proporciona un conjunto de herramientas semiautomatizadas y automatizadas que están desarrollando una cultura de ingeniería nueva para muchas empresas. Uno de los objetivos más importante del CASE (a largo plazo) es conseguir la generación automática de programas desde una especificación a nivel de diseño.
Ahora bien, con la aparición de las redes de ordenadores en empresas y universidades ha surgido en el mundo de la informática la tecnología cliente / servidor. Son muchas de las organizaciones que ya cuentan con un número considerable de aplicaciones cliente / servidor en operación: Servidores de Bases de Datos y Manejadores de Objetos Distribuidos. Cliente / servidor es una tecnología de bajo costo que proporciona recursos compartidos, escalabilidad, integridad, encapsulamiento de servicios, etc. Pero al igual que toda tecnología, el desarrollo de aplicaciones cliente / servidor requiere que la persona tenga conocimientos, experiencia y habilidades en procesamiento de transacciones, diseño de base de datos, redes de ordenadores y diseño gráfica de interfase.
El objeto de estudio está centrado en determinar ¿cuáles son las influencias de las herramientas CASE en las empresas desarrolladoras de sistemas de información cliente / servidor? Y ¿cuáles son las tendencias actuales de las empresas fabricantes de sistemas cliente / servidor?.
A continuación, en el siguiente artículo ahondaremos más en el propósito general de las
Herramientas CASE y el impacto que puede ocasionar el uso de las mismas en una empresa.
2. Herramientas Case
De acuerdo con Kendall y Kendall la ingeniería de sistemas asistida por ordenador es la aplicación de tecnología informática a las actividades, las técnicas y las metodologías propias de desarrollo, su objetivo es acelerar el proceso para el que han sido diseñadas, en el caso de CASE para automatizar o apoyar una o mas fases del ciclo de vida del desarrollo de sistemas.
Cuando se hace la planificación de la base de datos, la primera etapa del ciclo de vida de las aplicaciones de bases de datos, también se puede escoger una herramienta CASE (Computer-Aided Software Engineering) que permita llevar a cabo el resto de tareas del modo más eficiente y efectivo posible. Una herramienta CASE suele incluir:
  • Un diccionario de datos para almacenar información sobre los datos de la aplicación de bases de datos.
  • Herramientas de diseño para dar apoyo al análisis de datos.
  • Herramientas que permitan desarrollar el modelo de datos corporativo, así como los esquemas conceptual y lógico.
  • Herramientas para desarrollar los prototipos de las aplicaciones.
El uso de las herramientas CASE puede mejorar la productividad en el desarrollo de una aplicación de bases de datos.
En la década de los setenta el proyecto ISDOS desarrolló un lenguaje llamado "Problem Statement Language" (PSL) para la descripción de los problemas de usuarios y las necesidades de solución de un sistema de información en un diccionario computarizado. Problem Statement Analyzer (PSA) era un producto asociado que analizaba la relación de problemas y necesidades.
Pero la primera herramienta CASE como hoy la conocemos fue "Excelerator" en 1984, era para PC. Actualmente la
oferta de herramientas CASE es muy amplia y tenemos por ejemplo el EASYCASE o WINPROJECT. (Monografías.com)
La tecnología CASE supone la automatización del desarrollo del software, contribuyendo a mejorar la calidad y la productividad en el desarrollo de sistemas de información y se plantean los siguientes objetivos:
  • Permitir la aplicación práctica de metodologías estructuradas, las cuales al ser realizadas con una herramienta se consigue agilizar el trabajo.
  • Facilitar la realización de prototipos y el desarrollo conjunto de aplicaciones.
  • Simplificar el mantenimiento de los programas.
  • Mejorar y estandarizar la documentación.
  • Aumentar la portabilidad de las aplicaciones.
  • Facilitar la reutilización de componentes software.
  • Permitir un desarrollo y un refinamiento visual de las aplicaciones, mediante la utilización de gráficos.
. Erwin Platinium
Las Herramientas case es la mejor base para el proceso de análisis y desarrollo de software, así que las computadoras afectan nuestras vidas nos guste o no. Utilizamos las maquinas en nuestra vida diaria, la mayor parte del tiempo sin reconocer conscientemente que estamos haciéndolo, a diario utilizamos aplicaciones domésticas como microondas, televisión, vídeo Casseteras o en la calle los cajeros automáticos, entre otros.
La verdad es que no podemos escapar de las computadoras. El rápido incremento es una hazaña de las computadoras junto al dramático decremento en tamaño y costo, y así esta tecnología, es una larga variedad de aplicaciones que éstas pueden soportar.
Desde el inicio de la escritura de software, ha existido un conocimiento de la necesidad de herramientas automatizadas para ayudar al diseñador del software. Inicialmente, la concentración estaba en herramientas de apoyo a programas como traductores, recopiladores, ensambladores, procesadores de macros, montadores y cargadores. Este conjunto de aplicaciones, aumentó de una manera rápida en un breve espacio de tiempo, causando una gran demanda por nuevo software a desarrollar. A medida que se escribía nuevo software, habían ya en existencia millones y millones de líneas de código que necesitaban se mantenidas y actualizadas.
Significado sigla CASE
Computer
Aided Assisted Automated
Software Systems
Engineering
2. Qué son las Herramientas CASE?
Se puede definir a las Herramientas CASE como un conjunto de programas y ayudas que dan asistencia a los analistas, ingenieros de software y desarrolladores, durante todos los pasos del Ciclo de Vida de desarrollo de un Software (Investigación Preliminar, Análisis, Diseño, Implementación e Instalación.).
CASE es también definido como el Conjunto de métodos, utilidades y técnicas que facilitan el mejoramiento del ciclo de vida del desarrollo de sistemas de información, completamente o en alguna de sus fases.
Se puede ver al CASE como la unión de las herramientas automáticas de software y las metodologías de desarrollo de software formales.
Existe también el CASE integrado que fue comenzando a tener un impacto muy Significativo en los negocios y sistemas de información de las organizaciones, además con este CASE integrado las compañías pueden desarrollar rápidamente sistemas de mejor calidad para soportar procesos críticos del negocio y asistir en el desarrollo y promoción intensiva de la información de productos y servicios.
3. Historia de las Herramientas CASE.
Las Herramientas CASE se iniciaron con un procesador de palabras que fue usado para crear y manipular documentación. Los 70’s vieron la introducción de técnicas gráficas y diagramas de flujo de datos. Sobre este punto, el diseño y especificaciones en forma pictórica han sido extremadamente complejos y consumían mucho tiempo para realizar cambios.
La introducción de las herramientas CASE para ayudar en este proceso ha permitido que los diagramas puedan ser fácilmente creados y modificados, mejorando la calidad de los diseños de software. Los diccionarios de datos, un documento muy usado que mantiene los detalles de cada tipo de dato y los procesos dentro de un sistema, son el resultado directo de la llegada del diseño de flujo de datos y análisis estructural, hecho posible a través de las mejoras en las Herramientas CASE
. Power designer
PowerDesigner combina de forma única los estándares gráficos y no gráficos de las técnicas de modelado (Requerimientos, UML, Modelado de Procesos de Negocio, XML y modelado de datos líder del mercado) con ambientes líderes y modernos como .NET, Workspace, PowerBuilder, Java, Eclipse, etc., ofreciendo soluciones innovadoras de análisis, diseño y desarrollo para el ciclo de vida de software.

Sybase® PowerDesigner adicionalmente ofrece técnicas avanzadas para mejorar la calidad, integridad y funcionamiento de los sistemas DW. PowerDesigner cumple con las necesidades de DW a través de técnicas como el manejo de requerimientos, modelado de procesos, modelado conceptual, lógico y físico de datos, modelado multidimensional con jerarquías, ETL, EII, y mapeo de replicación de fuentes externas.

PowerDesigner ofrece diagramas multidimensionales que documentan el ambiente DW con objetos multidimensionales enlazados a tablas físicas y con la posibilidad de mostrar jerarquías, jerarquías virtuales y mucho más. Una definición de DW tampoco podría estar completa sin la definición de las transformaciones de la fuente de datos que será guardada en ella. El Liquidity Model de PowerDesigner (ILM), documenta todos los aspectos en el movimiento de información. Fuentes de datos inicial y destino, múltiples transformaciones, publicaciones y suscripciones sirven para documentar cualquier ETL, EII o proceso de replicación usado en DW y Datamarts.
PowerDesigner, la herramienta de modelamiento número uno de la industria, permite a las empresas, de manera más fácil, visualizar, analizar y manipular metadatos, logrando un efectiva arquitectura empresarial de información.
PowerDesigner para Arquitectura Empresarial también brinda un enfoque basado en modelos, el cual permite alinear al negocio con la tecnología de información, facilitando la implementación de arquitecturas efectivas de información empresarial. Brinda potentes técnicas de análisis, diseño y gestión de metadatos a la empresa.
PowerDesigner combina varias técnicas estándar de modelamiento con herramientas líder de desarrollo, como .NET, Sybase WorkSpace, Sybase Powerbuilder, Java y Eclipse, para darle a las empresas soluciones de análisis de negocio y de diseño formal de base de datos. Además trabaja con más de 60 bases de datos relacionales.
Beneficios
  • Alinea el negocio y la tecnología de información para mejorar la productividad.
  • Brinda soporta abierto a ambientes heterogéneos de todas clases.
  • Es altamente personalizable, permitiendo acogerse a los estándares y regulaciones.
  • Facilita la arquitectura empresarial, documentando los sistemas existentes.
  • Aumenta la agilidad del negocio con “Link & Sync” y análisis de impacto
. Aplicación del alumno

viernes, 18 de noviembre de 2011

SEMANA 15 - NORMALIZACIÓN III

NORMALIZACIÓN III
La Tercera Forma Normal En realidad si nos guiamos en el ejemplo de esta nota, ya no quedaria normalización por aplicar y podriamos decir que nuestro ejemplo cumple con las 3 formas normales, ya que la 3ra Forma Normal nos habla de que :
  1. Ninguna Columna puede depender de una columna que no tenga una clave
  2. No puede haber datos derivados
En el 2do ejemplo hemos descubierto campos que dependian de la clave principal (VentaID) y que podrian incluirse en una tabla maestra.Pero supongamos un ejemplo donde ciertas columnas no dependen de la clave principal y si dependen de una columna de nuestra tabla.
 VentaID
ItemID 
ProductoID 
Cantidad 
Descripcion 
Medida 
Proveedor 
 1
3455 
12 
Impresora HP LJ8000 
122cm 
 1
2455 
34 
Scanner HP A3555 
33cm 
 2
1
5444 
21 
Mouse HP Wireless 

Esto es muy normal encontrar en bases mal normalizadas.Vemos que los campos DESCRIPCION , MEDIDA y PROVEEDOR no dependen de VENTAID y es por ello que no deberian estar dentro de la tabla de detalle de ventas, ya que dependen de PRODUCTOID.Aqui no se trata ya de eliminar grupos repedidos de datos (1ra Forma Normal) sino que ante la inclusion de una clave perteneciente a otra tabla, cualquier campo que sea subordinado de dicha clave debe estar en otra tabla y no en nuestra tabla detalle.
ConclusiónFinalmente si tomamos en cuenta que una tabla de detalle de venta (item x item) puede contener un volumen de millones de registros, al haberle aplicado las 3 formas normales nos estaremos ahorrando varios Gigabytes de tamaño en dicha tabla y por supuesto mejorado notablemente la performance.
. Aplicaciones
Si las tablas no son definidas apropiadamente, podemos tener muchos dolores de cabeza al momento de ejecutar consultas a la base de datos para tratar de obtener algún tipo de información.
No importa si nuestra base de datos tiene sólo 20 registros, o algunos cuantos miles, es importante asegurarnos que nuestra base de datos está correctamente diseñada para que tenga eficiencia y que se pueda seguir utilizando por largo del tiempo.
En este artículo, se mencionarán algunos principios básicos del diseño de base de datos y se tratarán algunas reglas que se deben seguir cuando se crean bases de datos.
Dependiendo de los requerimientos de la base de datos, el diseño puede ser algo complejo, pero con algunas reglas simples que tengamos en la cabeza será mucho más fácil crear una base de datos perfecta para nuestro siguiente proyecto.
Diseño de Bases de Datos
Son muchas las consideraciones a tomar en cuenta al momento de hacer el diseño de la base de datos, quizá las más fuertes sean:
  • La velocidad de acceso,
  • El tamaño de la información,
  • El tipo de la información,
  • Facilidad de acceso a la información,
  • Facilidad para extraer la información requerida,
  • El comportamiento del manejador de bases de datos con cada tipo de información.
No obstante que pueden desarrollarse sistemas de procesamiento de archivo e incluso manejadores de bases de datos basándose en la experiencia del equipo de desarrollo de software logrando resultados altamente aceptables, siempre es recomendable la utilización de determinados estándares de diseño que garantizan el nivel de eficiencia mas alto en lo que se refiere a almacenamiento y recuperación de la información.
De igual manera se obtiene modelos que optimizan el aprovechamiento secundario y la sencillez y flexibilidad en las consultas que pueden proporcionarse al usuario.
OBJETIVOS DEL DISEÑO DE BASES DE DATOS
Entre las metas más importantes que se persiguen al diseñar un modelo de bases de datos, se encuentran las siguientes que pueden observarse en esta figura
  1. Almacenar Solo La Información Necesaria.
A menudo pensamos en todo lo que quisiéramos que estuviera almacenado en una base de datos y diseñamos la base de datos para guardar dichos datos. Debemos de ser realistas acerca de nuestras necesidades y decidir qué información es realmente necesaria.
Frecuentemente podemos generar algunos datos sobre la marcha sin tener que almacenarlos en una tabla de una base de datos. En estos casos también tiene sentido hacer esto desde el punto de vista del desarrollo de la aplicación.
1.2. Normalizar la Estructura de las Tablas.
Si nunca antes hemos oído hablar de la "normalización de datos", no debemos temer. Mientras que la normalización puede parecer un tema complicado, nos podemos beneficiar ampliamente al entender los conceptos más elementales de la normalización.
Una de las formas más fáciles de entender esto es pensar en nuestras tablas como hojas de cálculo. Por ejemplo, si quisiéramos seguir la pista de nuestra colección de CD’s en una hoja de cálculo, podríamos diseñar algo parecido a lo que se muestra en la siguiente tabla.

+------------+-------------+--------------+ .. +--------------+
| Álbum | track1 | track2 | | track10 |
+------------+-------------+--------------+ .. +--------------+
Esto parece razonable. Sin embargo el problema es que el número de pistas que tiene un CD varía bastante. Esto significa que con este método tendríamos que tener una hoja de cálculo realmente grande para albergar todos los datos, que en los peores casos podrían ser de hasta 20 pistas. Esto en definitiva no es nada bueno.
Uno de los objetivos de una estructura de tabla normalizada es minimizar el número de "celdas vacías". El darnos cuenta de que cada lista de CD’s tiene un conjunto fijo de campos (título, artista, año, género) y un conjunto variable de atributos (el número de pistas) nos da una idea de cómo dividir los datos en múltiples tablas que luego podamos relacionar entre sí.
Mucha gente no esta familiarizada con el concepto "relacional", de manera sencilla esto significa, que grupos parecidos de información son almacenados en distintas tablas que luego pueden ser "juntadas" (relacionadas) basándose en los datos que tengan en común.
Es necesario que al realizar la estructura de una base de datos, esta sea flexible. La flexibilidad está en el hecho que podemos agregar datos al sistema posteriormente sin tener que rescribir lo que ya tenemos. Por ejemplo, si quisiéramos agregar la información de los artistas de cada álbum, lo único que tenemos que hacer es crear una tabla artista que esté relacionada a la tabla álbum de la misma manera que la tabla pista. Por lo tanto, no tendremos que modificar la estructura de nuestras tablas actuales, simplemente agregar la que hace falta.
La eficiencia se refiere al hecho de que no tenemos duplicación de datos, y tampoco tenemos grandes cantidades de "celdas vacías".
El objetivo principal del diseño de bases de datos es generar tablas que modelan los registros en los que guardaremos nuestra información.
Es importante que esta información se almacene sin redundancia para que se pueda tener una recuperación rápida y eficiente de los datos.
A través de la normalización tratamos de evitar ciertos defectos que nos conduzcan a un mal diseño y que lleven a un procesamiento menos eficaz de los datos.
Podríamos decir que estos son los principales objetivos de la normalización:
  • Controlar la redundancia de la información.
  • Evitar pérdidas de información.
  • Capacidad para representar toda la información.
  • Mantener la consistencia de los datos