Programación por Capas: Capas gestor de base de Datos y ORM Diseño y Construcción de Productos de Software Daniel Correa Botero Jeferson David Ossa Universidad.

Slides:



Advertisements
Presentaciones similares
Instalación de wordpress
Advertisements

SQL Sigla del nombre “Structured Query Language”.
LENGUAJE ESTRUCTURADO DE CONSULTA “SQL”
BASE DE DATOS OBJETO RELACIONAL
SIR – Sistema de indicadores Regionales Capacitación Carátula.
BASE DE DATOS Primeros pasos
Fernando Velasco
A continuación explicamos los pasos a seguir para cargar un pedido en nuestra página web. 1.Ingresar a 2. Loguearse.
Aprendizaje de Microsoft® Access® 2010
Por: Ronald Toscano Pretelt
Daniel Correa Botero. Las capas en azul representan módulos prediseñados que no se deben programar.
Especialista en Business Intelligence Integration Services SSIS (Sesión 7) Microsoft SQL Server 2008 R2 (2013) Suscribase a o escríbanos.
SISTEMA DE NACIMIENTOS MANUAL DEL USUARIO. El objetivo del presente manual es servir de guía al usuario final para interactuar con el Sistema, permitiéndole.
Programación por capas: Capa de Clases
TECNOLOGÍA IDC Internet Database Connector Trinitario Gómez López.
GESTOR DE BASES DE DATOS RELACIONALES
Registro Único Tributario
Taller 5: Trabajo con Plantillas y uso de tecnología Ajax.
BASE DE DATOS DISTRIBUIDAS
Curso Administrativo OTEC Unidad II : Configuración de Cursos Curso creado por : Libro de Clases Electrónico (LCE) ACTUALIZADO
PL/SQL Francisco Moreno Universidad Nacional.
EL CORREO ELECTRONICO. Introducción : El correo electrónico es el servicio de Internet con más usuarios de todo el mundo. Con este servicio se pueden.
Igor Santos Grueiro. Ahora tenemos datos y datos …
Mini curso: Inteligencia de negocios (Bodega y Minería de Datos) aplicación práctica Mauro Callejas Cuervo Ecuador, Mayo 2014 Sesión 2 – TALLER 2 Grupo.
Ingeniero Anyelo Quintero
Almacenar variables en cookies en PHP
TRINO ANDRADE G UNIVERSIDAD ECOTEC. PRESENTACIÓN DE OUTLOOK EXPRESS Microsoft Outlook Express es una herramienta necesaria que le permite administrar.
Switch en PHP Programación en Internet II. Switch en PHP Programación en Internet II Universidad de Guadalajara | Centro Universitario de la Costa Elegir.
Subconsultas Avanzadas
Bases de datos en la Web n Las bases de datos permiten almacenar de una forma estructurada y eficiente toda la información de un sitio web n Ventajas –Proporcionar.
Componentes sintácticos
Una base de datos es un “almacén” que nos permite guardar grandes cantidades de información de forma organizada para que luego podamos encontrar y utilizar.
Clase 10: Estructuras de datos y arreglos.
Comentarios en PHP Programación en Internet II. Comentarios en PHP Programación en Internet II Universidad de Guadalajara | Centro Universitario de la.
Páginas (Tabs) Página = Unidad Organizacional del Portal Página = Unidad Organizacional del Portal La jerarquía de las Páginas forma la estructura del.
Especialista en Business Intelligence Integration Services SSIS Tareas de Flujo de Control (Parte I) Microsoft SQL Server 2008 R2 Suscribase a
SQL: DDL Francisco Moreno & Carlos Mario Zapata. SQL:DDL DDL: Lenguaje de Definición de Datos Permite crear objetos en la Base de Datos Tipos de Objetos:
SQL (Structured Query Language / Lenguaje de consulta estructurado)‏
Datos a considerar: Las lectoras tiene memoria cache. Lo que significa que pueden almacenar datos aun estando fuera de línea. El programa se conecta a.
Publicación de bases de datos Access en la web
ESCUELA TECNOLÓGICA INSTITUTO TÉCNICO CENTRAL Ing. Johanna Vargas Esp. Gerencia de proyectos.
Programación por Capas: Capas gestor de base de Datos y ORM II Diseño y Construcción de Productos de Software Daniel Correa Botero Jeferson David Ossa.
Bases de Datos 1 Prof. Daniel Obando Fuentes. USE USE {database}; Cambia el contexto de base de datos Es decir, dice cuál es la base de datos que se utilizará.
Daniel Correa Botero.  Esta capa contiene todo el código sql de la base de datos, contiene la contraseña y datos de conexión a la base de datos, la función.
Structured Query Language (Lenguaje Estructurado de Consultas)
SQL: DDL Francisco Moreno. SQL: DDL DDL: Lenguaje de Definición de Datos Permite crear objetos en la BD Tipos de objetos: - Tablas: corresponden a las.
Páginas (Tabs) Página = Unidad Organizacional del Portal Página = Unidad Organizacional del Portal La jerarquía de las Páginas forma la estructura del.
NUEVO DISEÑO SITIO WEB EXPLORA REGIÓN METROPOLITANA Resultados en cuanto a tráfico, posicionamiento y nuevas herramientas.
COLEGIO DE BACHILLERES PLANTEL 13 XOCHIMILCO-TEPEPAN MATERIA:TIC EQUIPO:21 PRESENTACION: BASE DE DATOS ALUMNAS: Adán Millán Sánchez.
PROCEDIMIENTOS ALMACENADOS Es una consulta almacenada en la base de datos en un servidor. Los P.A. Mejoran el Rendimiento Disminuyen el tráfico. Los P.A.
EQUIPO:#3 GRUPO:304 NOMBRES: Lizbeth Nava Barón y Erick Ali Mejía.
SQL Sigla del nombre “Structured Query Language”.
Es un software que podemos instalar en nuestro alojamiento web. Este software se encarga de gestionar y publicar la información que le introduzcamos en.
La configuración general de un curso se realiza desde el bloque "Ajustes", en “Administración del curso”, en “Editar ajustes” (Tenemos que estar en el.
Tema 11 Bases de Datos y el Lenguaje SQL
Introducción a phpMyAdmin
1
Utilizar Costo Promedio Ponderado en el Software Administrativo SAW
MSSQL SERVER CURSO BÁSICO 1. DESCRIPCIÓN DEL CURSO. Sesión 4: Sentencia Insert,Transacciones,Insert general, Insert Select * From, Sentencia Update,Update.
Comandos DDL Los comandos DDL son las siglas de Data Definition Language, y se corresponde con el conjunto de órdenes que permiten definir las estructuras.
¿Cómo programar un Botón para agregar registros a una base de datos?
ARRAYS Y COLECCIONES DE DATOS. ARRAYS Arrays – Matriz – Vector Elemento del lenguaje que nos permite agrupar un conjunto de valores del mismo tipo, y.
En la barra de direcciones WEB escribir: blogspot.com Lo primero que pide para entrar es una cuenta de correo de google.com o de gmail.com. Si no tienes.
Bases de Datos SQL.
Plataformas e- learning Moodle. Instalacion  Descargamos Moodle de su página oficial  Una vez hemos descargado el archivo, lo descomprimimos y copiamos.
ALTER TABLE MODIFICAR LA ESTRUCTURA DE LOS OBJETOS DE UNA BASE DE DATOS.
Introducción a phpmyadmin índice 1. Introducción 6. Insertar registros 5. Crear usuario para php 8. Modificar registros 2. Base de datos MySQL 3. Crear.
DML Transact SQL Sesión X Triggers. Duración 2 Horas.
Consultas a mysql desde PHP índice 1. Introducción 5. Ejemplo 4. Tratamiento de datos 2. Instrucción SQL 3. Pasos C o n s u l t a s a m y s q l d e s d.
Crear una tabla (create table - sp_tables - sp_columns - drop table) Para ver las tablas existentes creadas por los usuarios en una base de datos usamos.
Transcripción de la presentación:

Programación por Capas: Capas gestor de base de Datos y ORM Diseño y Construcción de Productos de Software Daniel Correa Botero Jeferson David Ossa Universidad Nacional de Colombia Sede Medellín 2013

Esta capa contiene todo el código sql de la base de datos, contiene la contraseña y datos de conexión a la base de datos, la función para cerrar conexión, entre otras. Esta capa se encuentra representada por el archivo glight/modules/db.php Nota: La única forma en que se debe acceder a esta capa y utilizar las funciones de esta capa es mediante la capa ORM (mediante la variable $this->orm que contienen todos los controladores). Capa Gestor de Base de Datos

Dentro del archivo glight/modules/db.php encontraremos las siguientes variables de conexión de la base de datos. Estos variables se modifican desde glight/configs/include.php var $server Indica que en servidor se encuentra la base de datos, por defecto es localhost var $user Indica el nombre de usuario de la base de datos var $pass Indica el password de la base de datos var $db Indica el nombre de la base de datos Variables de conexión

Ingresamos a Luego a Bases de datos. Luego a crear base de datos y le ponemos el nombre de work Creación de base de datos

CREATE TABLE boss (id bigint(20) not null, name VARCHAR(30) not null, charge VARCHAR(30) not null, PRIMARY KEY(id)) ENGINE=InnoDB; Creación tabla boss Nota: Ingresamos a phpmyadmin – luego seleccionamos la tabla creada anteriormente – después seleccionamos la opción sql y copiamos y pegamos el código anterior y lo ejecutamos

CREATE TABLE clerk (id bigint(20) not null, name VARCHAR(30) not null, salary VARCHAR(30) not null, boss bigint(20) null, PRIMARY KEY(id), CONSTRAINT b_p FOREIGN KEY (boss) REFERENCES boss (id)) ENGINE=InnoDB; Creación tabla clerk

CREATE TABLE user (id bigint(20) NOT NULL AUTO_INCREMENT, name varchar(30) NOT NULL, user varchar(10) NOT NULL, password varchar(72) NOT NULL, type varchar(20) NOT NULL, varchar(50) NOT NULL, PRIMARY KEY (id), UNIQUE KEY user (user), UNIQUE KEY ( )) ENGINE=InnoDB; Creación tabla user

INSERT INTO `user` (`id`, `name`, `user`, `password`, `type`, ` `) VALUES (1, 'Admin', 'admin', '$2a$08$JyL3VzFSY76kMir2oA0mt.0XrccedWc vt1F/wu6gFjbZgQmCsjJ4W', 'admin', (2, 'Jorge', 'jorge', '$2a$08$tndTZZ2T.oGuH.GsRTYpeuvLHJgnXQ2 vCYHE843iaugAIQ6UN3YTe', 'user', Insertar Datos en user

Buscar la función SELECT (cerca a la linea 120). Copiar todo el case user y triplicarlo. Modificarlo para los casos boss y clerk. Modificación al bd.php case "clerk": switch($option['lvl2']) { case "all" : $info=$this->get_data("SELECT * FROM clerk;"); break; } break;

Son 4 las funciones principales del gestor de base de datos: - insert: aquí deben ir todos los casos de inserción de todas las tablas de la base de datos. - delete: aquí deben ir todos los casos de borrado de todas las tablas de la base de datos. - update: aquí deben ir todos los casos de editado de todas las tablas de la base de datos. - select: aquí deben ir todos los casos de selección de datos de todas las tablas de la base de datos. Funciones principales

Árbol de switches Cada una de estas 4 funciones cuenta con 2 niveles de switchesswitches - El primer nivel de switch LVL1 debe tener como cases todas las tablas, esto quiere decir que si por ejemplo tengo 2 tablas: clerk y boss entonces dentro del contenido del primer switch de la función select deben estar 2 cases, el case “clerk" y el case "boss“ - El segundo nivel de switch LVL2 es un switch interno de cada case del switch anterior, esto quiere decir que por ejemplo dentro del contenido dentro del case “clrek" (del ejemplo anterior), existirá otro switch que a su vez tendrá unos cases (propios de cada aplicación) que permitirán extraer diferentes datos de la tabla clerk.

Ejemplo de árbol de switches Recordar hacer mysql_real_escape_string a las variables antes de realizar una consulta

Ejemplo de árbol de switches Este ejemplo nos muestra que la función select del db.php cuenta con 2 cases del switch de nivel 1 (case “clerk” y “user”) que corresponde a tabla con esos mismos nombres, y a su vez nos muestra que para la tabla “clerk” el programador puede necesitar extraer la información de todas los empleados (case "all") o de un solo empleado de acuerdo a su id (case "one"). De este modo es muy fácil que cualquier programador pueda navegar a través de estas funciones y encontrar fácilmente la parte donde debe agregar cases para extraer o editar o agregar datos de cualquier tabla. Nota: por lo general son estas funciones las que deberá modificar el programador y agregar a cada una los cases que se considere necesarios.

Esta capa es la que nos permite mapear u organizar los datos que vienen de la base de datos en forma relacional a forma objetual, por esta razón se encuentra ubicada en la mitad de la capa de clases y del gestor de base de datos. Esta capa esta representada por el archivo orm.php ubicado en la ruta glight/modules/orm.php y es la única que puede acceder a las funciones de la base de datos. Nota: todo controlador tiene una variable llamada ($this- >orm) que representa esta capa. Capa ORM (Object to Relational Mapping)

Variables del archivo orm.php - var $db: es una variable que representa una instancia de la capa gestor de base de datos y mediante esta variable se invocan las funciones de dicha capa. - var $data: es una variable que se usa cuando se recoge información del gestor (se usan los selects), esta variable contiene toda esa información en forma relacional - var $objects_to_return: es una variable que contiene la información del gestor pero en forma objetual, para este proceso de transformación se usa la función get_objetcs() - var $numpages: es una variable que se usa para guardar la cantidad de páginas de una consulta por páginas de una tabla. - var $last_id: es una variable que se usa para guardar el último id que se registro en la base de datos de una tabla.

Id: 1 Nombre: Juan Cargo: Asistente Id: 2 Nombre: Daniel Cargo: Administrador Id: 3 Nombre: Sebastián Cargo: Jefe de desarrollo Agregar datos en Phpmyadmin Agregamos 3 jefes desde phpmyadmin

Extraer datos de una tabla (extraerbd.php)

Extraer datos de una tabla (extraerbd.tpl) JEFES DE LA EMPRESA {section loop=$boss name=i} Id: {$boss[i]->get('id')} Nombre: {$boss[i]->get('name')} Cargo: {$boss[i]->get('charge')} {/section}

$this->orm->connect(): esta función realiza una conexión a la base de datos. $this->orm->close(): esta función finaliza la conexión a la base de datos Función Connect y Close

$this->orm->read_data(par1, par2, par3): esta función realiza todas las consultas de SELECT de la base de datos y almacena toda la información recogida en forma relacional por dentro del orm, recibe 3 parámetros: - par1: este parámetro es un array con los nombres de las clases que deseamos leer de la base de datos (en el caso del ejemplo solo deseamos hacer una lectura de la clase 'boss', pero pueden darse múltiples lecturas - ver tutorial siguiente). Función read_data

- par2: llamado $options, es una matriz o array de 2 dimensiones, por cada clase enviada en el par1, debe existir un $options['nombre_de_la_clase']['lvl2'] = 'valor'; donde valor corresponde al nombre de la opción de lectura del select del switche de nivel 2 del gestor de base de datos (en el caso de ejemplo como solo hay una lectura de una clase entonces options será igual a $options['boss']['lvl2']="all"; lo que indica que se desea hacer una lectura de la clase boss del caso 'all' donde 'all' representa extraer todos los datos de la tabla 'boss‘ - par3 (opcional): llamado $cod, también es un array de 2 dimensiones, este parámetro recoge códigos o información adicional que ayuda con SELECTs que dependen de códigos adicionales, por ejemplo: cuando se desea hacer un SELECT de una persona por su id, aquí se enviaría un parámetro cod con el dato de ese id (en este ejemplo no se envía este parámetro debido a que no necesitamos seleccionar jefes específicos por códigos si no que los seleccionamos todos).

$this->orm->get_objetcs(par1, par2, par3): esta función se encarga de transformar los datos relacionales recogidos por 'read_data' y convertirlos en objetos, al final retorna un objeto con toda la información recogida. - par1: recibe el nombre de la clase (una sola) que se quiere transformar a forma objetual (en el caso del ejemplo solo trabajamos con la clase 'boss' y esa es la que deseamos transformar). Función get_objects

- par2 (opcional): llamado $components, es un array de 2 dimensiones que contiene información para "armar" objetos mas complejos, por ejemplo objetos donde existan relaciones o pegar objetos de un tipo a objetos de otro tipo (mas adelante encontraremos un ejemplo donde armaremos jefes y a estos jefes les pegaremos las personas que tienen asignadas). - par3 (opcional): llamado $auxiliars, es un array, que contiene el nombre de variables auxiliares adicionales que se desean extraer de la base de datos, por ejemplo: algunas veces deseamos extraer todos los datos de un empleado, pero adicionalmente deseamos extraer solo el nombre del jefe y debido a que el nombre del jefe no es un atributo propio de la clase clerk, entonces se debe usar esta variable auxiliars (mas adelante mostraremos su funcionamiento y un ejemplo).

Agregar datos desde phpmyadmin Id: 101 Nombre: Roger Alvarez Salario: Jefe: 1 Id: 102 Nombre: Andres Sossa Salario: Jefe: 1 Id: 103 Nombre: Cristhian Garzon Salario: Jefe: 1 Agregamos 4 personas desde phpmyadmin Id: 104 Nombre: Carlos Vivares Salario: Jefe: 2

Agregamos un case al switche de nivel 2 de boss Agregamos un case al switche de nivel 2 de clerk Modificamos db.php case "one": $id=mysql_real_escape_string($data['id']); $info=$this->get_data("SELECT * FROM boss WHERE id='$id';"); break; case "by_boss": $boss=mysql_real_escape_string($data['boss']); $info=$this->get_data("SELECT * FROM clerk WHERE boss='$boss';"); break;