Tuesday, August 01, 2006

Analisis y diseño de una DB (Parte II)

EL Modelo Relacional
(Fases - introducción)

Como había comentado en un post anterior, el diseño de una DB se descompone en 3 grandes fases:

  • Diseño conceptual
  • Diseño lógico
  • Diseño físico

Esta descomposición nos permite un mejor análisis del medio que vamos a modelar, reduciendo la complejidad y permitiendo una mejor abstracción de la realidad.

Para el Diseño conceptual, se parte de la especificación de los requerimientos (como lo llegue a visualizar en el proyecto DULAS: el llamado análisis de requerimientos), el cual produce como resultado el esquema conceptual de la base de datos. El objetivo de esta fase es obtener una buena representación de la “realidad” que se modela, con independencia del usuario o aplicaciones en particular y fuera de consideraciones de eficiencia de la PC. Recuerdo que mi amigo Gsus me comentaba que para esta parte teníamos que ver a nuestro sistema como una “caja negra”, es decir: no debe de importarnos como lo hace, debemos enfocarnos en lo que hace, lo que obtenemos, lo que queremos de esta caja negra. Es en base a este principio por el cual empezamos el desarrollo de nuestra base de datos, desde el diseño conceptual. Este diseño consta a su vez de 2 fases:

  • Análisis de requisitos (¿que representamos?): Aquí se busca elaborar un esquema descriptivo del “mundo real” mediante la recolección de datos (sobretodo entrevistas a los futuros usuarios acerca de lo que necesitan)
  • Conceptualización (¿cómo representamos?): Aquí vamos refinando el primer esquema descriptivo obtenido del primer esquema descriptivo (refinar la data se podría decir), para conseguir pasar del mundo real al esquema descriptivo y de éste al esquema conceptual, siendo independiente del sistema a implementar.

Para el Diseño lógico, partimos del esquema conceptual, con el cual obtenemos la descripción de nuestra DB que puede procesarse en el sistema. El objetivo central es transformar el esquema conceptual para obtenemos la descripción de nuestra DB adaptándolo al modelo de datos del sistema. Aquí ya tratamos operaciones de consulta y actualización de la data de la DB, obteniendo el esquema lógico. Para esta fase utilizamos el modelo relacional aplicando un proceso denominado NORMALIZACIÓN.

El proceso de normalización consiste en sustituir una relación por un conjunto de esquemas equivalentes, los cuales representan la misma información que la relación de origen, pero no presentan cierto tipo de anomalías a la hora de realizar operaciones sobre ella.

Anomalías: Son todos aquellos aspectos indeseables que pueden presentarse dentro de una relación cuando los atributos que la conforman no son interdependientes entre sí. Tenemos las anomalías por supresión, por inserción y por actualización.

Sin embargo este proceso no cubre toda la fase, por lo que a veces es necesario hacer continuas reestructuraciones de las relaciones.

Esta fase consta de dos etapas:

  • Estructuración: Consiste en la estructuración de las relaciones atendiendo a consideraciones de tipo lógico. Esto incluye la normalización como el particionamiento horizontal, vertical o mixto. El objetivo de esta parte es obtener un esquema relacional estructurado, obteniendo un esquema normalizado.
  • Reestructuración: Su objetivo es mejorar la eficiencia de la DB, ya que si bien es cierto, en la primera parte obtenemos una representación “real” del mundo real, quizás no cumpla con el objetivo de “ser un servidor operacional y eficiente de datos”.

Para el Diseño físico, partimos del esquema lógico. Aquí se describe las estructuras de almacenamiento, los métodos para acceder a la DB de una manera eficiente, hardware, requisitos de procesos, características del sistema, es decir, cualquier factor cercano al ordenador. Como resultado obtenemos un esquema físico que describe las estructuras de almacenamiento y los métodos de acceso.

EL objetivo primordial es conseguir una instrumentación lo más eficiente posible del esquema lógico. Aquí se busca disminuir tiempos de respuesta (para no aburrirse mientras la pag web se blanquea, o nuestro aplicativo al parecer se cuelga), minimizar espacio de almacenamiento, proporcionar máxima seguridad y optimizar el consumo de servicios (para evitar que se ponga lenta la máquina), entre otros.

Es a partir de la fase del diseño lógico donde aplicamos la arquitectura de 3 capas, ya aquí detallamos los llamados “pantallazos” que usuario va a visualizar (nivel externo) y como va a interactuar (nivel lógico):Notas:

  • Anomalía por supresión: Supresión involuntaria de un atributo al realizar la “supresión” de otro atributo independiente que no debe de ir.
  • Anomalía por inserción: Necesidad de inserción de un atributo independiente al momento de realizar la inserción de una ocurrencia nueva del atributo dependiente.
  • Anomalía por actualización: Necesidad forzosa de actualizar todas las celdas en las cuales un determinado atributo posee un cierto valor que no ha sido modificado. El simple cambio de valor de uno de los atributos puede dar lugar a una ampliación o reducción del dominio de dicho atributo, dañando la consistencia del resto.

Las principales ideas de este comentario han sido extraidas del libro"Bases de Datos con SQL Server 2000. Transact SQL" de Jorge Moratalla del grupo "EIDOS"

[+/-] Read More...

Analisis y diseño de una DB (Parte I)

El Modelo Relacional

(Partes)

Este modelo se basa en la representación de la información por medio de tablas (estructuras tipo tablas) denominadas relaciones, las cuales almacenan información para una determinada entidad. Tenemos por ejemplo: A los integrantes de la CelulaUNI.Net


Notamos de la tabla lo siguiente:

  • Nuestra entidad vendría a ser los integrantes con sus respectivos datos. Una entidad vendría a ser aquellos tipos de objetos cuya existencia es independiente de cualquier otro condicionamiento, por lo tanto tiene sentido considerarlo por si mismos.
  • Cada entidad consta de una seria de propiedades o atributos, el cual almacenan los datos de los integrantes. Estos atributos contribuyen a definir a la entidad.
  • Cada integrante posee un código (Cod_Miembro), el cual lo distingue de los demás. A este atributo se le denomina Clave, y es a través del cual podemos hacer la distinción de los integrantes, o mejor dicho, se puede saber a que integrante nos estamos refiriendo. Notamos que este atributo identifica unívocamente (uno a uno, uno solo, etc) a cada fila.

Notas: Las principales ideas de este comentario han sido extraidas del libro"Bases de Datos con SQL Server 2000. Transact SQL" de Jorge Moratalla del grupo "EIDOS"

[+/-] Read More...

Friday, July 28, 2006

Como diseñar una DB ??? (Parte 1)

Analisis y Diseño de Datos
(Parte 1)


Volviendo al mundo informatico, estuve revisando información acerca de SQL en lo que respecta a T-SQl; y me encontre con algo que ya habia hecho antes (del cual no tenia la más mínima idea) en el proyecto DULAS: El análisis y Diseño de la DB. Leendo este librito comprendí varias cosas que habia hecho hasta ese tiempo, y la necesidad de hacer este análisis previo.

Para empezar, debemos tener en cuenta que nuestra DB debe de ser una fiel representación de la realidad que se esta abstrayendo y que además debe de ser un servidor operacional y eficiente de los datos. Para lograr estos objetivos, se plantea construir una arquitectura de 3 capas:


  • Nivel Externo: Nivel más cercano a los usuarios, donde se definen los datos como van a ser visualizados por el usuario. Para desarrollar este nivel se tiene que limitarse solamente a pensar que necesitan los usuarios de la DB, sin tener en cuenta como lo voy a construir, o que requerimientos de hardware necesito
  • Nivel Conceptual: El cual proporciona una descripción más amplia de la DB, pero sin tener en cuenta cuestiones físicas (hardware requerido por ejemplo). Ejm: organización de los datos, restricciones de seguridad, confidencialidad.
  • Nivel Interno: Nivel más bajo en la abstracción, el cual describe la estructura interna de la DB como el tamaño de la DB para el almacenamiento fisico de los datos, dispositivos a usar (tamaño de memoria)

Para poder diseñar nuestra base de datos tenemos en cuenta el modelo E/R (Entidad Relación). Dicho modelo se basa en la representación gráfica de la información por medio de estructuras tipo tabla relacionadas entre si (denominadas RELACIONES) el cual almacenan información para una determinada entidad.

Bueno es hora de ir a almorzar =P, más adelante ire describiendo con mayor detalle todo lo referente a este modelo (E/R) .....

Notas: Las principales ideas de este comentario han sido extraidas del libro"Bases de Datos con SQL Server 2000. Transact SQL" de Jorge Moratalla del grupo "EIDOS", muy bueno de por cierto.

[+/-] Read More...

Sunday, June 25, 2006

ADO .Net parte 1

ADO.Net: Nociones de ADO. Net (Parte 1)


Ya antes habia comentado algo acerca de ADO, sus ventajas y limitaciones, ahora me toca comentar algo acerca de lo que es ADO. Net

ADO.Net es la más reciente tecnología de acceso a DB. Hablando algo de historia antigua, antes para poder trabajar con datos de una DB, pues primero habia que conectarse a ella para poder acceder a la Data (que obvio !! =P) y para lograr esto pues se usaban APIs (a traves de ellas se establecen las especificaciones para que se realice la comunicacion entre componentes, esto a través de algunas librerias o a traves del uso de algunas funciones) de conectividad abierta para las DB (ODBC). Esta nueva tecnología está incluída dentro del .Net Framework y a la vez representa una evolución de ADO.

ADO.Net destaca por ser un diseño global, que no se centra tanto en las DB como se hacia en ADO. Ahora se habla de clases que representan los objetos que dentro contienen las tablas, incluyendose las capacidades normales de una DB (índices, ordenación,etc).

ADO.Net trata de unificar algunas de las mejores prácticas de hoy para el desarrollo de software, como orientación a objetos, escalabilidad de aplicaciones, etc; todo esto bajo el abrigo de .Net Framework. Por este y otros motivos son lo que lo hacen idoneo para desarrollar aplicaciones distribuidas que puedan necesitar operar en la web.

ADO.Net esta diseñado, basicamente, para trabajar de manera desconectada (pero aun se puede operar de manera conectada) a la DB, motivo por el cual no se tienen conexiones activas que solo logran monopolizar los escasos recursos con los que se cuenta, permitiendo un mayo número de usuarios. Para realizar, las aplicaciones se conectan a la fuente de datos sólo lo suficiente para recolectar y actualizar datos, esto mediante el empleo de DataSets (son los que reemplazan al RecordSet).

ADO.Net proporciona una interfaz de acceso a datos para comunicarse con fuentes de datos que cumplen con OLE DB (SQL Server 2000 por ejemplo). Las aplicaciones que trabajen con ADO.Net usan OLE DB para manipular datos guardados en formatos no relaciones (tablas no relacionadas) como Excel.

Para la transmisión de datos, ADO.Net usa XML como formato de transmisión universal, garantizando la interoperatibilidad de las plataformas (siempre y cuando el receptor o cliente tenga disponible un analizador XML). Cualquier componente de software puede compartir datos ADO.Net siempre y cuando se emplee el mismo esquema XML que el formato para los datos transmitidos.

Bueno para comenzar eh hablado algo de ADO.Net, aunque aun faltan varias cosas por seguir comentando, lo cual lo hare más adelante.

Notas:

ODBC: ODBC son las siglas de Open DataBase Connectivity, que es un estándar de acceso a las DB desarrollado por Microsoft. El objetivo de ODBC es hacer posible el acceder a cualquier dato de cualquier aplicación, sin importar qué Sistema Gestor de DB, almacene los datos.

OLE DB (Object Linking and Embedding for Databases -Incrustación y enlace de objetos para bases de datos) Es una tecnología desarrollada por Microsoft usada para tener acceso a diferentes fuentes de información, o bases de datos, de manera uniforme.

DataSet: Es una copia en la memoria de los datos de la DB. Puede contener datos de cualquier cantidad de tablas o vistas de DB. Su ventaja radica en que proporciona una vista de la DB con varias tablas y respectivas relaciones (digamos que es una DB relacional miniatura), sin tener una conexion actica a la DB.

* Las principales ideas han sido extraídos de Wikipedia(es.wikipedia.org) y www.WillyDev.Net

[+/-] Read More...

Sunday, June 18, 2006

Se habla Quechua!!

"Qanpa Yachayniykin Nuqaykuq Munasqayku"

(Your Potential, our passion - Tu potencial, nuestra pasión)



Primero lo inicio Google al incluir en su buscador el idioma Quechua ( http://www.google.com/intl/qu/ ) y ahora Microsoft Perú en conjunto con el Gobierno Peruano han hecho posible la "traducción" del Office al idioma Quechua o Runa Simi (el idioma de los antiguos Incas). En los departamentos peruanos de Cuzco, Ayacucho, Junín, Apurímac, Huancavelica y Ancash, la mayoria de la población tiene al quechua como idioma materno, por lo cual para usar una computadora primero tendria que aprender el idoma español o castellano para poder captar o poder usar de una manera adecuda a las PC. Este programa en quechua se hizo posible con el apoyo de los profesores y lingüistas quechua hablantes de la Universidad Nacional San Antonio de Abad del Cuzco y la Universidad Nacional San Cristobal de Huamanga de Ayacucho. Con esto, Microsoft busca desarrollar el máximo potencial de las personas, en lugares donde aún se mantiene vivo al idioma Quechua, ofreciendo la oportunidad de que estos pobladores usen en su propio idoma al momento de usar el software (y porque no decirlo, acceder a información de los ultimos avances cientifícos) y pueda usarlo de la mejor manera, sin tener la necesidad de aprender el castellano para poder usar una PC. Como bien sabemos, las zonas que hablan quechua son las más pobres del país, razon por la cual a muchos no les alcanzaría el dinero para poder adquirir una computadora, ahora pienso que Microsoft ya hizo un primer esfuerzo para que se pueda usar de manera adecuada el Office, ahora corresponde al estado llevar la tecnología (digamos las computadoras) a estas zonas para favorecer su crecimiento intelectual.

Para mayor información visiten:
* La información e imagenes fueron tomadas de las páginas web de El Comercio y del diario La Flecha.

[+/-] Read More...

Saturday, June 17, 2006

Info de ADO

Bueno para empezar a comentar algo de ADO.Net pues como todo proceso se empieza por la busqueda de información, asi que en este caso empeze pidiendole a mis amigos Esteban y Ronald (en realidad solo le pedi a Esteban, asi que las disulpas para Ronald, espero no me hagan problemas por derechos de autor o me pidan unas regalias =P) algo de información sobre ADO.Net, porque? el ya lo estudio y tiene algo ordenado, siempre es bueno empezar siempre con un orden, manteniendo una metodologia, asi que empezaremos definiendo los temas que conciernen, algo basico, porque buscar toda la información que existe y estudiarla asi por asi es cometer el error que yo tuve, no se entendia lo que se leia y surgian mas problemas (hasta conflictos personales: porque no entiendo? quizas no soy habil para esto).

Primero que es ADO? para que lo usamos? y ojo que ADO es muy distinto a decir ADO.Net, porque? en realidad ADO.Net vendria a ser la evolucion de ADO. Pero antes de seguir mareandose primero veamos que es ADO, o en que se usa.

ADO (ActiveX Data Objects) es una tecnologia de acceso a datos que brinda las funcionalidades necesarias para acceder y manejar una base de datos, usando unos controles OLEDB. Esta tecnologia es una tecnologia orientada a objetos para componentes ActiveX basada en una API (Application Programmin Interface, disculpen si me equivoco) llamada OLEDB (los controles antes mencionados), evitando la programacion a bajo nivel.

Su entorno estaba diseñado basicamente para manejar en un entorno conectado, es decir, las aplicaciones que recurrian a hacer algo con una DB (database, base de datos) mantenian la conexion "viva", conectada todo el tiempo hasta que se finalizara la operacion. Tambien se podia manejar en un entorno desconectado, o digamos se podia trabajar de manera desconectada, se conectaba solamente para traer la data y se cerraba la conexion, esto mediante el empleo del recordset cuya funcion era ser el "contenedor de datos", una tabla con todos los datos solicitados

La gran aceptacion que tuvo ADO fue que era independiente del lenguaje que se utilizara al acceder (JavaScript, VBScript, etc), permitiendo conectar la pag web a cualquier DB compatible con ODBC a traves de una interfaz basado en objetos; pero no todo era felicidad.... no señores ..... los problemas surgieron al instante, el trabajar de manera conectada puede generar, si bien es cierto, datos actualizados, como "pan caliente", pero el problema es que si miles de usuario piden lo mismo (por ejemplo cuando se solicita un pedido a una empresa distribuidora) la red se congestiona por que tiene que mantener las miles de conecciones vivas, y por ende para el cliente lo que observa es gran demora por hacer quizas una transaccion tan simple para el (como comprar algo) y se llegan a extremos de aburrimiento (con algunas dosis de amargura por querer realizar las cosas en el menor tiempo posible). Ahora si pensamos en un entorno desconectado solo los clientes se conectarian a la DB para extraer la data, almacenarla en el recordset y cerrar la conexion, con esto miles de usuario no estarian ligados o amontonados y se evitaria sobrecargar el servidor, parece todo bien hasta ahora no lo creen?? pero hay un rotundo NO, los problemas surgen cuando se necesita que los datos sean lo mas actuales posibles, como por ejemplo en la bolsa de valores, donde se requiere datos precisos, entonces si tenemos datos obtenidos de manera desconectada y no son actualizados, puede que no se tomen las decisiones correctas. El empleo de ambas formas va a depender de la persona que desarrolle el aplicativo y bajo que circunstancias se trabaja la data, si se necesita que constantemente esta actualizada o no.

[+/-] Read More...

Sunday, June 11, 2006

Saludos !

Hola a todos los visitantes, bueno en este blog publicare todo lo que me paresca interesante y de provecho (sobre todo acerca de programación que me gusta mucho), espero les ayude a todos.

[+/-] Read More...