UNIDAD 2 Arquitectura del gestor

2.1. Características del DBMS

Los sistemas de administración de bases de datos son usados para:

 

Ø  Permitir a los usuarios acceder y manipular la base de datos proveyendo métodos para construir sistemas de procesamiento de datos para aplicaciones que requieran acceso a los datos.

Ø  Proveer a los administradores las herramientas que les permitan ejecutar tareas de mantenimiento y administración de los datos.

 

Algunas de sus características son:

 

Control de la redundancia de datos

 

Este consiste en lograr una mínima cantidad de espacio de almacenamiento para almacenar los datos evitando la duplicación de la información. De esta manera se logran ahorros en el tiempo de procesamiento de la información, se tendrán menos inconsistencias, menores costos operativos y hará el mantenimiento más fácil.

 

Compartimiento de datos

 

Una de las principales características de las bases de datos, es que los datos pueden ser compartidos entre muchos usuarios simultáneamente, proveyendo, de esta manera, máxima eficiencia.

 

Mantenimiento de la integridad

 

La integridad de los datos es la que garantiza la precisión o exactitud de la información contenida en una base de datos. Los datos interrelacionados deben siempre representar información correcta a los usuarios.

Soporte para control de transacciones y recuperación de fallas.

Se conoce como transacción toda operación que se haga sobre la base de datos. Las transacciones deben por lo tanto ser controladas de manera que no alteren la integridad de la base de datos. La recuperación de fallas tiene que ver con la capacidad de un sistema DBMS de recuperar la información que se haya perdido durante una falla en el software o en el hardware.

Independencia de los datos.

En las aplicaciones basadas en archivos, el programa de aplicación debe conocer tanto la organización de los datos como las técnicas que el permiten acceder a los datos. En los sistemas DBMS los programas de aplicación no necesitan conocer la organización de los datos en el disco duro. Este totalmente independiente de ello.

Seguridad

La disponibilidad de los datos puede ser restringida a ciertos usuarios. Según los privilegios que posea cada usuario de la base de datos, podrá acceder a mayor información que otros.

Velocidad

Los sistemas DBMS modernos poseen altas velocidades de respuesta y proceso.

Independencia del hardware

La mayoría de los sistemas DBMS están disponibles para ser instalados en múltiples plataformas de hardware.

Los sistemas de bases de datos relacionales RDBMS (RelationalDatabase Management System, por sus siglas en Inglés) tales como Oracle, MySQL, SQL Server, PostgreSQL, Informix, entre otros, le permiten ejecutar las tareas que se mencionan a continuación, de una forma entendible y razonablemente sencilla:

Ø  Le permiten ingresar datos al sistema.

Ø  Le permiten almacenar los datos.

Ø  Le permiten recuperar los datos y trabajar con ellos.

Ø  Le proveen herramientas para capturar, editar y manipular datos.

Ø  Le permiten aplicar seguridad.

Ø  Le permiten crear reportes e informes con los datos.

 

2.1.1 Estructura de memoria y procesos de la instancia

Ø  La memoria se puede estructurar en las siguientes partes:

 

Ø  Área Global del sistema (SGA), la cual se comparte entre todos los servidores y los procesos en segundo plano.

Ø  Áreas globales de programas (PGA), que es privada para cada servidor y proceso en segundo planos; a cada proceso se asigna un PGA.

Ø  Área de Ordenaciones (SortAreas).

Ø  Memoria Virtual

Ø  j    Area de codigo de software.

 

Instancia de una Base de Datos

Cada instancia está asociada a una base de datos. Cuando se inicia una base de datos en un servidor (independientemente del tipo de computadora), se le asigna un área de memoria (SGA) y lanza uno o más procesos. A la combinación del SGA y de los procesos es lo que se llama instancia. La memoria y los procesos de una instancia gestionan los datos de la base de datos asociada de forma eficiente y sirven a uno o varios usuarios.

 

 

 

Cuando se inicia una instancia El DBMS monta la base de datos, es decir, asocia dicha instancia a su base de datos correspondiente. En un misma computadora pueden ejecutarse varias instancias simultáneamente, accediendo cada una a su propia base de datos física.

Únicamente el administrador de la base de datos puede iniciar una instancia y abrir una base de datos. Si una base de datos está abierta, entonces el administrador puede cerrarla y, cuando esto ocurre, los usuarios no pueden acceder a la información que contiene.

 

 

2.1.2 Estructuras físicas de la base de datos

 

En una base de datos almacenamos información relevante para nuestro negocio u organización y desde el punto de vista físico, la base de datos está conformada por dos tipos de archivos:

Ø  Archivos de datos: contiene los datos de la base de datos internamente, está compuesto por páginas enumeradas secuencialmente que representa la unidad mínima de almacenamiento. Cada página tiene un tamaño de 8kb de información. Existen diferentes tipos de páginas, a tener en cuenta:

Páginas de datos: es el tipo principal de páginas y son las que almacenan los registros de datos.

Páginas de espacio libre (PFS Page Free Space): almacenan información sobre la ubicación y el tamaño del espacio libre.

Paginas GAM and SGAM: utilizadas para ubicar extensiones.

Páginas de Mapa de Ubicaciones de índices (IAM – IndexAllocationMap): contiene información sobre el almacenamiento de páginas de una tabla o índice en particular.

Páginas Índices: Utilizada para almacenar registros de índices.

 

Ø  Archivo de Registro de Transacciones: El propósito principal del registro de transacciones es la recuperación de datos a un momento en el tiempo o complementar una restauración de copia de respaldo completa (full backup). El registro de transacciones no contiene páginas, sino entradas con todos los cambios realizados en la base de datos, como son las modificaciones de datos, modificaciones de la base de datos y eventos de copia de seguridad y restauración. El acceso a datos es secuencial, ya que el registro de transacciones se actualiza en el mismo orden cronológico en el que se hacen las modificaciones.

Este archivo no puede ser leído por herramientas de usuario de SQL auqnue existen herramientas de terceros que leen este archivo para recuperar los cambios efectuados. Dependiendo de la versión el registro de transacciones se utiliza para otros propósitos como por ejemplo bases de datos espejo (mirror) y transporte remoto de transacciones (log shipping).

 

Para muchos de los administradores de bases de datos, la imagen anterior representa la parte lógica y la parte física, donde:

 

Data File:

 

Los datafiles son los archivos físicos en los que se almacenan los objetos que forman parte de un tablespace. Un datafile pertenece solamente a un tablespace y a una instancia de base de datos. Un tablespace puede estar formado por uno o varios datafiles. Cuando se crea un datafile, se debe indicar su nombre, su ubicación o directorio, el tamaño que va a tener y el tablespace al que va a pertenecer. Además, al crearlos, ocupan ya ese espacio aunque se encuentran totalmente vacíos, es decir, Oracle reserva el espacio para poder ir llenándolo poco a poco con posterioridad. Por supuesto, si no hay sitio suficiente para crear un archivo físico del tamaño indicado, se producirá un error y no se creará dicho archivo.

 

Cuando se van creando objetos en un tablespace, éstos físicamente se van almacenando en los datafiles asignados a dicho tablespace, es decir, cuando creamos una tabla y vamos insertando datos en ella, estos datos realmente se reparten por los archivos físicos o datafiles que forman parte del tablespace. No se puede controlar en qué archivo físico se almacenan los datos de un tablespace. Si un tablespace está formado por 2 datafiles y tenemos una tabla en ese tablespace, a medida que vamos insertando filas éstas se almacenarán en cualquiera de los dos datafiles indistintamente, es decir, unas pueden estar en un datafile y otras en otro.

 

El espacio total disponible en un tablespace es lógicamente la suma de los tamaños que ocupan los archivos físicos o datafiles que lo forman. Como hemos indicado estos datafiles, al crearlos, están totalmente vacíos, simplemente es un espacio reservado y formateado por Oracle para su uso. A medida que se van creando objetos en ellos como tablas, índices, etc. y se van insertando registros en estas tablas, los datafiles se van llenando o, lo que es lo mismo, el tablespace se va llenando.

 

Tienen las siguientes características:

 

Ø   Un archivo sólo puede estar asociado con una base de datos.

Ø   Los archivos de datos tienen atributos que permiten reservar automáticamente para ellos extensiones cuando se acaba el espacio.

Ø   Uno o más archivos de datos forman una unidad lógica de almacenamiento llamada tablespace.

 

Os Block:

 

Conocidos como Disk Block, estos mapean a los data blocks. A la hora de crear una nueva base de datos se debe indicar cuántos bloques de sistema operativo formarán un bloque de datos.

 

 

2.1.3 Requerimientos para instalación.

Antes de instalar cualquier SGBD es necesario conocer los requerimientos de hardware y software, el posible software a desinstalar previamente, verificar el registro de Windows y el entorno del sistema, así como otras características de configuración especializadas como pueden ser la reconfiguración de los servicios TCP/IP y la modificación de los tipos archivos HTML para los diversos navegadores.

Se presenta a continuación una serie de requerimientos mínimos de hardware y software para instalar oracle 11g Express y MySQL estándar versión 5.1. en Windows Seven y Ubuntu 10.

 

Requerimiento

Oracle

MySQL

RAM

512 MB

512 MB

Memoria virtual1

1024 MB

1024 MB

Espacio disco duro

1.5 GB

1 GB

Tamaño máximo de la base de datos

4 GB

Sin limite

Sistema Operativo: Windows Server, Windows Seven, Linux, Unix

  

 

Arquitectura del Sistema 32/64-bit

 

 

Protocolo de red TCP/IP

   

Protocolo de red TCP/IP con SSL

 

 

 

 

1. La regla general para determinar el tamaño de la memoria virtual depende del tamaño de memoria RAM instalada. Si su sistema tiene menos de 4 GB de RAM por lo general el espacio de intercambio debe ser de al menos dos veces este tamaño. Si usted tiene más de 8 GB de memoria RAM instalada puede considerar usar el mismo tamaño como espacio de intercambio. Cuanta más memoria RAM tenga instalada, es menos probable usar el espacio de intercambio, a menos que tenga un proceso inadecuado.

2.1.4 Instalación del software de BD en modo transaccional

Una base de datos en modo transaccional significa que la BD será capaz de que las operaciones de inserción y actualización se hagan dentro de una transacción, es un componente que procesa información descomponiéndola de forma unitaria en operaciones indivisibles, llamadas transacciones, esto quiere decir que todas las operaciones se realizan o no, si sucede algún error en la operación se omite todo el proceso de modificación de la base de datos, si no sucede ningún error se hacen toda la operación con éxito.

 

Una transacción es un conjunto de líneas de un programa que llevan insert o update o delete. Todo aquél software que tiene un log de transacciones (que es la "bitácora" que permite hacer operaciones de commit o rollback), propiamente es un software de BD; aquél que no lo tiene (v.g. D-Base), propiamente no lo es. Todo software de base de datos es transaccional; si el software de la BD no es "transaccional", en realidad NO es un "software" de BD; en todo caso, es un software que emula el funcionamiento de un verdadero software de BD. Cada transacción debe finalizar de forma correcta o incorrecta como una unidad completa. No puede acabar en un estado intermedio.

Se usan las siguientes métodos:

 

Ø  Begin TRans para iniciar la transacción

Ø  CommitTrans para efectuar los cambios con éxito

Ø  RollbackTrans para deshacer los cambios

Y depende que base de datos uses para efectuar las operaciones pero, es la misma teoría para cualquier BD.

 

Una vez que se sabe la forma de ingresar comandos, es el momento de acceder a una base de datos.

 

Suponga que en su hogar posee varias mascotas y desea registrar distintos tipos de información sobre ellas. Puede hacerlo si crea tablas para almacenar sus datos e introduce en ellas la información deseada. Entonces, podrá responder una variedad de preguntas acerca de sus mascotas recuperando datos desde las tablas. Los pasos serían:

 

Ø  Crear una base de datos

Ø  Crear una tabla

Ø  Introducir datos en la tabla

Ø  Recuperar datos desde la tabla de varias maneras

Ø  Emplear múltiples tablas

 

La base de datos menagerie (palabra inglesa que en español significa "colección de animales") se ha hecho deliberadamente simple, pero no es difícil imaginar situaciones del mundo real donde podría usarse un tipo similar de base de datos. Por ejemplo, para un granjero que desee hacer el seguimiento de su hacienda, o para los registros de los pacientes de un veterinario.

Una vez instalado MySQL (disponible en el sitio web de MySQL en formato TAR:

 

 

2.1.5 Variables de Ambiente y archivos importantes para instalación.

Para instalar MySQL como primer instancia el archivo primordial es el que se descarga de la Web de MySQL. El proceso para instalar MySQL desde un archivo ZIP es el siguiente:

 

 

1. Extraer el contenido del archivo dentro del directorio de instalación deseado.

2. Crear un archivo de opciones.

3. Elegir un tipo de servidor MySQL

4. Iniciar el servidor MySQL.

5. Establecer la seguridad de las cuentas de usuario por defecto.

 

 

 

 

2.1.6 Procedimiento general de instalación

Oracle Database XE es una gran base de datos para:

 

Ø  Desarrolladores que trabajan en PHP, Java, .NET, XML, y Open Sourceapplications

Ø  DBAs que necesitan desarollar libremente

Ø  Vendedores de Software y hardware que necesitan distribuir sin cargos

Ø  Instituciones educativas y estudiantes que cursan materias relacionados con base de datos

 

Oracle es líder en bases de datos. Con Oracle XE, es posible desarrollar y desplegar aplicaciones potentes, actualizar sin costo y generar complejas migraciones.

 

Oracle Express Edition se instala en una máquina con cualquier número de procesadores, solo puede contener una base de datos y direccionar un máximo de 4GB de datos y un máximo de 1GB RAM.

 

Oracle Database XE, usa una interface basada en browser (Navegador) para:

 

Ø  Administrar la base de datos

Ø  Crear tablas, vistas, y otros objetos de base de datos

Ø  Importar, exportar, y ver tablas de datos

Ø  Ejecutar consultas y scripts SQL

Ø  Generar reportes

 

Oracle Database XE incluye Oracle Application Express release 2.1, un ambiente de desarrollo gráfico para crear aplicaciones Web con base de datos. Oracle Database XE es una versión reducida de Oracle con las misma características y potencialidad de Oracle Database. Es necesario destacar que no soporta todos los tipos de datos de Oracle Database XE.

 

Oracle Database XE incluye las siguientes utilidades:

 

  Línea de comandos SQL (SQL*Plus), para ejecutar sentencias SQL y comandos PL/SQL y ejecutar scripts

         SQL*Loader, para insertar datos en la base de datos

         Utilidades para importar, exportar y volcar la base de datos

 

 

Requerimientos del sistema para Oracle Database XE Server y Oracle Database XE Client.

 

Requerimiento 

Valor

Arquitectura del sistema

Intel x86 (desde Windows 2000 hasta seven) o Linux x86 (Debian, Mandriva, Novell, Red Hat y Ubuntu )

Protocolo de red

TCP/IP

Espacio en disco

Servidor : 1.6 gigabytes mínimo

Cliente: 75 megabytes

RAM

256 megabytes mínimo, 512 megabytes recomendado

Estos puertos son usados por defecto por Oracle Database XE

 

2.1.7 Procedimiento para configuración de un DBMS.

Para configurar nuestro DBMS podemos acceder a las siguientes pantallas, para Oracle o MySQL.

 

El esquema de una base de datos (en inglés, DatabaseSchema) describe la estructura de una Base de datos, en un lenguaje formal soportado por un Sistema administrador de Base de datos (DBMS). En una Base de datos Relacional, el Esquema define sus tablas, sus campos en cada tabla y las relaciones entre cada campo y cada tabla.

 

Oracle generalmente asocia un 'username' como esquemas en este caso SYSTEM y HR (Recursos humanos).

 

Por otro lado MySQL presenta dos esquemas information_schema y MySQL ambos guardan información sobre privilegios y procedimientos del gestor y no deben ser elimandos.

 

 

 

 

2.1.8 Comandos generales de alta y baja del DBMS

 

Una tabla es un sistema de elementos de datos (atributo - valores) que se organizan que usando un modelo vertical - columnas (que son identificados por su nombre)- y horizontal filas. Una tabla tiene un número específico de columnas, pero puede tener cualquier número de filas. Cada fila es identificada por los valores que aparecen en un subconjunto particular de la columna que se ha identificado por una llave primaria.

 

Una tabla de una base de datos es similar en apariencia a una hoja de cálculo, en cuanto a que los datos se almacenan en filas y columnas. Como consecuencia, normalmente es bastante fácil importar una hoja de cálculo en una tabla de una base de datos. La principal diferencia entre almacenar los datos en una hoja de cálculo y hacerlo en una base de datos es la forma de organizarse los datos.

 

Por lo tanto, la creación de las tablas en el proceso de programación en Oracle juegan un papel muy importante. En el momento de crear las tablas se definen características a dos niveles: Tabla y Columna, como se muestra a continuación:

 

A nivel de tabla: Refieren a una o a varias columnas, donde cada columna se define individualmente.

 

Nombre:  

Nombre de la tabla puede ser de 1 a 30 caracteres. La tabla tiene como propietario al usuario que las crea. Por ejemplo EQUIPO.

Hay que tener en cuenta también ciertas restricciones con los nombres de las tablas: longitud máxima de 30 caracteres, no puede haber nombres de tabla duplicados, deben comenzar con un carácter alfabético, permitir caracteres alfanuméricos y el guión bajo '_', y Oracle no distingue entre mayúsculas y minúsculas.

Propietario: 

La tabla tiene como propietario al usuario que las crea En nuestro caso somos el usuario ALUMNO. Otro usuario que desee usar nuestras tablas debe tener autorización para ello y hacer referencia a la tabla como ALUMNO.EQUIPO(propietario.tabla)

Cantidad de Columnas:

Una tabla puede tener un máximo de 254 columnas.

 

A nivel de Columna el nombre de la columna puede tener un máximo de 30 caracteres.

 

En Oracle podemos implementar diversos tipos de tablas. A continuación se presenta una recopilación no exhaustiva de ellas.

 

 

 

 

Tipo Tabla

Descripción

Regular

(heap)

Son el mecanismo de almacenamiento de los datos en una base de datos Oracle. Contienen un conjunto fijo de columnas. Las columnas de una tabla describen los atributos de la entidad que se representa con la tabla. Cada columna tiene un nombre y características específicas: tipo de dato y longitud, restricciones, etc.

Clustered

Un cluester proporciona un método opcional de almacenar datos de tabla. Un cluster está compuesto de un grupo de tablas que comparten los mismos bloques de datos. Las tablas son agrupadas mediante columnas comunes.

Index

Aquí una tabla es almacenada en la estructura de un índice. Esto impone orden físico a las filas por si mismas. A diferencia de un heap, donde los datos son almacenados en donde caben, en una tabla IOT (Tabla Organizada por Indices) los datos son almacenados en el orden de la clave primaria.

Particionadas

Es un esquema de organización de los datos con el cual podemos dividirla en múltiples objetos de almacenamientos llamados particiones de datos o rangos, dependiendo los valores puede ser dividido en uno o más columnas de la tabla. Cada particiones de datos es almacenado separadamente. Estos objetos almacenados pueden estar en diferentes tablespaces, en el mismo o en una combinación de ambos.

Temporales

Son tablas cuyos datos permanecerán en el sistema sólo durante el tiempo que dure la transacción o sesión involucrada. No obstante, al igual que para las tablas permanentes, la definición de las tablas temporales se almacena en las tablas del sistema.

 

 

La sintaxis del comando que permite crear un tabla es la siguiente

 

 

Del examen de la sintaxis de la sentencia CreateTable se pueden concluir que necesitamos conocer los distintos tipos de columna y las distintas restricciones que se pueden imponer al contenido de las columnas.

Existen varios tipos de datos en SQL. De esta manera, cada columna puede albergar una información de naturaleza distinta. Los tipos de datos más comunes y sus características en Oracle Express (10 Y 11g) se resumen en la siguiente tabla. Las versiones de Oracle comercial soportan una gama mucho más amplia de tipos de datos. 

 

Tipo de Dato

Descripción

BLOB

Contiene datos binarios con un tamaño máximo de 4 gigabytes. Los datos binarios nos van a permitir guardar en la base de datos archivos, imagenes, sonidos, etc ...

Casi siempre es preferible guardar la ruta del archivo en la base de datos en lugar del propio archivo en modo binario, pero existen ciertas circunstancias en las que no nos queda otra solución.

BINARY_DOUBLE

Presición doble

BINARY_FLOAT

Presición simple

CLOB

Un tipo de datos CLOB de Oracle contiene datos de caracteres basados en el juego de caracteres predeterminados del servidor. Su tamaño máximo es de 4 gigabytes. Se asigna a cadena.


Use la siguiente expresión para una consulta de un campo CLOB

 

SELECT DBMS_LOB.substr(campo, DBMS_LOB.getlength(campo),1)

FROM tablaprueba;

CHAR

Almacena datos de tipo carácter alfanumérico de longitud fija, con un tamaño máximo de 2000. caracteres

DATE

Almacena fechas desde el 1-Ene-4712 AC hasta el 31-Dic-4712 DC.

NUMBER(dig [, dec])

Datos numéricos de n dígitos, de los cuales dec son decimales. El tamaño máximo es de 38 dígitos.

NVARCHAR2

Almacena un valor alfanumérico de longitud variable en caracteres Unicode con las mismas restricciones de varchar.

TIMESTAMP

Fecha y hora (incluidos los segundos), con un tamaño que abarca desde 7 a 11 bytes.

VARCHAR2(tamaño)

Guarda datos de tipo carácter alfanumérico de longitud variable, con un tamaño máximo de 4,000 caracteres.

 

Ejemplo: Considere la siguiente tabla de datos correspondientes a los campeones de Fórmula 1 (1950 - 2012) y sus escuderías. Y su traducción a sentencias Oracle.

 

Año

Campeón

Escudería

2012

-

-

2011

Sebastian Vettel

Red Bull Racing

2010

Sebastian Vettel

Red Bull Racing

2009

JensonButton

Brawn GP

2008

Lewis Hamilton

McLaren

2007

Kimi Raikkonen

Ferrari

2006

Fernando Alonso

Renault

2005

Fernando Alonso

Renault

2004

Michael Schumacher

Ferrari

2003

Michael Schumacher

Ferrari

2002

Michael Schumacher

Ferrari

2001

Michael Schumacher

Ferrari

2000

Michael Schumacher

Ferrari

 

CREATE TABLE f1 ( yearINTEGER PRIMARY KEY,campeonCHAR(30),

escuderiaCHAR(20) );


Ejemplo: Estados, capitales, densidad de población y superficie de la Republica Mexicana

CREATE TABLE estados (idEstadoINTEGER PRIMARY KEY,nombreEstadoCHAR(25) NOT NULL,capitalCHAR(25) NOT NULL,densidadINTEGER NOT NULL,poblacionINTEGER NOT NULL

);

 

 

Tablas Temporales

 

Oracle permite la creación de tablas temporales para mantener datos propios y exclusivos a una sesión Oracle determinada. Estos datos permanecerán en el sistema sólo durante el tiempo que dure la transacción o sesión involucrada. No obstante, al igual que para las tablas permanentes, la definición de las tablas temporales se almacena en las tablas del sistema.

 

La siguiente sintaxis permite crear una tabla temporal personal para cada sesion. Eso significa que los datos no se comparten entre sesiones y se eliminan al final de la misma.

 

CREATEGLOBAL TEMPORARYTABLE[ schema. ]table (
nombreColumnatipoDato [DEFAULT expresión] [NOT NULL],
 [,nombre_columnatipo_dato [DEFAULT expresión]

 [restricción_columna] ... |restricción_tabla];ON COMMIT{ DELETE| PRESERVE } ROWS         [ physical_properties ]

 

Con la opcion ON COMMIT DELETE ROWS se borran los datos cada vez que se hace COMMIT en la sesion.

Con la opcion ON PRESERVE DELETE ROWS los datos no se borran hasta el final de la sesion.

 

Sus ventajas son varias, la información contenida en ella esta solo disponible para la sesión actual, cualquier inserción, borrado, actualización solo se refleja en la sesión activa.

 

Muchas funcionalidades de cualquier tabla normal se mantienen en ella, como triggers a nivel tabla, vistas, indices, exportar e importar (claro solo la definición de la tabla).

 

No es posible declarar llaves foráneas en una tabla temporal.

 

 

(DROP) Eliminación

 

Cuando una tabla ya no es útil y no vamos a volver a necesitarla debe ser borrada. Esta operación se puede realizar con el comando DROP TABLE.

 

DROP TABLE nombre_tabla [CASCADE CONSTRAINTS][PURGE]

 

Se borra la tabla de la base de datos, borrando toda la información contenida en la tabla, es decir, todas las filas. También se borrará toda la información que sobre la tabla existiera en el diccionario.

 

Si alguna columna de la tabla a borrar sirve como clave ajena de alguna tabla detalle, impide la eliminación de la tabla, ya que existe una restricción que requiere de la existencia de la tabla maestra. Esto se puede areglar colocando la sentencia CASCADE CONSTRAINTS.

 

Esto produce que las restricciones de la tabla detalle se borren antes de borrar la tabla maestra.PURGE evita que los objetos borrados se vayan a la papelera

 

La siguiente sentencia produce la eliminación de la tabla BORRAME.

https://u.jimdo.com/www23/o/s44bcc3f8bacc8e1d/img/ic4099cbf5c15e296/1357516249/std/image.jpg

 

Modificación

 

Oracle permite modificar las restricciones definidas para una tabla. Esto puede llevar a “inconsistencia” de los datos ya introducidos en la base de datos. Por ello, Oracle tiene definidos mecanismos para modificación de los datos ya existentes.

 

Esta operación se puede realizar con el comando ALTER TABLE.

 

 

ALTER TABLE [esquema.]tabla
clausula_constraint [,…]
[ENABLE clausula_activa | DISABLE clausula_disable]
[{ENABLE|DISABLE} TABLE LOCK]
[{ENABLE|DISABLE} ALL TRIGGERS];

 

Hay que tener en cuenta varios puntos:

 

Ø  No es posible disminuir el tamaño de la calumna, si esta contiene datos

Ø  En modificaciones, todos los datos tanto nuevos como viejos deben de ser compatibles o la tabla debe de estar vacia.

Ø  La opcion ADD NOT NULL solo sera posible si la tabla esta vacia

Ø  La opcion MODIFI NOT NULL solo se podramodificazr siempre y cuando 

Ø  no se tenga un valor nulo o este vacia la calumna en cuestion.

 

Considere el ejemplo Propietario - Automóvil, bajo el criterio de hacienda del Gobierno del Estado de Veracruz, México. Modificaremos el ejemplo para añadir el atributo color.

 

https://u.jimdo.com/www23/o/s44bcc3f8bacc8e1d/img/i9ab42f686f5fad3b/1357516927/std/image.jpg

 

Es factible modificar una tabla añadiendo o eliminando restricciones, en este caso para el ejemplo anterior el comando a utilizar será

 

ALTER TABLE tabla {ADD | DROP} CONSTRAINT restricción;

 

ALTER TABLE automovil DROP CONSTRAINT FK_Propietario;

ALTER TABLEautomovilADD

CONSTRAINTFK_PropietarioFOREIGN KEY (idPropietario)

REFERENCES propietario (idPropietario)

ON DELETE CASCADE;

 

 

El cual permitirá el borrado en cascada.

Ahora veremos los comandos en:

 

MySQL

 

MySQL soporta varios motores de almacenamiento que tratan con distintos tipos de tabla. Los motores de almacenamiento de MySQL incluyen algunos que tratan con tablas transaccionales y otros que no lo hacen:

         MyISAM trata tablas no transaccionales. Proporciona almacenamiento y recuperación de datos rápida, así como posibilidad de búsquedas fulltext. MyISAM se soporta en todas las configuraciones MySQL, y es el motor de almacenamiento por defecto a no ser que tenga una configuración distinta a la que viene por defecto con MySQL.

El motor de almacenamiento MEMORY proporciona tablas en memoria.El motor de almacenamientoMERGE permite una colección de tablas MyISAM idénticas ser tratadas como una simple tabla. Como MyISAM, los motores de almacenamiento MEMORY y MERGE tratan tablas no transaccionales y ambos se incluyen en MySQL por defecto.

Nota: El motor de almacenamiento MEMORY anteriormente se conocía como HEAP.

         Los motores de almacenamiento InnoDB y BDB proporcionan tablas transaccionales. BDB se incluye en la distribución binaria MySQL-Max en aquellos sistemas operativos que la soportan.InnoDB también se incluye por defecto en todas las distribuciones binarias de MySQL5.0 . En distribuciones fuente, puede activar o desactivar estos motores de almacenamiento configurando MySQL a su gusto.

         El motor de almacenamiento EXAMPLE es un motor de almacenamiento 'tonto' que no hace nada. Puede crear tablas con este motor, pero no puede almacenar datos ni recuperarlos. El objetivo es que sirva como ejemplo en el código MySQL para ilustrar cómo escribir un motor de almacenamiento. Como tal, su interés primario es para desarrolladores.

         NDB Cluster es el motor de almacenamiento usado por MySQLCluster para implementar tablas que se particionan en varias máquinas. Está disponible en distribuciones binarias MySQL-Max 5.0. Este motor de almacenamiento está disponible para linux, Solaris, y Mac OS X. Los autores mencionan que se añnadirá soporte para este motor de almacenamiento en otras plataformas, incluyendo Windows en próximas versiones.

         El motor de almacenamiento ARCHIVE se usa para guardar grandes cantidades de datos sin índices con una huella muy pequeña.

         El motor de almacenamiento CSV guarda datos en archivos de texto usando formato de valores separados por comas.

         El motor de almacenamiento FEDERATED se añadió en MySQL 5.0.3. Este motor guarda datos en una base de datos remota. En esta versión sólo funciona con MySQL a través de la API MySQL C Client. En futuras versiones, será capaz de conectar con otras fuentes de datos usando otros drivers o métodos de conexión clientes.

 

 

La versión 5 de MySQL crea por defecto tablas innoDB que permiten el manejo de integridad referencial, transacciones. Al igual que las tablas regulares de oracle. Para saber si el gestor de base de datos de MySQL que tenemos las soporta es necesario ejecutar la siguiente sentencia.

 

SHOW VARIABLES liKE '%innodb%';

 

Ejecutar

 

Si nuestro gestor soporta por defecto las tablas innodb las sentencias para crear las tablas previamente mostradas serán exactamente igual a las de oracle. En caso contrario se muestra la sintaxis correspondiente

 

CREATE TABLE f1 ( yearINTEGER PRIMARY KEY,campeonCHAR(30),

escuderiaCHAR(20) ) ENGINE = InnoDB;


Ejemplo: Estados, capitales, densidad de población y superficie de la Republica Mexicana

CREATE TABLE estados (idEstadoINTEGER PRIMARY KEY,nombreEstadoCHAR(25) NOT NULL,capitalCHAR(25) NOT NULL,densidadINTEGER NOT NULL,poblacionINTEGER NOT NULL) ENGINE = InnoDB;

 

 

Comando Describe

 

MySQL proporciona este comando que resulta útil para conocer la estructura de una tabla, las columnas que la forman y su tipo y restricciones. La sintásis es la siguiente DESCRIBE nombreTabla.

 

DESCRIBE f1;

Ejecutar

 

Comando SHOW TABLES y SHOW CREATE TABLE

 

El comando SHOW TABLES muestra las tablas dentro de una base de datos y SHOW CREATE TABLES muestra la estructura de creación de la tabla.

 

Descargar

Ejecutar

 

Tablas temporales

 

Las tablas temporales solo existen mientras la sesión está viva . Si se corre este código en un script de PHP ( Cualquier otro lenguaje), la tabla temporal se destruirá automáticamente al termino de la ejecución de la página. Si no específica MEMORY, la tabla se guardará por defecto en el disco.

 

CREATE TEMPORARY TABLE temporal (

ifeINTEGER(13) PRIMARY KEY,

nombreCHAR(30) NOT NULL UNIQUE

);

 

      Este tipo de tabla solo puede ser usada por el usuario que la crea.

      Si creamos una tabla que tiene el mismo nombre que una existente en la base de datos, la que existe quedará oculta y trabajaremos sobre la temporal.

 

Tablas Memory( Head )

      Se almacenan en memoria

      Una tabla head no puede tener más de 1600 campos

      Las tablas MEMORY usan una longitud de registro fija.

      MEMORY no soporta columnas BLOB o TEXT.

      MEMORY en MySQL 5.0 incluye soporte para columnas AUTO_INCREMENT e índices en columnas que contengan valores NULL.

      Las tablas MEMORY se comparten entre todos los clientes (como cualquier otra tabla no-TEMPORARY).

 

 

CREATE TEMPORARY TABLE temporal (

ifeINTEGER(13) PRIMARY KEY,

nombreCHAR(30) NOT NULL UNIQUE

) ENGINE = MEMORY;

 

Modificación

 

Esta operación se puede realizar con el comando ALTER TABLE. Para usar ALTER TABLE, necesita permisos ALTER, INSERT y CREATE para la tabla. La sintaxis para MySQL es

 

ALTER [IGNORE] TABLEtbl_name

alter_specification [, alter_specification] ...;

 

alter_specification:

ADD [COLUMN] column_definition [FIRST | AFTERcol_name ]

 | ADD [COLUMN] (column_definition,...)

 | ADD INDEX [index_name] [index_type] (index_col_name,...)

 | ADD [CONSTRAINT [symbol]]

PRIMARY KEY [index_type] (index_col_name,...)

 | ADD [CONSTRAINT [symbol]]

UNIQUE [index_name] [index_type] (index_col_name,...)

 | ADD [FULLTEXT|SPATIAL] [index_name] (index_col_name,...)

 | ADD [CONSTRAINT [symbol]]

FOREIGN KEY [index_name] (index_col_name,...)

       [reference_definition]

 | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}

 | CHANGE [COLUMN] old_col_namecolumn_definition

       [FIRST|AFTERcol_name]

 | MODIFY [COLUMN] column_definition [FIRST | AFTERcol_name]

 | DROP [COLUMN] col_name

 | DROP PRIMARY KEY

 | DROP INDEXindex_name

 | DROP FOREIGN KEYfk_symbol

 | DISABLE KEYS

 | ENABLE KEYS

 | RENAME [TO] new_tbl_name

 | ORDER BYcol_name

 | CONVERT TO CHARACTER SETcharset_name [COLLATEcollation_name]

 | [DEFAULT] CHARACTER SETcharset_name [COLLATEcollation_name]

 | DISCARD TABLESPACE

 | IMPORT TABLESPACE

 | table_options

 

Considere el ejemplo Propietario - Automóvil, bajo el criterio de hacienda del Gobierno del Estado de Veracruz, México. Modificaremos el ejemplo para añadir el atributo color según la sintaxis MySQL

 

 

ALTER TABLEautomovil

ADD(color CHAR(15) NOT NULL);

Descargar

 

Ejemplo: Eliminar una llave foranea

ALTER TABLE automovil DROP FOREIGN KEY FK_Propietario;

 

Ejemplo: Agregar una llave foranea con borrado en cascada

 

ALTER TABLEautomovil ADD CONSTRAINTFK_Propietario FOREIGN KEY (idPropietario) REFERENCES propietario (idPropietario) ON DELETE CASCADE;

 

Puede ejecutar múltiples cláusulas ADD, ALTER, DROP, y CHANGE en un único comandoALTER TABLE. Esta es una extensión MySQL al estándar SQL, que permite sólo una de cada cláusula por comando ALTER TABLE.