viernes, 6 de noviembre de 2009

Creando nueva base de datos

Estoy empezando a crear una base de datos desde cero para una aplicación de mi empresa.

Nosotros nos creamos unos ficheros para luego utilizarlos en la instalación.
Los ficheros que nos creamos son:
  1. Crear fichero con las tablas.
  2. Crear fichero con las constraints de las tablas.
  3. Crear fichero con los índices necesarios.
  4. Crear fichero con las secuencias de las tablas.
  5. Crear fichero con los triggers.
  6. Crear fichero con los views.
  7. Crear fichero con los insert de las tablas.
  8. Crear fichero con los permisos a las tablas
  9. Crear ficheros de sinónimos.
Voy a explicar como hago cada ficheros y que es cada cosa:

Fichero de las tablas
En este fichero vamos a tener la instrucción siguiente para crear las tablas que necesitemos:

CREATE TABLE NOMBRE_TABLA(
campo1 tipo de variable (number, varchar,.....) null or not null,
campo2 tipo de variable (number, varchar,.....) null or not null,
campo3 tipo de variable (number, varchar,.....) null or not null,
....... tipo de variable (number, varchar,.....) null or not null,
);

Fichero con las constraints
La cláusula constraints la utilizamos para crear o eliminar índices que pueden ser único o múltiples.
Puede ir seguido de:
  • UNIQUE --> para decir que el valor de ese campo es único
  • PRIMARY KEY -->crea un índice primario el campo o los campos especificados. Todos los campos de la clave principal deben ser únicos y no nulos, cada tabla sólo puede contener una única clave principal.
  • FOREIGN KEY -->crea un índice sobre el campo cuyo valor sera el contenido de otro campo de otra tabla o de la misma. Puede ser null y se pueden crear varias claves ajenas
En este fichero vamos a crear las claves primarias por cada tabla que hayamos creado:
ALTER TABLE NOMBRE_TABLA ADD (
CONSTRAINT PK_NOMBRE_TABLA PRIMARY KEY (campo));

Fichero de los índices
Yo me he creado un fichero de índices para las tablas que tiene muchos datos , así las búsquedas serán más rápidas,los índices se crean sobre el o los campos que vayamos mas a utilizar, la sentencia para crear índices es la siguiente:

CREATE UNIQUE INDEX NOMBRE_INDICE ON TABLA(campo);

Fichero de las secuencias
Para la generación de códigos numéricos automáticos utilizamos las secuencias

CREATE SEQUENCE
[MINVALUE ] -->valor mínimo de la secuencia
[MAXVALUE ]--> valor máximo de la secuencia
[START WITH ]--> por el numero que va a empezar la secuencia
[INCREMENT BY ] --> valor que va a incrementar cada vez que insertemos
[NOCACHE | CACHE ]--> se utiliza para que la generación de secuencia vaya mas rápido
[CYCLE] ;-->nocycle or cycle, si ponemos cycle cuando llega al MAXVALUE volvera a empezar desde el MINVALUE, esto puede que no cree exclusividad y si ponemos nocycle nos saldrá un error:
RDB%-E-SEQNONEXT, el siguiente valor para la secuencia "NOMBRE SECUENCIA" no está disponible.

Ficheros con los triggers
Los triggers son disparadores que se ejecuta cuando se cumple una condición establecida al realizar un INSERT, UPDATE o DELETE.
Si vamos a necesitar triggers nos creamos este archivo, la sintaxis de un trigger con update podría ser la siguiente:

CREATE TRIGGER nombre_trigger
BEFORE UPDATE ON nombre_tabla
REFERENCING NEW ROW AS campo,OLD ROW AS campo
FOR EACH ROW
condición THEN
END IF;

Fichero de views
Las vistas (views) son consultas, que refleja el contenido de una o más tablas, desde la que se puede acceder a los datos como si fuera una tabla. Así obtenemos seguridad en nuestras tablas sino queremos que el usuario acceda a otras datos de las tablas.O nos evitamos el escribir complejas sentencias sql.

Fichero de insert
En este fichero vamos a tener las sentencias sql de inserción de datos de las tablas.

Fichero de permisos (grant)
Concede permiso a un usuario sobre las tablas o vistas. Permiso de SELECT,INSERT, DELETE o UPDATE.

Ficheros de sinónimos
Este fichero contiene las sentencia de creación de sinónimos sobre las tablas o vistas, esto quiere decir que una tabla o vista puede tener dos nombre diferentes, el de la tabla y el de sinónimo que hace referencia a esa tabla. Los sinónimos nos proporciona la ventaja de independizar las tablas físicas de las aplicaciones y que un usuario acceda a otra tablas de otro usuario si tiene permisos para ello.