Equipo 3.
2.1 creación de base de datos.
2.2. creación de tablas.
žUna base de datos en un sistema relacional está compuesta por un conjunto de tablas, que corresponden a las relaciones del modelo relacional. En la terminología usada en SQL no se alude a las relaciones, del mismo modo que no se usa el término atributo, pero sí la palabra columna, y no se habla de tupla, sino de línea.
2.1 creación de base de datos
A nivel teórico, existen dos lenguajes para el manejo de bases de datos:
DDL (Data Definition Language) Lenguaje de definición de datos. Es el lenguaje que se usa para crear bases de datos y tablas, y para modificar sus estructuras, así como los permisos y privilegios.
Este lenguaje trabaja sobre unas tablas especiales llamadas diccionario de datos.
DML (Data Manipilation Language) lenguaje de manipulación de datos. Es el que se usa para modificar y obtener datos desde las bases de datos.
Prácticamente, 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.
Prácticamente, 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.
Crear una base de datos
žCada conjunto de relaciones que componen un modelo completo forma una base de datos. Desde el punto de vista de SQL, una base de datos es sólo un conjunto de relaciones (o tablas), y para organizarlas o distinguirlas se accede a ellas mediante su nombre. A nivel de sistema operativo, cada base de datos se guarda en un directorio diferente.
žDebido a esto, crear una base de datos es una tarea muy simple. Claro que, en el momento de crearla, la base de datos estará vacía, es decir, no contendrá ninguna tabla.
žPara empezar, crearemos una base de datos para nosotros solos, y la llamaremos "prueba". Para crear una base de datos se usa una sentencia CREATE DATABASE:
žmysql> CREATE DATABASE prueba;
Query OK, 1 row affected (0.03 sec)
mysql>
Podemos averiguar cuántas bases de datos existen en nuestro sistema usando la sentencia SHOW DATABASES:
žmysql> SHOW DATABASES;
Creación de tablas
El mandato para la creación de tablas o esquemas relacionales es CREATE TABLE. Básicamente se debe definir los atributos que componen la tabla, la clave primaria, las posibles claves ajenas y las restricciones a imponer sobre los valores de los atributos. Cada definición se separa de la siguiente con una coma. La sintaxis general es la siguiente:
žCREATE TABLE nombre_tabla(
ždefinición de atributo 1,
ž.....................
ždefinición de atributo a,
ždefinición de clave primaria,
ždefinición de clave foránea 1,
ž.....................
ždefinición de clave foránea f,
ždefinición de restricción 1,
ždefinición de restricción r);
žEl orden de realización de las definiciones es muy flexible, aunque es evidente que antes de definir un atributo como formando parte de una clave primaria o ajena, o bien definir una restricción sobre sus posibles valores, es necesario haber definido ese atributo con anterioridad.
žUna tabla recién creada no tiene contenido y por lo tanto su cardinalidad es cero. Aunque esté vacía ocupa algún espacio en el espacio de tablas en el que se crea.
žLas definiciones de las tablas que componen una base de datos se almacenan en un lugar especial denominado "diccionario de datos" donde son accedidas por el SGBD cuando es necesario.
Definición de atributos
žEl tipo de datos del atributo especifica sus posibles valores válidos. Los tipos de datos más habituales son NUMBER (número entero), DATE (fecha), CHAR (cadena de caracteres de longitud fija) y VARCHAR2 (cadena de caracteres de longitud máxima fija y longitud real variable).
Si no se especifica ninguna restricción sobre el atributo, entonces puede tomar cualquier valor compatible con su tipo de datos, y el valor nulo (null). Las posibles restricciones son:
PRIMARY KEY : El atributo es clave primaria. Por tanto no acepta valores repetidos ni nulos.
UNIQUE: El atributo no acepta valores repetidos, pero sí nulos.
NOT NULL: El atributo no acepta valores nulos, pero sí únicos.
CHECK: Restricción arbitraria.
žEs frecuente combinar las restricciones UNIQUE y NOT NULL, por lo cual el atributo no aceptaría valores repetidos ni nulos, siendo considerado una clave alternativa o secundaria del modelo relacional.
žLas restricciones arbitrarias se especifican mediante CHECK seguida de una condición lógica entre paréntesis. En la condición pueden emplearse operadores lógicos relacionales (menor, mayor, etc.), operadores lógicos booleanos (AND, OR, NOT) y otros, como el de pertenencia a una lista de valores. La condición debe ser simple en el sentido de que no debe involucrar a los valores de otros atributos, sino que únicamente debe contemplarse el atributo en cuestión.
žEl SGBD debe comprobar automáticamente que se verifican las restricciones definidas cuando se insertan nuevas filas en la tabla, se borran filas o se modifica el valor de un atributo en una fila. Esta comprobación requiere un tiempo, por lo que el rendimiento de las operaciones anteriores puede verse negativamente afectado si se definiera un gran número de restricciones. En la sección sobre restricciones del documento SQL IV (Aspectos adicionales) se trata con mayor detenimiento la definición de restricciones.
Definición de la clave primaria
Si la clave primaria se compone de un solo atributo (situación muy habitual) entonces puede añadirse PRIMARY KEY al final de la definición del atributo primo. Para definir una clave primaria en general se acompaña además de una lista de los atributos primos, separados por comas.
Definición de claves ajenas.
Una clave ajena, externa o foránea se define similarmente a la clave primaria, indicando FOREIGN KEY seguida de la lista de atributos, separados por comas, que componen la clave ajena, seguida a continuación de la palabra REFERENCES tras la cual se indica el nombre de la table referenciada (la tabla de la cual los atributos anteriores son clave primaria).
Lógicamente para que la definición sea correcta los atributos que la componen deben estar ya definidos y la tabla referenciada debe existir con anterioridad. Por tanto la existencia de claves ajenas restringe el orden de creación de las tablas que componen la base de datos, pues si una tabla B incluye una clave ajena de la tabla A, ésta debe crearse primero.
Ejemplo:
CREATE TABLE provincia(
codprov NUMBER(2) PRIMARY KEY,
nomprov CHAR(20) UNIQUE NOT NULL
);
CREATE TABLE alumno(
num NUMBER(4),
nombre CHAR(10) NOT NULL,
apellidos CHAR(20) NOT NULL,
edad NUMBER(2) CHECK (edad>16),
codprov NUMBER(2),
nota NUMBER(4,2) CHECK (nota >=0 AND nota <= 10),
PRIMARY KEY (num),
FOREIGN KEY (codprov) REFERENCES provincia
);
Borrado de tablas
El mandato para el borrado o eliminación de tablas es DROP TABLE.
DROP TABLE nombre_tabla;
Esta orden elimina la definición de la tabla en cuestión, que no existirá en lo sucesivo. La situación es muy diferente a la de una tabla en la cual se borran todas sus filas, utilizando para ello un mandado del lenguaje de manipulación de datos. En este caso la tabla se queda vacía pero sigue existiendo.
Modificación de la estructura de las tablas.
El mandato para modificar la definición de una tabla o esquema relacional es ALTER TABLE. Lo más habitual es añadir atributos o columnas nuevos (ADD).
ALTER TABLE alumno ADD (tipo NUMBER(1) CHECK (tipo IN (0,1,2)));
No hay comentarios:
Publicar un comentario