BASES DE DATOS Apuntes de Cátedra Definición de Bases de Datos Base de Datos es un conjunto exhaustivo no redundante de datos estructurados organizados independientemente de su utilización y su implementación en máquina accesibles en tiempo real y compatibles con usuarios concurrentes con necesidad de información diferente. En las bases de datos la información está integrada y compartida. La información la comparten en cualquier momento y al mismo tiempo muchos usuarios que pueden tener diferentes intereses y objetivos y, muchas aplicaciones Todos comparten el mismo nivel conceptual pero cada uno tiene su propio nivel externo, su vista particular. Definición de SGBD (Sistema Gestor de Base de Datos Conjunto coordinado de programas, procedimientos, lenguajes, etc. que suministran, tanto a los usuarios como a los analistas, programadores o administrador los medios necesarios para describir, recuperar y manipular los datos almacenados en la base, manteniendo su integridad, confidencialidad y seguridad. Clasificación de usuarios.• • • Usuarios, los que utilizan la información, solamente pueden leer o modificar pero desde aplicaciones desarrolladas para tal fin. DBA, personas que gestionan la BD. Se encargan de la actualización, gestión de permisos, volcado histórico, backup, etc. Programadores, se encargan del desarrollo de aplicaciones para los usuarios. Ventajas de las bases de datos.- 1. Independencia de datos y tratamiento: Si se realizan cambios en los datos no implica que se tenga que realizar cambios en los programas y viceversa. Menor costo en el mantenimiento. 2. Coherencia de resultados. Se logra con la reducción de redundancias al tener un buen diseño de la base de datos, unificando las acciones y evitando inconsistencias. 3. Mejora en la disponibilidad de datos. No hay dueños de los datos lo que no quiere decir que sean públicos, tampoco hay aplicaciones exclusivas para gestionar esos datos. 4. Cumplimiento de ciertas normas. Se establecen restricciones de seguridad para el acceso a la base de datos. También se fijan perfiles para los usuarios referidos en cuanto al acceso a los datos y las operaciones permitidas. Desventajas.• Para pasar de un Sistema de archivo convencional a un Sistema de Base de Datos Significa: una fuerte inversión en, adquisición del SGBD, personal entrenado y equipos. MODELO DE DATOS Modelar consiste en crear un mundo teórico y abstracto tal que las conclusiones que se puedan sacar de él coinciden con las manifestaciones aparentes de la realidad. Modelo es un conjunto de conceptos que permiten construir una representación. Modelo de Datos es un dispositivo de abstracción que nos permite ver la información de los datos más que su valor concreto. Página 1 Definición de modelo de datos Conjunto de conceptos, reglas y convenciones que nos permiten describir los datos del universo del discurso, constituyendo una herramienta que facilita la interpretación de nuestro universo del discurso y su representación en forma de datos en nuestro sistema de información. Objetivos de los modelos de datos Formalización: Permite definir formalmente las estructuras permitidas y sus restricciones a fin de representar los datos, y también porque establece las bases para un lenguaje de datos. Diseño: El modelo de datos es uno de los elementos básicos (Herramienta obligada) en el diseño de Bases de datos. Modelo Entidad Relación Se basa en la construcción de una representación gráfica del modelo de datos. Sus elementos básicos son las entidades y las relaciones entre las entidades. También se puede representar los atributos tanto de entidades como de relaciones y la cardinalidad de las relaciones. Existen herramienta automatizadas (software) para realizar estos modelos con diferentes formas de representación gráfica, el que se presenta aquí es el de Ingeniería de la Información. • • Entidades.- Objetos sobre los cuales queremos guardar información y la característica es que tengan existencia por sí mismos. Se representa mediante rectángulos partidos, en la parte superior de va el nombre de la entidad, en el primer rectángulo los atributos que forman parte de la clave principal y en el segundo rectángulo los atributos restantes. Ejemplo SOCIOS. Relaciones.- Asociaciones entre entidades. Se representan mediante líneas que unen las entidades en cuestión. Cardinalidad en las relaciones, son la cantidad de veces que se puede presentar una relación entre dos entidades, así por ejemplo la relación SOCIO-PRESTAMO es 1:N, significa que un socio puede tener N préstamos. La cardinalidad puede ser 1:N o M:N, este podría ser el caso de una relación LIBROS-AUTORES. El círculo en la línea significa que ese lado de la relación podría ser nulo, es decir que un socio puede no tenga préstamos. Entidad Relación Atributo Características de las entidades y relaciones • • • Atributos Propiedades características que tiene un tipo de entidad o relación. Valores Contenido concreto de los atributos. Dominios Conjunto de los posibles valores de los atributos. Página 2 MODELO DE BASE DE DATOS Existen tres modelos básicos de Bases de Datos: Modelo Jerárquico Modelo en Red Modelo Relacional MODELO RELACIONAL Historia y objetivos del modelo. Codd, (1970), propone un modelo de datos basados en la Teoría de las relaciones, donde los datos se estructuran lógicamente en forma de relaciones (TABLAS), siendo un objetivo fundamental mantener la independencia de la estructura lógica respecto al modelo de almacenamiento y a otras características del tipo físico. Objetivos • • • • • Independencia física: Que el modo en que se almacenan los datos no influya en su manipulación lógica, y por tanto, no sea necesario modificar los programas por cambios en el almacenamiento físico. (Codd concede mucha importancia a este aspecto Independencia de ordenación, independencia de indexación e independencia en criterios de acceso. Independencia Lógica: Que la modificación de objetos en la base de datos no repercuta en los programas y/o usuarios que estén accediendo al subconjunto parcial de la base de datos. Flexibilidad: Poder presentar a cada usuario los datos de la forma que prefiera. Uniformidad: Las estructuras lógicas de datos presentan un estado uniforme. Sencillez. Para conseguir esto Codd introduce el concepto de Relación Tabla como estructura básica del modelo. Todos los datos (Entidades / Interrelaciones) de una base de datos se representan en forma de Tablas cuyo contenido varía en el tiempo. Una tabla, es un conjunto de filas (Misma estructura, cabecera) en la terminología relacional. Surge la Teoría de la Normalización cuyas tres primeras formas normales fueron introducidas por Codd y constituyen un soporte para un diseño de bases de datos relacionales. Tablas Regulares / Uniformes. Deben evitar anomalías. Con respecto a la componente dinámica del modelo se proponen una serie de operadores que se aplican a las relaciones o tablas (Algunos clásicos de la Teoría de conjuntos). Todos ellos forman el Algebra relacional. Estática del Modelo Relacional Es la parte invariante o poco variante en el tiempo, consiste en la definición de la estructura. El elemento básico del modelo relacional es la Tabla (Relación). • • • • • • Se puede distinguir un conjunto de columnas (Atributos), que representan las propiedades de la misma y que están caracterizadas por un nombre. Un conjunto de filas llamadas Tuplas, que son las ocurrencias de la Tabla. El número de filas de la tabla corresponde a la cardinalidad. El número de filas es el Grado (Nº de atributos). Dominios, donde los atributos toman sus valores (Casillas). Una tabla siempre tiene un nombre y en ella es posible distinguir: o Cabecera: Esquema de la tabla. (Define la estructura de la Tabla). o Extensión: Conjunto de Tuplas que varían en el tiempo. Página 3 Tabla Cabecera Columna=Campo Fila= Registro num_socio 1546 1568 1687 nombre_socio Perez, Juan Tolaba, Ernesto Fernández, José Extensión Dominio y Atributo Dominio: Conjunto de valores homogéneos y atómicos, caracterizados por un nombre. Todo dominio debe tener un nombre por el que referirnos a el y un tipo de datos. Un atributo en el papel tiene un determinado dominio en la tabla. En el universo de discurso (la visión del mundo real del diseñador de la base de datos) de una base de datos, está compuesto por un conjunto finito de tablas. Cada atributo toma sus valores de un único dominio y varios atributos pueden tener el mismo dominio. Tabla • • Intensión o esquema de la tabla.- Es la parte definitoria y estática de la tabla. (Cabecera) Extensión, ocurrencia o instancia de la tabla.- conjunto de tuplas, que en un instante determinado satisface el esquema correspondiente. CLAVES • • • • Clave candidata Conjunto no vació de atributos que identifican univoca y mínimamente cada tupla. Clave primaria La que el usuario escoge de las claves candidatas. Claves alternativas Claves candidatas que no han sido escogidas. Clave ajena (foránea) Conjunto de atributos de la tabla cuyos valores han de coincidir con los de la clave primaria de otra tabla. (Clave ajena y primaria debe estar definida sobre los mismos dominios). RESTRICCIONES Inherentes • • • • • No hay dos tuplas iguales. El orden de las tuplas no es significativo. El orden de los atributos no es significativo. Cada atributo solo puede tomar un valor del dominio, no admitiéndose por tanto dos grupos repetitivos. Se debe cumplir la regla de Integridad de entidad ‘ Ningún atributo que forme parte de la clave primaria de una tabla puede tomar un valor desconocido o inexistente’. De usuario Integridad referencial Si una tabla tiene un descriptor que referencia a la clave primaria de otra tabla, entonces todo valor de dicha clave (Clave ajena) debe concordar con los valores de la clave primaria o ser NULO. También se deben definir las acciones a tomar en caso de acciones de modificación y borrado: Página 4 • • • Operación restringida.- Solo se puede borrar una fila de la tabla que tiene clave primaria referenciada si no existen filas con esa clave en la tabla referenciada. Operación con transmisión en cascada.- El borrado o la modificación de una fila de la tabla que contiene la clave primaria lleva consigo la modificación de las tablas cuya clave ajena coincida con la clave primaria modificada. Operación con puesta a nulos.- El borrado o la modificación de una fila de la tabla que contiene la tabla primaria lleva consigo la puesta nulos de los valores de la clave ajena de las filas de la tabla que referencia cuya clave coincida con el valor de la clave primaria de la tabla referenciada. Dinámica del Modelo Relacional Tienen que ver con el contenido de las estructuras. Son las ocurrencias en un momento dado y las operaciones que se realizan sobre ellas. Las operaciones pueden ser del tipo selección y acción. Selección consiste en la localización de ocurrencias (filas) de una determinada entidad (tabla) y la de acción es inserción, borrado o modificación de una o más ocurrencias y se lleva a cabo una vez hecha la selección. DISEÑO DE LA BASE DE DATOS El diseño de la base de datos exige mucha actividad intelectual por parte del diseñador puesto que debe traducir el universo de discurso en la definición de la estructura de la BD. En el modelo relacional el diseño puede realizarse de dos formas: a. Realizar el diseño Modelo E/R y transformarlo al modelo relacional. b. Obtener el modelo relacional directamente de la observación del universo de discurso. a. Transformación del Modelo E/R al Modelo Relacional. Una vez realizado el Modelo E/R, que puede ser con la ayuda una herramienta automática que permite el graficado y las validaciones correspondientes, se puede traducir ese modelo al formato de tablas. En algunos casos esa misma herramienta genera las órdenes que servirán para la definición de la estructura de la base de datos en el SGBD. Existen tres principios que ayudan a la conversión: 1. Toda entidad se transforma en una tabla. 2. Toda interrelación M:N se transforma en una tabla. 3. Toda interrelación del tipo 1:N se traduce en el fenómeno de propagación de clave. b. Obtención del Modelo Relacional directamente. Las tablas obtenidas de esta manera pueden presentar problemas: • • • • Incapacidad para representar ciertos hechos. Redundancia en la información, e incoherencias en la misma. Ambigüedades. Aparición en la base de datos de estados no validos en el mundo real. (anomalías en modificación, inserción, borrado). Ejemplo: ESCRIBE (autor, nacionalidad, cod_libro, titulo, editorial, año) ; Presenta varios problemas: • • Gran cantidad de redundancia La nacionalidad del autor se repite en cada ocurrencia del mismo. Cuando un libro tiene más de un autor la editorial y el año se repiten también. Anomalías de modificación Puede ocurrir que se modifique el nombre de editorial en una fila sin modificarla en el resto que corresponden al mismo libro. Página 5 • • Anomalías de inserción No sería posible la inserción de un autor del que no hubiera ningún libro (cod_libro Clave primaria), tampoco podría haber obras anónimas. La inserción de un libro con más de un autor obligaría a la repetición de tuplas. Anomalías de borrado Si se quiere dar de baja un libro también se perdería información de los autores y viceversa. Si se hubiera seguido la metodología de diseño, no se habría presentado una tabla de este tipo. La realización de un modelo conceptual en ME/R y la transformación al modelo relacional evita estos problemas. Ante cualquier duda de si el modelo es correcto, es preferible la aplicación de un método formal de análisis Teoría de la Normalización. NORMALIZACION - Formas Normales La teoría de normalización consiste en obtener esquemas relacionales que cumplan unas determinadas condiciones y se centra en las determinadas Formas normales. Se dice que una base de datos está en una determinada forma normal si satisface un conjunto determinado de restricciones. Existen 5 formas normales, de las cuales 3 son las más utilizadas: 1ª Forma Normal (1FN). Restricción inherente del modelo relacional. En una tabla no puede haber grupos repetitivos. Otros la definen como la obtención de registros de longitud fija. 2ª Forma Normal (2FN). Una tabla está en 2FN si además de estar en 1FN todos los atributos que no forman parte de ninguna clave candidata suministran información acerca de la clave completa. También conocida como dependencia funcional o la obtención de tablas con clave primaria. 3ª Forma Normal (3FN). Si además de estar en 2FN, los atributos que no forman parte de ninguna clave candidata facilitan información solo acerca de las claves y no acerca de otros atributos. También conocida como la eliminación de dependencias funcionales transitivas. 3ª Forma Normal redefinida (FNBC). Es la 3FN redefinida por Boyce y Codd. Todos los atributos que no forman parte de la clave candidata deben ser información referida a la clave completa y a nada más. Es decir, las claves candidatas deben ser los únicos descriptores sobre los que se facilita información por cualquier otro atributo. Relación entre formas normales. Una tabla esta en 3FN si también lo está en todas las anteriores. Una tabla que está en 1FN no tiene por qué estar en 2FN. El Objetivo es obtener la forma normal mayor posible. Proceso de Normalización. El proceso de normalización consiste en conseguir la mayor forma normal posible comenzando por la 1FN. Evaluando siempre en cada paso, la conveniencia de tener una BD normalizada en concordancia con el espacio de almacenamiento, los tiempos de proceso, los controles de integridad, etc. Ejemplo: La siguiente tabla cumple la 1FN. PRESTAMO (num_socio, nombre_socio, cod_libro, fecha_presentamo, editorial, pais) Claves candidatas: (num_socio, cod_libro) (nombre_socio, cod_libro) Pasando a 2FN: PRESTAMOS1 (num_socio, nombre_socio, cod_libro, fecha_presentamo) Página 6 LIBROS (cod_libro, editorial, pais) Observaciones: PRESTAMOS1 Atributo fecha_prestamos, no forma parte de la clave pero suministra información de claves candidatas. LIBROS Dos atributos no clave suministran información de la clave completa. Pasando a 3FN: PRESTAMOS1 3FN LIBROS pais facilita información a cerca de editorial (No 3FN). LIBROS1 (cod_libro, editorial) EDITORIALES (editorial, pais) Pasarlo a FNBC: FNBC En PRESTAMOS1 nombre_socio y num_socio se repiten por cada libro y prestamo. Nombre_socio se refiere a num_socio y viceversa. (Ninguno de ellos es clave aunque formen parte de ella). Entonces queda : SOCIOS (num_socio, nombre_socio) PRESTAMOS2 (num_socio, cod_libro, fecha_prestamo) Esquema final: LIBROS1 (cod_libro, editorial) EDITORIALES (editorial, pais) SOCIOS (num_socio, nombre_socio) PRESTAMOS2 (num_socio, cod_libro, fecha_prestamo) Concepto de dependencia funcional Las dependencias son propiedades inherentes al contenido semántico de los datos que se han de cumplir para cualquier extensión del esquema de relación y forman parte de las restricciones de usuario del modelo relacional. Las dependencias, muestran interrelaciones existentes entre los atributos del mundo real cuya semántica tratamos de incorporar a nuestra base de datos. Son invariantes en el tiempo. DEFINICIÓN DE LA ESTRUCTURA DE LAS TABLAS La definición de la estructura de las tablas se realiza según el siguiente esquema: Tabla: SOCIOS # Nombre de campo 1 num_socio 2 nombre_socio SGBD o DBMS 3 Tipo de dato Numérico Alfanumérico Tamaño Decimales Clave Principal 5 Sí 35 Página 7 Un SGBD (Sistema de Gestión de Bases de Datos) o DBMD (Data Base Management System) es un software que permite realizar la definición de la estructura de la base de datos y la posterior manipulación de la misma. En la actualidad existen SGBD para utilizar en una PC personal para uso diario por parte de cualquier usuario sin conocimientos avanzados hasta sistemas de Gestión de Grandes Bases de Datos a instalarse en Mainframes o Minicomputadoras. Un ejemplo de un SGBD para PC es el producto de Microsoft llamado ACCESS que se presenta más adelante, otro con un poco más de complejidad es Visual FoxPro 6 también de Microsoft y para PC. Para servidores de bases de datos, es decir un servidor dedicado a soportar una base de datos puede ser ORACLE, INFORMIX, SYBASE, etc. Estos sistemas permiten gestionar bases de datos de gran volumen, hablamos de Gb o Tb de información y están instalados en servidores, llamados servidores de bases de datos. Estos sistemas son muy complejos y necesitan de uno o más DBA (Data Base Administrator) para su administración. Un DBA es una persona con conocimientos profundos acerca del software y de gestión bases de datos, es el responsable de los datos que están almacenados en la base de datos. Entre sus funciones está la de mantener la seguridad e integridad, para ello debe definir los usuarios y sus permisos, encargarse de los backup, etc. En general debe mantener la base de datos funcionando en todo momento. MICROSOFT ACCESS Como ya se dijo, es un producto de Microsoft, permite gestionar una base de datos de unos cuantos Mb de información, según el esquema relacional. Está pensado para usuarios finales, es decir usuarios sin conocimientos de programación. No tiene niveles de seguridad. Los elementos u objetos que contiene son Tablas, Consultas, Formularios, Informes, Páginas, Macros y Módulos, de los cuales nos interesan son los cuatro primeros. Tabla: Una tabla es una colección de datos sobre un tema específico, como libros o socios. La utilización de una tabla diferente para cada tema significa que se almacenan los datos sólo una vez, lo cual hace aumentar la eficacia de la base de datos y reduce errores de entrada de datos. Pueden existir muchas tablas dentro de una base de datos, pudiendo usar tablas diferentes para almacenar información relacionada entre sí. Página 8 Las tablas organizan datos en columnas (denominadas campos) y filas (denominadas registros). Cada registro puede contener diferentes campos y contiene información sobre un ítem específico. Cada campo almacena solo una clase de información determinada por el tipo de dato al que pertenezca. En la vista Diseño de la tabla, puede crear una tabla entera desde el principio, o agregar, eliminar o personalizar los campos en una tabla existente. Un campo común relaciona dos tablas de manera que Microsoft Access puede combinar los datos de las dos tablas para ver, modificar o imprimir. Esta relación debe ser definida durante el diseño y permite especificar los controles de integridad y actualizaciones. Consulta: Se utilizan consultas para ver, modificar y analizar datos de formas diferentes. También pueden utilizarse como el origen de registros para formularios, informes y páginas de acceso a datos. El tipo de consulta más habitual es una consulta de selección. Una consulta de selección recupera datos de una o más tablas utilizando los criterios que especifique y después los muestra en el orden que desee. Las consultas realizan operaciones de selección cuando se aplica criterios como en el ejemplo que selecciona la fecha de hoy, de proyección como es el caso que se tilda en Mostrar cuales campos se van a utilizar, en este caso también se dice proyección cuando se muestran campos calculados en función de los existentes. Cuando en una consulta se utilizan más de una tabla se está realizando la operación de relación, puesto que utiliza la relación definida para hacer la correspondencia entre los datos de una tabla y la otra. Página 9 Existe una operación parecida llamada UNION que realiza la combinación de todos los datos de una tabla con todos los de la otra, pero es muy poco utilizada en bases de datos bien definidas. Formularios: Pueden utilizarse formularios con varios propósitos. El principal es la actualización de la información en la base de datos. La mayor parte de la información de un formulario procede de un origen de registros base. Parte de la información del formulario se almacena en el diseño del mismo. El vínculo entre un formulario y su origen de registros se crea por medio de objetos gráficos denominados controles. El tipo de control más comúnmente utilizado para mostrar y escribir datos es un cuadro de texto. Informes: Un informe es un método eficaz de presentar los datos en formato impreso. Dado que tiene el control sobre el tamaño y el aspecto de todo el informe, puede mostrar la información en la manera que desee verla. La mayor parte de la información de un informe procede de una tabla, consulta o instrucción SQL base, que es el origen de los datos del informe. Parte de la información del informe se almacena en el diseño del mismo. Página 10 CUADRO CON TIPOS DE DATOS EN MICROSOFT ACCESS Tipo de datos Usado para almacenar Texto Datos alfanuméricos (texto números y caracteres especiales). Almacena hasta 255 caracteres. Memo Datos alfanuméricos (texto, números y caracteres especiales). Almacena hasta 2 GB de datos (es el límite de tamaño para todas las bases de datos de Access) si el campo se rellena mediante programación. Si se agregan 2 GB de datos, el funcionamiento de la base de datos será lento. Limitaciones o restricciones Si se proporcionan los datos manualmente, se pueden proporcionar y ver un máximo de 65.535 caracteres en el campo de tabla y en todos los controles enlazados al campo. Número Datos numéricos Los campos de tipo Número usan un valor de Tamaño del campo que controla el tamaño del valor que el campo puede contener. El tamaño del campo se puede establecer en 1, 2, 4, 8 ó 16 bytes: Configuración de Tamaño del campo Descripción Byte Entero de 1 byte que contiene valores de 0 a 255. Entero Entero de 2 bytes que contiene valores de 32.768 a +32.767. Entero largo Entero de 4 bytes que contiene valores de 2.147.483.648 a 2.147.483.647. Simple Entero de 4 bytes que contiene valores de 38 38 3,4 x 10 a +3,4 x 10 y hasta 7 dígitos significativos. Página 11 Doble Número de punto flotante de 8 bytes que 308 contiene valores de -1,797 x 10 a +1,797 x 308 10 y hasta 15 dígitos significativos. Id. de réplica Identificador global único (GUID) de 16 bytes. Los identificadores GUID aleatoriamente creados son suficientemente largos de modo que no es probable que se superpongan. Se usan para diversas aplicaciones, como el seguimiento de mercancías. Decimal Entero de 12 bytes con una precisión decimal definida que puede contener valores 28 28 a +10 . La precisión de -10 predeterminada es 0. La escala predeterminada (número de posiciones decimales que se muestran) es 18. El valor máximo de la escala es 28. Además de configurar el tamaño de los campos y otras propiedades, se pueden aplicar a los datos numéricos formatos de presentación predefinidos y personalizados así como máscaras de entrada. Fecha/Hora Fechas y horas Access almacena todas las fechas como enteros de precisión doble de 8 bytes. Moneda Datos monetarios Almacena los datos como números de 8 bytes con una precisión de cuatro posiciones decimales. Use este tipo de datos para almacenar datos financieros y cuando Access no debe redondear los valores. Autonumérico Valores únicos creados por Access al crearse un registro nuevo. Almacena los datos como valores de 4 bytes; suele usarse en claves principales. Sí/No Datos booleanos (verdaderos o falsos). Access usa 1 para todos los valores Sí y 0 para todos los valores No. Objeto OLE Imágenes, documentos, gráficos y otros objetos de programas de Office y programas basados en Windows. Almacena hasta 2 GB de datos (el límite de tamaño para todas las bases de datos de Access). Recuerde que si se agregan 2 GB de datos, el funcionamiento de la base de datos será lento. Los campos de tipo Objeto OLE crean imágenes de mapa de bits del documento original u otro objeto y, a continuación, muestran ese mapa de bits en los campos de tabla y los controles de formulario o informe de la base de datos. Hipervínculo Direcciones Web Almacena hasta 1 gigabyte de datos. Se pueden almacenar vínculos a sitios Web, sitios o archivos ubicados en una intranet o red local (LAN), y sitios o archivos ubicados en un equipo. Datos adjuntos Cualquier tipo de archivo admitido. Se pueden adjuntar a los registros de una base de datos imágenes, archivos de hojas de cálculo, documentos, gráficos y otros tipos de archivo compatibles, de manera muy similar a como se adjuntan archivos a los mensajes de correo electrónico. También se pueden ver y editar los archivos adjuntos, dependiendo de cómo el diseñador de la base de datos configure el campo Datos adjuntos. Los campos de tipo Datos adjuntos proporcionan mayor flexibilidad que los campos de tipo Objeto OLE y usan el espacio de almacenamiento de manera más eficaz ya que no crean una imagen de mapa de bits del archivo original. Página 12