viernes, 17 de febrero de 2017

La persistencia de datos



Introducción a la persistencia
  • Te preguntarás: Cuando apago la máquina donde corre mi programa, qué pasa con los datos? Como hago para seguir usando normalmente mi sistema una vez que prendo la computadora o el dispositivo? No quiero tener que volver a ingresar todos los datos nuevamente.
  • Esto se puede solucionar de muchas manera. En algunos programas sencillos, con pocos datos, los programadores guardan la información en archivos.
  • Y si es tan sencillo, por qué complicarnos la vida con otras soluciones? Porque nos traen algunos problemas:
    • Redundancia e inconsistencia de datos
    • Dificultad para acceder a los datos
    • Aislamiento de los datos
    • Múltiples usuarios
    • Problemas de confidencialidad
    • Problemas de integridad
Problemas con archivos
  • El primero de los problemas lo que significa es que al poder escribir cualquier cosa en un archivo, yo podría tener datos repetidos, dado que no hay un control real sobre lo que estoy escribiendo. Básicamente es como un cuaderno de hojas, yo puedo escribir lo que quiera. Y de igual manera podría estar escribiendo cosas que se contradicen entre si.
  • También tenemos el problema de que un archivo es simplemente una cadena muy larga de letras. Para buscar algo, tengo que recorrer todo el contenido hasta encontrarlo.
  • Por otro lado, al ser un archivo un espacio en memoria que se puede acceder de manera compartida, puede ocurrir que alguien quiera escribir en el archivo mientras otro está leyendo, o también el hecho de que no queremos que cualquiera acceda al mismo porque hay información confidencial, y cuidar esto con este tipo de datos es muy difícil.
  • Cuál es la solución? Los servidores de bases de datos
Qué es una base de datos?
  • Si vamos a lo formal, una base de datos es simplemente un conjunto de datos interrelacionados almacenados en un lugar. Con lo cual podría ser sencillamente una caja con papeles de datos que tengan alguna relación entre si, como por ejemplo las boletas de servicios de un hogar cualquiera.
  • Uno asocia el término base de datos a algo informático pero el mismo es mucho mas amplio y simplemente hace mención a una colección de datos almacenados. En nuestro caso específicamente, nos referiremos a un programa que brinda el servicio de guardar nuestra información de una manera que permita salvaguardar los problemas de eficiencia, seguridad y concurrencia(que varios accedan al mismo tiempo) en un formato particular
Datos persistentes
  • En nuestros programas, tendremos dos tipos de datos: los persistentes, que son aquellos que querremos seguir teniendo cuando prendamos nuevamente nuestro sistema, y los datos propios de la ejecución del programa, que desaparecerán de la memoria de la computadora apenas apaguemos nuestro sistema.
Arquitectura de la solución
  • De esa manera, separamos nuestra aplicación de lo que es el servidor de base de datos donde guardaremos la información, y por ello tendremos una estructura como la siguiente:


Arquitectura de la aplicación
  • Muchas aplicaciones hablarán con un programa llamado Sistema de Gestión de Bases de Datos que a la vez nos va a brindar acceso a los distintos datos que necesitemos para nuestro programa
  • Nosotros en particular, vamos a estar trabajando con bases de datos llamadas RELACIONALES. En este tipo de bases de datos, lo que se intenta modelar son precisamente las relaciones entre los mismos. Entonces, por ejemplo, una persona, es modelada como un conjunto de datos: número de documento, fecha de nacimiento, sexo, nombre, apellido y cualquier otro dato que yo crea que en su conjunto representan a una persona.
Estructura de relaciones
  • Cualquier elemento de nuestro sistema, será modelado como una relación de datos en lo que denominamos tablas de la base.
  • También podremos guardar en nuestra base relaciones entre los elementos de nuestro sistema. Por ejemplo, podremos tener una nueva tabla que me relacione una persona con uno o mas auto, en la relación TIENE (para describir que una persona puede tener ninguno, uno o mas autos).
  • Las tablas tendrán la siguiente forma
  • En la ilustración podemos ver como cada una de las columnas contendrá un tipo de dato (en el caso de las personas serán el número de Documento, la fecha, etc) y cada una de las filas representará la relación que conforma a cada una de las personas en mi modelo. En mi tabla, solo tendremos las relaciones que tengan sentido. Esto quiere decir, por ejemplo, que no puede haber dos personas con distinto nombre y apellido que tengan el mismo número de documento.
  • Para manejar este tipo de tablas, se pueden utilizar distintos tipos de programas. Nosotros en particular utilizaremos para nuestros proyecto el Microsoft SQL Express que se lo pueden descargar gratuitamente de internet.
SQL
  • Para poder realizar acciones en mi base de datos, tengo que conocer el lenguaje mediante el cual me comunico con el programa: el SQL.
  • El SQL es un lenguaje que nos permite hacer dos tipos de grupos de acciones: definición (crear una base, crear tablas, borrarlas, etc) y la manipulación, que nos permite insertar datos en las tablas, borrarlos, actualizarlos y listarlos.
  • Lo primero que tenemos que ver, una vez que creamos la base de datos, es como armamos las famosas tablas de las que vinimos hablando. Esto se hace mediante la sentencia CREATE
CREATE

CREATE TABLE <NOMBRE>
(
A1TIPO1[NULL | NOT NULL] [DEFAULT V1],
ANTIPON[NULL | NOT NULL] [DEFAULT Vn],
PRIMARY KEY (Ai,..,Aj),
FOREIGN KEY (Ai,..,Aj) REFERENCES <NOMBRE_FORANEA> (Ai,..,Aj)
)
Ejemplos de uso de CREATE son:
[ Cambia placa ]
CREATE TABLE PROVEEDOR
(
COD INT NOT NULL,
NOMBRE CHAR(50) NOT NULL,
TEL INT,
PRIMARY KEY (COD)
);
  • En estos ejemplos estoy creando primero una tabla de nombre PROVEEDOR, donde tendré tres tipos de datos. El primero será un número entero que no podrá tener datos vacíos con nombre COD. Luego tendremos una palabra, que no podrá estar vacía, de 50 caracteres máximo, de nombre NOMBRE. Y finalmente tendremos un números entero de nombre TEL, y definiré que la clave primaria será COD.
Claves
  • Que son las PRIMARY KEY y FOREIGN KEY que aparecen? La clave primaria es un subconjunto de los tipos de datos que tengo en la tabla que me identifican unívocamente a una fila de la tabla. Aun es complejo de entender? Básicamente piensen en como diferenciarían a dos PROVEEDORES con los datos que les dí. Si ya sabemos que solo con el número de código de proveedor podemos decir que dos proveedores son distintos, entonces nuestra clave primaria será ese dato. El nombre en general no nos sirve porque pueden existir dos proveedores con el mismo nombre.
  • En el caso de la clave foránea es un poco mas complejo y nos permite por ejemplo hacer algunos controles en nuestra base de datos. Si tengo la relación AUTO, y el mismo posee el número de documento de su dueño, al definirlo como clave foránea me obliga a que el número de documento que aparece en AUTO tenga que existir SI O SI en PERSONA. Es un control que nos brinda automáticamente el uso de la base de datos.
DROP
  • Luego, para borrar una tabla haremos sencillamente:
DROP TABLE <NOMBRE>
Ej: DROP TABLE PROVEEDOR

INSERT
  • Una vez que tenemos nuestras tablas, en este caso PROVEEDOR, queremos empezar a llenarla de datos, y para ello utilizaremos la instrucción INSERT:
INSERT INTO TABLE <NOMBRE> (A1,..,AK)
VALUES (V1,..,VK);

EJ: INSERT INTO ARTICULO (COD,NOMBRE,TEL)
VALUES (5, “JUAN PEREZ”,666)
  • Lo que estamos haciendo con esta instrucción es decirle a nuestra base de datos que inserte los datos 5, “JUAN PEREZ” y 666 en los campos COD, NOMBRE y TEL de la tabla ARTICULO en el orden indicado.
UPDATE
  • Luego, si queremos modificar los datos que ingresamos, utilizaremos la instrucción UPDATE:
UPDATE <NOMBRE>
SET (A1 = V1,...,AN = VN)
WHERE <CONDICIÓN> ;
EJ: UPDATE PROVEEDOR P
SET (P.TEL = 0000)
EJ: UPDATE PROVEEDOR P
SET (P.TEL = 0000)
WHERE P.COD = 5
  • El UPDATE nos permite filtrar cuales serán los proveedores que queremos modificar. En el primer ejemplo estamos modificando a todos los proveedores seteándolesel teléfono en 000, mientras que en el ejemplo solo lo modifica en aquel proveedor cuyo código es 5.
DELETE
  • Luego, si nos dimos cuenta que queremos borrar algún dato en particular, simplemente lo hacemos utilizando la instrucción DELETE
DELETE FROM <NOMBRE>
WHERE <CONDICIÓN> ;

EJ: DELETE FROM PROVEEDOR P
WHERE P.COD = 5;
  • Aquí en particular estaremos borrando el registro en la tabla cuyo código sea igual a 5. En caso que queramos borrar toda la información de una tabla simplemente ejecutamos la instrucción DELETE FROM PROVEEDOR, aunque no es recomendable hacer este tipo de acciones.
SELECT
  • Finalmente tenemos la instrucción para listar información, la cual nos servirá para poder recuperar todo lo que fuimos guardando.
SELECT A1,A2,..,AN
FROM T1,T2,..,TN
WHERE p
  • En el select tenemos primero el listado separado por comas de A1, A2, …, AN que se refiere a cuales datos queremos traer. Por ejemplo, quiero que solo me traiga los códigos de proveedor y nombre, de la tabla PROVEEDOR, por lo cual pondremos:
SELECT COD, NOMBRE
FROM PROVEEDOR
  • Nos traerá todos los proveedores que hayamos guardado, pero solo su código y nombre. Si en cambio queremos que nos traiga todos los datos de cada proveedor, reemplazaremos la lista de atributos por un asterisco (*).
  • Podremos agregar filtros al igual que hicimos en el UPDATE o en el DELETE agregando condiciones en el WHERE. Por ejemplo:
SELECT *
FROM PROVEEDOR
WHERE COD=5
  • Y para terminar, debemos pensar como hacemos para relacionar datos entre tablas.
  • Si asumimos que aparte de la tabla de proveedores, tenemos una tabla artículos de la siguiente forma:
[ Inicia placa ]
CREATE TABLE ARTICULO
(
COD INT NOT NULL,
NOMBRE CHAR(50) NOT NULL,
CANTIDAD INT NOT NULL,
COD_PROV INT NOT NULL,
PRIMARY KEY (COD),
FOREIGN KEY (COD_PROV) REFERENCES PROVEEDOR (COD)
);
  • Asumamos que tenemos los siguientes datos en cada una (artículo, proveedor):

Select de varias tablas
  • Cuando nosotros hacemos SELECT * FROM ARTICULO, PROVEEDOR lo que nos devuelve es una combinación de todos los datos con todos:

  • Pero en realidad a nosotros solo nos interesan las filas que tengan sentido, y para ello utilizaremos el WHERE para solo ver lo que nos interesa, quedando:
SELECT *FROM ARTICULO A, PROVEEDOR P
WHERE A.COD_PROV = P.COD


Repaso
  • Con las bases de datos, puedo guardar información y tenerla siempre disponible cada vez que reinicio mi sistema, pudiendo acceder a los datos de manera sencilla.
  • Algunas de las ventajas que tienen estos servidores son:
    • Nos dan herramientas que garantizan evitar datos duplicados
    • Si hay datos que están relacionados, al eliminar un dato elimina todos los datos relacionados dependientes.
    • Nos ayuda a hacer nuestro modelo de datos mas comprensible, accesible y estandarizado.
  • Para trabajar con estos servidores, hemos visto algunas tareas que vamos a usar siempre en nuestro proyectos:
    • Creación de tablas
    • Inserción y actualización de datos.
    • Métodos para hacer consultas sobre los datos

Espero haber ayudado en algo. Hasta la próxima oportunidad!











  

No hay comentarios:

Publicar un comentario

       

Etiquetas

Academy (23) Accediendo a datos con ADO .NET (31) Acceso a la red (30) Algoritmo (34) Algoritmos en JAVA (2) Ampliación de clases (2) APRENDA A PROGRAMAR COMO SI ESTUVIERA EN PRIMERO - Autores : IKER AGUINAGA (3) APRENDA A PROGRAMAR COMO SI ESTUVIERA EN PRIMERO - Autores : IKER AGUINAGA (10) Aprendiendo a desarrollar en Windows 8 (5) Aprendiendo UML en 24 Horas (Autor : Joseph Schmuller ) (30) Arquitectura (29) Arquitectura del Computador (3) Arquitectura del Computador - Historia de la informática (1) Asignación de direcciones IP (23) Aspectos fundamentales de bases de datos (5) Auditoría de la dirección (2) Auditoría de Sistemas (3) Auditoría Informática - Un enfoque práctico - Mario G . Piattini y Emilio del Peso (7) Avanzado (23) Base de Datos (67) Básico (23) Bios (29) Business Productivity Online Suite - BPOS (3) Capa de Red (22) Capa de Transporte (16) Capítulo 1 - Documentos HTML5 (6) Capítulo 10. API Web Storage (2) Capítulo 11. API IndexedDB (4) Capítulo 12. API File (1) Capítulo 2. Estilos CSS y modelos de caja (7) Capítulo 3. Propiedades CSS3 (4) Capítulo 4. Javascript (6) Capítulo 5. Video y audio (6) Capítulo 6. Formularios y API Forms (8) Capítulo 7. API Canvas (5) Capítulo 8. API Drag and Drop (2) Capítulo 9. API Geolocation (2) CCNA1 v5.0 (214) CCNA1 v6.0 (23) CCNA2 v5.0 (26) CCNA3 v5.0 (25) CCNA4 v5.0 (23) CD-ROM (3) Chapter 1 How does Xamarin.Forms fit in? (7) Chapter 2 Anatomy of an app (5) Cisco (316) Cloud Computing (3) CNNA v5.0 Routing & Switching (235) CNNA v6.0 Routing & Switching (2) Codigo (2) Computadora (32) Configuración (29) Configuración de un sistema operativo de red (21) Control (29) Creación de tipos de datos y tablas (3) Creación y Administración de bases de datos (3) Creando la Interface de la Aplicación Windows (50) Creating Mobile Apps with Xamarin.Forms (13) Cuenta (29) Curso (32) Curso Aprendiendo a Programar (25) Datos (3) Desarrollando en Windows 8 - AVANZADO (2) Desarrollando en Windows 8 - BÁSICO (3) Desarrollando en Windows 8 - INTERMEDIO (2) Desarrollo (2) Desarrollo .Net (21) Desarrollo avanzado de Windows Store Apps usando C# (1) Desarrollo basado en conceptos de Ingeniería de Software para Visual Studio (2) DESARROLLO DE APLICACIONES WINDOWS CON MICROSOFT .NET (37) DESARROLLO DE APLICACIONES WINDOWS CON MICROSOFT .NET (Autor: Luis Dueñas Huaroto) (29) Desarrollo en Microsoft Visual Studio (44) Desarrollo en Microsoft Visual Studio - AVANZADO (15) Desarrollo en Microsoft Visual Studio - BÁSICO (14) Desarrollo en Microsoft Visual Studio - INTERMEDIO (18) Desarrollo en Windows Phone 8 (13) Diagnostico (4) Diagrama (3) Diagramas de actividades (2) Diagramas de colaboraciones (2) Diagramas de secuencias (2) Digital (2) Diplomado (2) Disco (29) Disco Duro (4) Diseño de aplicaciones de Windows 8 en HTML 5 (7) Dispositivos Electrónicos (11) Doctorado (2) Ejemplos (3) Ejemplos de algoritmos (27) El camino hacia el CSS3 (3) El diseño web flexible (6) El elemento de diseño Canvas (3) El enfoque de los sistemas (3) El flujo de un programa (2) El gran libro de HTML5 - CSS3 y Javascript - Autor: Juan Diego Gauchat (55) El principio de organicidad (7) Electrónica (2) Elementos de un sistema (5) Empresas (2) Entrada y salida (4) Entropía y neguentropía (7) Estrategia (2) Estructura de un programa Java (12) Estructuras de almacenamiento (10) Estructuras de control (6) Estructuras de las tablas en SQL Server (2) Estructuras fundamentales de los datos (2) Ethernet (21) Evolución y Familias de los Microprocesadores (15) Exámen (23) Exploración de la red (23) Extensión de clases (4) Facebook (4) Familia Intel (15) Forefront (8) Función (3) Funciones de una red (12) Funciones de una red informática (1) Fundamentos de C# para absolutos principiantes (17) Fundamentos de programación en Java (50) Generaciones de la computadora (5) Gestión (3) Gestión de riesgos - Auditoría de Sistemas (1) GONZALO MARTÍNEZ (1) Grupos Facebook (1) Harvard (29) Historia de las computadoras (11) HTML5 y CSS3 - Autor: Christophe Aubry (99) HTML5 y CSS3 aplicadal texto (7) HTML5 y CSS3 para los formularios (15) Imágenes (2) Implementación de Windows 7 (11) Información (31) Informática (29) Ingeniería (4) Instalar (29) Inteligencia (2) Inteligencia de Negocios con SQL Server (3) Intermedio (23) Internet (29) Internet Explorer 9 (3) Introducción a ASP.NET 5 (8) Introducción a Java (7) Introducción a jQuery (8) Introducción a la Auditoría de Sistemas (2) Introducción a la teoría general de sistemas (Oscar Johansen Bertoglio) (39) Introducción a Networking (2) Introducción a Window Forms (5) Introducción al acceso a datos con ADO .NET (9) Investigación de Operaciones (12) Java (52) Jump Start de consultas en las bases de datos de Microsoft SQL Server 2012 (8) La definición de un Sistema (6) La evolución del HTML y del CSS (3) La nueva sintaxis HTML5 (12) LA QUINTA DISCIPLINA en la práctica (Autor : Peter Senge) (28) Las animaciones en CSS3 (5) Las transformaciones CSS3 (11) Las transiciones con CSS3 (8) Licenciamiento Microsoft (3) Local Area Network (LAN) - Red de Area Local (2) Lógico (2) Los elementos de la estructura en html5 (9) Los elementos multimedia: audio y vídeo (2) Los estilos de caja en CSS3 (13) Los nuevos selectores de CSS3 (6) Maestría (2) Mantenimiento de Mouse y Teclado (2) Manual de Microsoft SQL Server - Full Transact SQL (68) Manual de soporte técnico para escuelas sobre windows 7 (42) Marco Teorico de Investigación de Operaciones (6) Medios de Almacenamiento (11) Medios de Networking (2) Mejorando la Interface de las Aplicaciones Windows (26) Memoria Tipos y Clases (5) Método (2) Metodología (1) Microsoft (324) Microsoft Lync 2010 (7) Microsoft Silverlight 4.0 (2) Microsoft Virtual Academy (356) Modelo (2) Modelo OSI y TCP-IP (2) Modelos con poco grado de dificultad de Programación Lineal - Investigación de Operaciones (13) Modelos con razonable grado de dificultad de Programación Lineal - Investigación de Operaciones (10) Modelos de desafio de Programación Lineal - Investigación de Operaciones (5) Modelos difíciles de Programación Lineal - Investigación de Operaciones (5) Modelos Fáciles de Programación Lineal - Investigación de Operaciones (13) Modelos lineales con solver (3) Modulo (23) Movimiento (2) Mozilla (29) MS SQL Server (77) MS Virtualization para Profesionales VMware - Gestión (3) MS Virtualization para Profesionales VMware- Plataforma (4) MVA (263) Negocio (2) Nivel Avanzado Desarrollo .Net (6) Nivel Básico Desarrollo .Net (11) Nivel Intermedio Desarrollo .Net (8) Normas técnicas peruanas y su evolución - Auditoría de Sistemas (1) Nube Privada - Avanzado (6) Nube Privada - Básico (6) Nube Privada - Intermedio (6) Office 365 (3) Optimización de Escritorio (10) Optimización de Escritorio - Avanzado (4) Optimización de Escritorio - Básico (3) Optimización de Escritorio - Intermedio (3) ORACLE 10g - ADMINISTRACIÓN Y ANÁLISIS (3) Oracle 10g y el Grid Computing (3) Organización aleatoria y secuencial (1) Partes principales de la Mainboard (12) Perceptron (2) Perfil (2) Periféricos de Entrada / Salida (15) Pesi (2) PHP y MySQL - Manual de aprendizaje para crear un sitio web - Autor : Olivier ROLLET (79) Plan (2) Plataforma (29) PMBOK (24) PMBOK - Guía de los fundamentos para la dirección de proyectos (24) PMBOK - INFLUENCIA DE LA ORGANIZACIÓN Y CICLO DE VIDA DEL PROYECTO (6) PMBOK - Introducción (11) PMBOK - PROCESOS DE LA DIRECCIÓN DE PROYECTOS (5) Prevención - Herramientas e Instrumentos de Medida (9) Principios básicos de enrutamiento y switching (188) Proceso (2) Proceso de auditoría de sistemas informáticos (2) Programación en Android - Auor : Salvador Gómez Oliver (46) Programación paso a paso de C# - Autor : Nacho Cabanes (16) Protocolos y comunicaciones de red (17) Proyecto (2) Qué es un sistema (4) Red de Área Local Inalámbrica (WLAN) (4) Redes (30) Redes inalámbricas - WIRELESS - Conocimiento general (15) Redes neuronales (2) Redes y Comunicaciones (45) Reparación de Fuentes - UPS - Estabilizadores (10) Reparación de Impresoras (9) Reparación de Monitores (16) Router (29) Seguridad en la Nube (3) Seminario (23) Server (24) Sharepoint 2010 - Nivel Básico (6) Sharepoint 2010 - Niveles Avanzados (18) Sharepoint 2010 - Niveles Avanzados - Básico (8) Sharepoint 2010 - Niveles Avanzados - Intermedio (9) Sinergia y recursividad (4) Sistema (33) Sistema de Cableado Estructurado (9) Software (30) SOLUCIÓN GRÁFICA DE MODELOS DE PROGRAMACIÓN LINEALES - INVOPE (8) Soporte a Infraestructura (3) SQL (38) SQL Azure - Introducción (3) Subsistemas de control (4) Tablas (4) Tarjeta Principal del Sistema (10) Tarjetas de Interfaces (7) Tecnología (31) Tecnologías LAN (1) TEORÍA GENERAL DE SISTEMAS (1) Tic (2) Tipo (2) TML5 y CSS3 - Autor: Christophe Aubry (12) Trabajando con el Formulario (7) Un diseño HTML5/CSS3: dConstruct 2011 (3) Un diseño HTML5/CSS3: FlipThru (2) Un diseño HTML5/CSS3: The Cat Template (2) Usando Controles Windows Forms (12) Usando Herramientas de Datos de Visual Studio (6) Ventas (2) Virtualización Hyper - V Nivel Básico (5) Virtualización Hyper - V Nivel Intermedio (5) What’s New in Windows 8.1 Security (4) Window (29) Windows 7 Segunda Fase - AVANZADO (4) Windows 7 Segunda Fase - BÁSICO (6) Windows 7 Segunda Fase - INTERMEDIO (4) Windows 8 - Vista Previa (4) Windows 8.1 To Go (2) Windows Azure (3) Windows Phone 7 (2) Windows Server 2008 R2 (3) Windows Server 2012 - Gestión y Automatización (3) Windows Server 2012 R2 Essentials (7) Windows Server 2012: Almacenamiento (5) Windows Server 2012: Identidad y Acceso (4) Windows Server 2012: Revisión Técnica (7) Xamarin (1)

Páginas vistas en total según Google