UNSCH-
Escuela de Ing. De Sistemas
I. OBJETIVOS
Manejo de Creación de tablas Manejo de tipo de datos y
Uso de Restricciones
II. MARCO TEÓRICO CREACION DE TABLAS E INTEGRIDAD I NTEGRIDAD DE RELACION Lenguaje de Definición de Datos (DDL): proporciona órdenes para definir, modificar o eliminar los distintos objetos de la base de datos (Tablespace, tablas, vistas, índices...). Sentencias DDL son:
CREATE TABLE Para crear una nueva tabla en el esquema del usuario, se debe contar con el privilegio de sistema CREATE TABLE. Para crear una tabla en otro esquema de usuario, se debe contar con el privilegio de sistema CREATE ANY TABLE. ALTER TABLE Permite modificar la estructura definida para una tabla. DROP TABLE Elimina una tabla (datos y estructura) y sus índices. No se puede hacer Rollback de esta sentencia. Cambia el nombre de una tabla, vista, secuencia o RENAME sinónimo. Una base de datos almacena su información en tablas. Una tabla es una estructura de datos que organiza los datos en columnas y filas; cada columna es un campo (o atributo) y cada fila, un registro. La intersección de una columna con una fila, contiene un dato específico, un solo valor. Cada registro contiene un dato por cada columna de la tabla. Cada campo (columna) debe tener un nombre. El nombre del campo hace referencia a la información que almacenará. Cada campo (columna) también debe definir el tipo de dato que almacenará.
Modelamiento de Base de datos
1
Ing. Elvira Fernández
UNSCH-
Escuela de Ing. De Sistemas
Tipos de datos en Oracle Los tipos de datos soportados por Oracle se agrupan en los siguientes conjuntos.
Alfanuméricos Numéricos CHAR NUMBER VARCHAR2 FLOAT VARCHAR NCHAR NVARCHAR2 LONG (Obs.)
Fecha DATE
Binarios Otros RAW ROWID LONGRAW BLOB NLOB CLOB BFILE
Los valores alfanuméricos van encerrados entre comilla simple: 'Alfanumérico' Los valores numéricos son número simples: 123 Las fechas van encerradas entre comillas simples: '11/11/2014' Los valores binarios no pueden ser representados (son fotos, vídeos)
Tipo de dato CHAR(b)
Tipo de dato NUMBER(p,s)
Almacena cadenas de caracteres de
Número con p precisión (parte entera) y
longitud fija, desde 1 a 2.000 bytes de
s escala (parte decimal). La precisión p
ocupación.
puede variar de 1 a 38. La s escala puede
Para ASCII, el conjunto de caracteres
variar desde -84 hasta 127. Tanto la
ocupa un byte, por lo que coincide el
precisión y la escala se encuentran en
número de caracteres máximos con la
dígitos decimales. Un valor numérico
ocupación del tipo de dato. Si se introduce
requiere 1 a 22 bytes.
un valor de 10 caracteres en un campo de CHAR(100), se tendrá que rellenar con 90 posiciones restantes. Tipo de dato VARCHAR2(b)
Tipo de dato FLOAT(b)
El tamaño máximo es de 4000 bytes o
Un subtipo del tipo de datos NUMBER con
caracteres, y la mínima es de 1 byte o un
precisión p. Un valor de coma flotante se
carácter. Se debe especificar el tamaño de
representa internamente como un NUMBER.
para VARCHAR2.
La precisión p puede variar desde 1 hasta 126 dígitos binarios. Un valor flotante
Almacena cadenas de caracteres de
requiere 1 a 22 bytes
longitud variable. Si se define una columna de longitud 100 bytes, y se introduce en ella un valor de 10 bytes, la columna ocupará 10 y no 100 como hacía con el tipo de dato CHAR.
Modelamiento de Base de datos
2
Ing. Elvira Fernández
UNSCH-
Escuela de Ing. De Sistemas
Tipo de dato VARCHAR(b)
Tipo de dato DATE
En Oracle es equivalente a VARCHAR2, en
Almacena un valor de fecha y hora.
futuras versiones permitirá distintos
Para un tipo de dato DATE, Oracle
criterios de comparación.
almacena internamente los siguiente datos: Siglo Año Mes Día Hora Minuto Segundo
El formato por defecto de las fechas es: 'DD-MON-YYYY' Tipo de dato NCHAR(b)
Tipos de datos binarios
Almacena un valor alfanumérico de
Permiten almacenar información en formato
longitud fija con posibilidad de cambio de
“crudo”, valores binarios tal y como se
juego de caracteres. Puede almacenar
almacenan en el disco duro o como residen
tanto caracteres ASCII, EBCDIC,
en memoria. Estas columnas se pueden
UNICODE.
utilizar tanto para almacenar grandes cantidades de datos (hasta 4Gb.), como para almacenar directamente cualquier tipo de fichero (ejecutables, sonidos, vídeos, fotos, documentos Word, DLLs…) o para
transportar datos de una base de datos a otra, ya que el formato binario es el único formato común entre cualquier sistema informático. Tipo de dato NVARCHAR2(b)
Tipo de dato LONG (Obsoleto)
Almacena un valor alfanumérico de
Almacena caracteres de longitud variable
longitud variable con posibilidad de
hasta 2 Gb. Este tipo de dato se soporta
cambio de juego de caracteres. Puede
para compatibilidad con versiones
almacenar tanto caracteres ASCII,
anteriores. En Oracle y siguientes versiones
EBCDIC, UNICODE.
se debe usar los tipos de datos CLOB y NLOB para almacenar grandes cantidades de datos alfanuméricos.
ROWID
Cadena en base 64 que representa la dirección única de una fila en la tabla. Este tipo de datos es principalmente para los valores devueltos por la pseudo columna ROWID.
Modelamiento de Base de datos
3
Ing. Elvira Fernández
UNSCH-
Escuela de Ing. De Sistemas
TIPOS DE RESTRICCIONES: Las restricciones son un método estándar ANSI para forzar la integridad de los datos. Garantizan que los datos ingresados en las columnas sean valores válidos y que se mantengan las relaciones entre las tablas.
PRIMARY KEY
(PK)
Garantiza que cada fila o registro en una tabla es único(a). La columna o combinación de columnas definida como clave primaria no permite valores duplicados. Cuando se define la restricción PK sobre un (o unos) atributo(s) de una entidad se obliga a: - No duplicar el contenido de dicho atributo en la entidad - No permite valores nulos (NULL) - Se sugiere usar el tipo de datos Integer (int, smallint o tynint), numeric o decimal
FOREIGN KEY
(FK)
Indica el atributo o atributos que almacenaran el dato que los relacionará con otra entidad. Este atributo en la otra entidad debe ser un PK para poder establecer una adecuada relación. Cuando se define la restricción FK sobre un (o unos) atributo(s) de una entidad se obliga a: - el dato que se desea almacenar en el atributo FK, debe haber sido previamente registrado en la entidad que contiene el PK. - Al tratar de eliminar el dato en la entidad que contiene el atributo PK, previamente se debe eliminar el dato en la entidad que contiene el FK.
UNIQUE
(UN)
Garantiza que cada valor en una columna es único. Permit e valores únicos. Cuando se definen la restricción UN sobre un (o unos) atributo(s) de una entidad se obliga a: - no repetir los valores definidos como únicos
NOT NULL: (NU) Indica que, a pesar que el motor de la base de datos obliga a registrar todos los valores de una entidad, podríamos causar excepciones, para dejar atributos vacíos. Cuando se define la restricción NU sobre un (o unos) atributo(s) de una entidad se le obliga a: - No causar un error de excepción cuando se deje dicho atributo en blanco - Los Primary Key y Foreign key, no pueden tener esta restricción.
CHECK
(CK)
Indica que algunos atributos pueden ser validados dentro de un rango de valores.
Modelamiento de Base de datos
4
Ing. Elvira Fernández
UNSCH-
Escuela de Ing. De Sistemas
Cuando se define la restricción CK sobre un (o unos) atributo(s) de una entidad se le obliga a: -
El valor que vaya a tener dicho atributo debe encontrarse en el conjunto de valores válidos que se le ha indicado. Por ejemplo: el atributo sexo de una entidad de clientes solo puede ser M o F DEFAULTS
Un DEFAULTS es un valor por defecto que se puede asignar en un campo cuando el valor de este campo no es insertado en el registro. Las definiciones DEFAULT se pueden: Crear cuando se crea la tabla, durante el proceso de definición de la misma. Agregar a una tabla ya existente. Cada columna de una tabla puede contener una sola definición DEFAULT Modificar o eliminar, si ya existen definiciones DEFAULT. por ejemplo, puede modificar el valor que se inserta en una columna cuando no se escribe ningún valor.
III. DESARROLLO CREANDO TABLAS Antes de crear una tabla debemos de determinar a que esquema de la base de datos pertenecerá. Para poner esto en práctica, vamos a crear en la base de datos un espacio para las tablas (Tablespace) llamado TS_VENTAS y, también, vamos a crear un usuario llamado DESARROLLO que utilizaremos para crear todos los objetos a ver en esta sesión.
REALIZAR CONEXION Conéctese con una cuenta que tenga los privilegios suficientes para crear tablespace y nuevos usuarios. SQL>Conexión usuario/contraseña@cadena_conexión SQL> conn system/123456@orcl
Ejercicio01: Crear el usuario o esquema DESARROLLO, especificando TS_VENTAS como tablespace a utilizar y cuánta información Modelamiento de Base de datos
5
Ing. Elvira Fernández
UNSCH-
Escuela de Ing. De Sistemas
podrá almacenar. Asigne los privilegios necesarios para empezar a crear objetos en el espacio de tablas asignado.
Mostrar el usuario. SQL>SHOW USER;
CREAR USUARIOS SQL>CREATE USER nombre_usuario IDENTIFIED BY contraseña DEFAULT TABLESPACE Asigrnar_el_nombre_tablespace QUOTA {KB/M [UNLIMITED]}ON nombre_tablespace OTROGAR PRIVILEGIOS Otorgar privilegios necesarios para el usuario con el fin que pueda efectuar la conexión. Sintaxis : SQL>GRANT privilegio to nombre_usuario;
CASO PRÁCTICO CREACIÓN DE TABLAS Se tiene el siguiente modelo físico, crear las tablas en el espacio de tablas TS_VENTAS.
Modelamiento de Base de datos
6
Ing. Elvira Fernández
UNSCH-
Escuela de Ing. De Sistemas
CREACION DE TABLAS E INTEGRIDAD DE RELACION La creación de la base de datos debe comenzar con la creación de una o más tablas. Para ello utilizaremos la sentencia CREATE TABLE.
Sintaxis: CREATE TABLE ( [null | not null] [default ] {, [null | not null] [default ]} [, constraint primary key ([ ,...n ])] [, constraint foreign key ([ ,...n ]) references ( [ ,...n ] ) ] [ON DELETE {CASCADE }] );
Modelamiento de Base de datos
7
Ing. Elvira Fernández
UNSCH
Escuela de Ing. De Sistemas
La tabla debe ser definida con un nombre que la identifique y con el cual accederemos a ella. Cada campo con su tipo debe separarse con comas de los siguientes, excepto el último. Cuando se crea una tabla debemos indicar su nombre y definir al menos un campo con su tipo de dato Cada usuario ocupará un registro de esta tabla, con su respectivo nombre y clave. Finalizamos cada comando con un punto y coma.
CREATE TABLE ORDEN ( IdOrden number(6) not null , FechaEntrada date DEFAULT sysdate, FechaSalida date
) Tablespace TS_VENTAS ; CREATE TABLE PRODUCTO ( IdProducto int not null primary key, IdCategoria int, IdProveedor int, Nombre varchar (50) not null unique, UnidadMedida varchar(20), PrecioProveedor number(8,2) not null, Telefono varchar(11),-- campo incorrecto StockMinimo number(6) check (StockMinimo >20), Descontinuado number(1)
); Ejercicio 02: crear las tabla ORDEN_DETALLE y las restantes del modelo físico REALIZAR CONSULTA SELECT * FROM TABS; recupera los nombres de todas las tablas pertenecientes al usuario que emite este comando
MODIFICACIÓN DE LA DEFINICION DE UNA TABLA En una tabla podemos añadir nuevas columnas, eliminar columnas, cambiar las propiedades de una columna, añadir o eliminar restricciones.
ALTER TABLE: Permite modificar las definiciones de una tabla. SINTAXIS: ALTER TABLE nombre tabla ADD nombre_columna propiedades columna DROP COLUMN columna_nombre Modelamiento de Base de datos
8
Ing. Elvira Fernández
UNSCH-
Escuela de Ing. De Sistemas
MODIFY nombre_columna Nuevas_propiedades_columna RENAME COLUMN nombre_columna TO nuevo_nombre_columna ADD CONSTRAINT nombre_restriccion PRIMARY KEY …. | UNIQUE…| FOREIGN KEY… | |DEFAULT…| CHECK…
DROP CONSTRAINT nombre_restricción
Ejemplo : Adicionar columnas SE AGREGARÁ LA COLUMNA STOCKACTUAL ALTER TABLE PRODUCTO ADD StockActual number(6);
A LA TABLA PRODUCTO
CREANDO LLAVE PRIMARIA(RESTRICCIONES) ALTER TABLE ORDEN ADD CONSTRAINT PK_IdeOrden PRIMARY KEY ( IdOrden)
Ejercicio03 : Eliminar el campo telefono de la tabla producto ALTER TABLE PRODUCTO DROP COLUMN telefono Ejercicio04 : Crear la restricción para el campo cantidadSolicitada de la tabla Detalleproducto, que sólo permita ingresar valores mayores a 50 ALTER TABLE Detalleproducto ADD CONSTRAINT ch_cantidad CHECK(cantidadSolicitada>50)
Ejercicio05:cambiar el nombre de columna precioProveedor de la tabla producto por precioUnitario ALTER TABLE producto RENAME COLUMN precioProveedor TO precioUnitario
Modelamiento de Base de datos
9
Ing. Elvira Fernández
UNSCH-
Escuela de Ing. De Sistemas
Ejercicio06 : Ingresar por defecto la cantidad de 25 unidades, para el campo stock mínimo de la tabla productos. CREANDO LLAVES FORÁNEAS Y RELACIONANDO TABLAS Agregando referencia a la tabla PRODUCTO ALTER TABLE ORDEN_DETALLE ADD CONSTRAINT FK_CODPRODUCTO FOREIGN KEY (IdProducto) REFERENCES PRODUCTO (IdProducto)
Ejercicio : complete las demás relaciones del modelo físico y genere 8 preguntas para desarrollar las diferentes restricciones o cambios en el esquema .
EJERCICIO PROPUESTO Se desea crear la base de datos de una institución que brinda cursos de extensión profesional. Los interesados en los cursos se pueden matricular sin ninguna restricción, y además tienen facilidades para pagar el costo de los cursos.
1- Crear un tablespace Extensión_profesional 2- Implemente paso a paso la base de datos, para lo cual: 2.1.Cree las tablas 2.2.Agregue las llaves primarias 2.3.agregue las llaves foráneas y relaciones
Modelamiento de Base de datos
10
Ing. Elvira Fernández
UNSCH-
Escuela de Ing. De Sistemas
2.4.Realice 7 preguntas para modificar la estructura de las tablas y desarrolle las restricciones check, unique , default, para las tablas creadas
Modelamiento de Base de datos
11
Ing. Elvira Fernández