lunes, 21 de abril de 2014
Tarea 4 - Secuencias, Indices y Sinonimos
--Generamos las sequencias requeridas para las tablas.
--Sequence para Factura
CREATE SEQUENCE FacturaSeq
MINVALUE 1
MAXVALUE 99999
START WITH 1
INCREMENT BY 1
NOCACHE;
--Sequence para Detalle
CREATE SEQUENCE DetalleSeq
MINVALUE 1
MAXVALUE 99999
START WITH 1
INCREMENT BY 1
CACHE 10;
--Creamos las tablas
CREATE TABLE Factura (
FacturaId NUMBER(5) not null constraint factura_pk primary key,
Folio NUMBER (5) not null,
RutCliente VARCHAR2(10) not null,
FechaEmision date);
CREATE TABLE FacturaDetalle (
DetalleId number(5) not null constraint detalle_pk primary key,
FacturaId number(5) not null constraint FacturaDetalle_fk REFERENCES Factura(FacturaId),
CodigoBarraProducto varchar2(13) not null,
Cantidad number(2) not null,
PrecioUnitario number(5) not null);
/*
Algo necesario para saber sobre indices
Un índice único garantiza que no haya dos filas de una tabla con valores duplicados en lacolumna que define el índice.
Una clave de índice único sólo puede apuntar a una fila de latabla.
En un índice no único, una clave sencilla puede tener múltiples filas asociadas con ella.
*/
--En la tabla factura crearemos 2 indices
Create index FacturaFolioIdx on Factura(Folio);
Create index FacturaRutFechaIdx on Factura(RutCliente, FechaEmision);
--Insertamos datos
INSERT INTO Factura(FacturaId, Folio, RutCliente, FechaEmision)
VALUES (FacturaSeq.NEXTVAL, 250,'78000250', to_date('20140420','YYYY-MM-DD'));
INSERT INTO FacturaDetalle(DetalleId, FacturaId, CodigoBarraProducto, Cantidad, PrecioUnitario)
VALUES (DetalleSeq.NEXTVAL, 1,'781234567891', 1, 1500);
INSERT INTO FacturaDetalle(DetalleId, FacturaId, CodigoBarraProducto, Cantidad, PrecioUnitario)
VALUES (DetalleSeq.NEXTVAL, 1,'781234567892', 2, 2500);
INSERT INTO FacturaDetalle(DetalleId, FacturaId, CodigoBarraProducto, Cantidad, PrecioUnitario)
VALUES (DetalleSeq.NEXTVAL, 1,'781234567893', 3, 3000);
/*Un sinónimo es un nombre alternativo que identifica un tabla en la base de datos.
Con un sinónimo se pretende normalmente simplicar el nombre original de la tabla,
aunque tambien se suelen utilizar para evitar tener que escribir el nombre del propietario de la tabla.
*/
--ahora crearemos un sinonimo para la tabla detalle
Create SYNONYM Detalle
FOR FacturaDetalle;
Select * from Detalle;
Suscribirse a:
Comentarios de la entrada (Atom)
No hay comentarios.:
Publicar un comentario