Date post: | 05-Jul-2015 |
Category: |
Documents |
Upload: | samuel-montano-jarquin |
View: | 169 times |
Download: | 0 times |
Administración de Base de DatosGeorgina Chino Gallardo
2.1. Creación de base de datos
• 2.1.1. Creación de la estructura de la base de datos.
• 2.1.2.Creación de dominios definidos por el DBA.
• 2.1.3.Definir el esquema general de la base de datos (tablas, atributos, llaves primarias y llaves heredadas).
• 2.1.4.Creación de vistas de la base de datos (view).
2.1.1 Creación de la estructura de la base de datos
• la creación de la base de datos consiste en la creación de las tablas que la componen. En realidad, antes de poder proceder a la creación de las tablas, normalmente hay que crear la base de datos, lo que a menudo significa definir un espacio de nombres separado para cada conjunto de tablas.
2.1.1 Creación de la estructura de la base de datos
• para una DBMS se pueden gestionar diferentes bases de datos independientes al mismo tiempo sin que se den conflictos con los nombres que se usan en cada una de ellas.
• El sistema previsto por el estándar para crear los espacios separados de nombres consiste en usar las instrucciones SQL "CREATE SCHEMA". A menudo, dicho sistema no se usa (o por lo menos no con los fines y el significado previstos por el estándar), pero cada DBMS prevé un procedimiento propietario para crear una base de datos. Normalmente, se amplía el lenguaje SQL introduciendo una instrucción no prevista en el estándar: "CREATE DATABASE".
2.1.1 Creación de la estructura de la base de datos
• La sintaxis empleada por PostgreSQL, pero también por las DBMS más difundidas, es la siguiente:
CREATE DATABASE nombre_base de datos
Con PostgreSQL está a disposición una orden invocable por shell Unix (o por shell del sistema usado), que ejecuta la misma operación:
createdb nombre_base de datos
Para crear nuestra base de datos bibliográfica, usaremos pues la orden:
createdb biblio
Una vez creada la base de datos, se pueden crear las tablas que la componen. La instrucción SQL propuesta para este fin es:
CREATE TABLE nombre_tabla (nombre_columna tipo_columna [ cláusula_defecto ] [ vínculos_de_columna ][ , nombre_columna tipo_columna [ cláusula_defecto ] [ vínculos_de_columna ] ... ][ , [ vínculo_de tabla] ... ] )
2.1.2 creación de dominios definindos por el DBA• Dominio: es un objeto que se
almacena en la base de datos y que representa un tipo de datos, una restricción CHECK y un valor por omisión. Se puede usar para definirlo como tipo de una columna.
2.1.2 creación de dominios definindos por el DBA• Están en el estándar SQL, como
ejemplos los siguientes DBMS que los implementan: PostgreSQL, Interbase y Firebird.Son muy útiles porque una de las cosas más tediosas es tener que ir a revisar la definición de la clave primaria de alguna tabla para copiarla tal cual al crear una tabla nueva que tendrá una clave foránea. Si se usan dominios sólo hay que usar el mismo.
2.1.2 creación de dominios definindos por el DBA• Un ejemplo:• CREATE DOMAIN POSITIVE AS INTEGER NOT
NULL CHECK(VALUE > 0);• Luego en todas las tablas que lleven una
columna cuyo valor sea entero, no nulo y mayor a cero, usamos el dominio:
• CREATE TABLE campo(id: integer not null primary key,hectareas: positive);
• Un dominio muy útil es para las columnas de montos de dinero que siempre debemos mantener con la misma cantidad de decimales.
• .
2.1.3.Definir el esquema general de la base de datos (tablas, atributos, llaves primarias y llaves heredadas).• Create Table pedidos
(id_pedido INT(4) NOT NULL AUTO_INCREMENT,id_cliente INT(4) NOT NULL,id_articulo INT(4)NOT NULL,fecha DATE,cantidad INT(4),total INT(4), KEY(id_pedido,id_cliente,id_articulo))
2.1.3.Definir el esquema general de la base de datos (tablas, atributos, llaves primarias y llaves heredadas).• Create Table articulos
(id_articulo INT(4) NOT NULL AUTO_INCREMENT,titulo VARCHAR(50),autor VARCHAR(25),editorial VARCHAR(25),precio REAL,KEY(id_articulo))
2.1.3.Definir el esquema general de la base de datos (tablas, atributos, llaves primarias y llaves heredadas).
Tipo Bytes DescripciónINT o
INTEGER 4 Números enteros. Existen otros tipos de mayor o menor longitud específicos de cada base de datos.
DOUBLE o REAL 8 Números reales (grandes y con decimales). Permiten
almacenar todo tipo de número no entero.CHAR 1/caracter Alfanuméricos de longitud fija predefinida
VARCHAR 1/caracter+1 Alfanuméricos de longitud variable
DATE 3 Fechas, existen multiples formatos específicos de cada base de datos
BLOB 1/caracter+2 Grandes textos no indexablesBIT o
BOOLEAN 1 Almacenan un bit de información (verdadero o falso)
2.1.3.Definir el esquema general de la base de datos (tablas, atributos, llaves primarias y llaves heredadas).
• La clave primaria se utiliza para identificar en forma única cada línea en la tabla. Puede ser parte de un registro real, o puede ser un campoartificial (uno que no tiene nada que ver con el registro real). Una clave primaria puede consistir en uno o más campos en una tabla. Cuando se utilizan múltiples camposcomo clave primaria, se los denomina claves compuestas.
• Las claves primarias pueden especificarse cuando se crea la tabla (utilizando CREATE TABLE) o cambiando la estructura existente de la tabla (utilizando ALTER TABLE).
2.1.3.Definir el esquema general de la base de datos (tablas, atributos, llaves primarias y llaves heredadas).• ALTER TABLE Customer ADD PRIMARY KEY
(SID);
• Nota: Antes de utilizar el comando ALTER TABLE para agregar una clave primaria, necesitará asegurarse de que el campo esté definido como 'NOT NULL' -- en otras palabras, NULL no puede aceptarse como valor para ese campo.
2.1.3.Definir el esquema general de la base de datos (tablas, atributos, llaves primarias y llaves heredadas).
• Una clave externa es un campo (o campos) que señala la clave primaria de otra tabla. El propósito de la clave externa es asegurar la integridad referencial de los datos.En otras palabras, sólo se permiten los valores que se esperan que aparezcan en la base de datos.
• Por ejemplo, digamos que tenemos dos tablas, una tabla CUSTOMER que incluye todos los datos del CUSTOMER, y la tabla ÓRDENES que incluye los pedidos del CUSTOMER. La restricción aquí es que todos los pedidos deben asociarse con un CUSTOMER que ya se encuentra en la tabla CUSTOMER.
• En este caso, colocaremos una clave externa en la tabla ORDERS y la relacionaremos con la clave primaria de la tabla CUSTOMER. De esta forma, nos aseguramos que todos los pedidos en la tabla ORDERS estén relacionadas con un CUSTOMER en la tabla CUSTOMER. En otras palabras, la tabla ORDERS no puede contener información de un CUSTOMER que no se encuentre en la tabla CUSTOMER.
La estructura de estas dos tablas será la siguiente:
nombre de columna característica
SID Clave Primaria
Last_Name
First_Name
Tabla CUSTOMER
Tabla ORDERS
nombre de columna característica
Order_ID Clave Primaria
Order_Date
Customer_SID Clave Externa
Amount
En el ejemplo anterior, la columna Customer_SID en la tabla ORDERS es una clave externa señalando la columna SID en la tabla CUSTOMER.
A continuación se muestran ejemplos de cómo especificar la clave externa a la hora de crear la tabla ORDERS:
• MySQL: CREATE TABLE ORDERS (Order_ID integer, Order_Date date, Customer_SID integer, Amount double, Primary Key (Order_ID), Foreign Key (Customer_SID) references CUSTOMER(SID));
A continuación se presentan ejemplos para la especificación de una clave externa al modificar una tabla: Esto asume que se ha creado la tabla ORDERS, y que la clave externa todavía no se ha
ingresado:
• MySQL: ALTER TABLE ORDERS ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(SID);
2.1.4.Creación de vistas de la base de datos (view).
• Las vistas pueden considerarse como tablas virtuales. Generalmente hablando, una tabla tiene un conjunto de definiciones, y almacena datos físicamente. Una vista también tiene un conjunto de definiciones, que se construye en la parte superior de la(s) tabla(s) u otra(s) vista(s), y no almacena datos físicamente.
• La sintaxis para la creación de una vista es la siguiente:
• CREATE VIEW "NOMBRE_VISTA" AS "Instrucción SQL"
• La “Instrucción SQL” puede ser cualquiera de las instrucciones SQL que hemos descrito en esta guía de referencia.
• Utilicemos un ejemplo simple para ilustrar. Supongamos que tenemos la siguiente tabla:
• Tabla Customer(First_Name char(50),Last_Name char(50),Address char(50),City char(50), Country char(25),Birth_Date date)
y deseamos crear una vista denominada V_Customer que contiene sólo las columnas First_Name, Last_Name y País de
esta tabla, ingresaríamo
• CREATE VIEW V_CustomerAS SELECT First_Name, Last_Name, CountryFROM Customer
• Ahora tenemos una vista llamada V_Customer con la siguiente estructura:
• View V_Customer(First_Name char(50),Last_Name char(50),Country char(25))
• Podemos utilizar también una vista para aplicar uniones a dos tablas. En este caso, los usuarios sólo ven una vista en vez de dos tablas, y la instrucción SQL que los usuarios necesitan emitir se vuelve mucho más simple. Digamos que tenemos las siguientes dos tablas:
store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999Boston 700 € 08-Jan-1999
Tabla Store_Information
Tabla Geography
region_name store_name
East Boston
East New York
West Los Angeles
West San Diego
y deseamos construir una vista que tenga ventas organizadas según la región. Colocaríamos la siguiente instrucción SQL:
• CREATE VIEW V_REGION_SALESAS SELECT A1.region_name REGION, SUM(A2.Sales) SALESFROM Geography A1, Store_Information A2WHERE A1.store_name = A2.store_nameGROUP BY A1.region_name
Esto nos brinda una vista, V_REGION_SALES, que se ha definido para las ventas de los negocios según los registros de la región. Si
deseamos saber el contenido de esta vista, ingresamos,
• SELECT * FROM V_REGION_SALES
• Resultado:
REGION SALESEast 700 €West 2050 €
2.2. Definición del esquema de integridad.
1. Validar y verificar integridad de entidad e integridad referencial.
2. Creación de disparadores (Trigger’s).3. Creación de procedimientos almacenados.