Está en la página 1de 10

ACTIVIDAD

APORTE INDIVIDUAL - LUISA CHOCONTÁ


Teniendo en cuenta el caso de estudio planteado por los autores Ramakrishnan,
Raghu, and Johannes Gehrke (2007) en el libro Sistemas de gestión de bases de
datos en la página 49 del PDF enviado, cada estudiante debe hacer una lectura
previa del proyecto propuesto para desarrollar los siguientes puntos.

 Primero se realiza la etapa de análisis, teniendo en cuenta los siguientes


requerimientos:
- Definición y descripción de tablas
- Descripción de las columnas
- Definición de las relaciones requeridas y pertinentes en la matriz de
relaciones
- Descripción de cada una de las relaciones teniendo en cuenta las
opcionalidades, cardinalidades, grado, transferibilidad y si ayuda o
no resolver debilidades en las entidades participantes y las
restricciones propias de cada relación.
DESCRIPCIÓN DE TABLAS
Entidad o Justificación, explicación
Tipo de de su existencia en el
Entidad Mundo del Problema
Cliente Información de las personas
que adquieren los productos
Pedido Información de las compras o
solicitud de artículos que
realiza el cliente
Libro Información de cada producto
que está en la tienda
DESCRIPCIÓN DE COLUMNAS
Nombre Atributos Llave Tipo de Dato Tamaño Obligatoriedad
Entidad primaria (Si/No)

Libro idlibro X Integer Si


Codigo_sbn Characters 100 Si
titulo Characters 200 Si
autor Characters 200 Si
Precio_compra float 18 Si
Precio_venta float 18 Si
Año_publicacion integer si
stock Long integer si
Pedido idpedido X Integer Si
Fecha_pedido DateTime Si
Fecha_envio DateTime Si
tarjeta Characters 30 Si
cantidad Long integer Si
cliente Codigo_cliente X integer 40 Si
Nombre_cliente Characters 300 Si
Direccion_cliente Characters 200 Si

Definición de las relaciones requeridas y pertinentes en la matriz de


relaciones

CLIENTE LIBRO PEDIDO


CLIENTE R1 R1,R2 R2
LIBRO
PEDIDO

Descripción de cada una de las relaciones teniendo en cuenta las


opcionalidades, cardinalidades, grado, transferibilidad y si ayuda o no
resolver debilidades en las entidades participantes y las restricciones
propias de cada relación.
La siguiente etapa consiste en realizar el diseño de la base de datos
relacional, acorde a las características del caso de estudio, para ello,
se debe efectuar la entrega del Modelo Relacional, el cual se logra
adelantando las siguientes tareas:

- Llaves primarias (UID) de cada tabla.


- Transforme las Relaciones 1:1 o 1:M en Llaves Foráneas,
implementando el concepto de la Integridad Referencial
- Aplicar técnicas de normalización
-

 En la etapa final se efectúa el desarrollo de la base de datos


relacional atendiendo el caso de estudio propuesto, por tanto, se
debe entregar:

- Programación con el lenguaje SQL del Script DDL


- Programación con el lenguaje SQL del script DML para
poblar las tablas de la base de datos (especialmente las
tablas maestras o de referencia o tablas de códigos)
- Programación con el lenguaje SQL el Scripts DCL para
otorgar los permisos sobre los objetos de la base de datos a
otros usuarios/Esquemas de la base de datos.
- Diligencie cinco registros en la base de datos y con esta
información realice cinco consultas simples sobre las tablas
de la base de datos que evidencie las características de
libros que existen en la librería y cuales han sido más
pedidos.
Modelo relacional

Modelo base de datos


Base de datos

if exists (select 1

from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')

where r.fkeyid = object_id('PEDIDO') and o.name = 'FK_PEDIDO_CLIENTE_P_CLIENTE')

alter table PEDIDO

drop constraint FK_PEDIDO_CLIENTE_P_CLIENTE

go

if exists (select 1

from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')

where r.fkeyid = object_id('PEDIDO') and o.name = 'FK_PEDIDO_LIBRO_PED_LIBRO')

alter table PEDIDO

drop constraint FK_PEDIDO_LIBRO_PED_LIBRO

go

if exists (select 1

from sysindexes

where id = object_id('CLIENTE')

and name = 'CLIENTE_PEDIDO_FK'

and indid > 0

and indid < 255)

drop index CLIENTE.CLIENTE_PEDIDO_FK

go

if exists (select 1

from sysobjects

where id = object_id('CLIENTE')

and type = 'U')


drop table CLIENTE

go

if exists (select 1

from sysindexes

where id = object_id('LIBRO')

and name = 'LIBRO_PEDIDO_FK'

and indid > 0

and indid < 255)

drop index LIBRO.LIBRO_PEDIDO_FK

go

if exists (select 1

from sysobjects

where id = object_id('LIBRO')

and type = 'U')

drop table LIBRO

go

if exists (select 1

from sysindexes

where id = object_id('PEDIDO')

and name = 'CLIENTE_PEDIDO2_FK'

and indid > 0

and indid < 255)

drop index PEDIDO.CLIENTE_PEDIDO2_FK

go

if exists (select 1
from sysindexes

where id = object_id('PEDIDO')

and name = 'LIBRO_PEDIDO2_FK'

and indid > 0

and indid < 255)

drop index PEDIDO.LIBRO_PEDIDO2_FK

go

if exists (select 1

from sysobjects

where id = object_id('PEDIDO')

and type = 'U')

drop table PEDIDO

go

/*==============================================================*/

/* Table: CLIENTE */

/*==============================================================*/

create table CLIENTE (

IDCLIENTE int not null,

NOMBRE char(300) null,

DIRECCION char(200) null,

constraint PK_CLIENTE primary key nonclustered (IDCLIENTE)

go

/*==============================================================*/

/* Index: CLIENTE_PEDIDO_FK */

/*==============================================================*/
create index CLIENTE_PEDIDO_FK on CLIENTE (

IDCLIENTE ASC

go

/*==============================================================*/

/* Table: LIBRO */

/*==============================================================*/

create table LIBRO (

IDLIBRO int not null,

CODIGO_SBN char(100) null,

TITULO char(200) null,

AUTOR char(200) null,

PRECIO_COMPRA float(18) null,

PRECIO_VENTA float(18) null,

ANIO_PUBLICACION int null,

STOCK bigint null,

constraint PK_LIBRO primary key nonclustered (IDLIBRO)

go

/*==============================================================*/

/* Index: LIBRO_PEDIDO_FK */

/*==============================================================*/

create index LIBRO_PEDIDO_FK on LIBRO (

IDLIBRO ASC

go
/*==============================================================*/

/* Table: PEDIDO */

/*==============================================================*/

create table PEDIDO (

IDPEDIDO int not null,

IDCLIENTE int not null,

IDLIBRO int null,

FECHA_PEDIDO datetime null,

FECHA_ENVIO datetime null,

TARJETA char(30) null,

CANTIDAD bigint null,

constraint PK_PEDIDO primary key nonclustered (IDPEDIDO),

constraint AK_UK_LIBRO_CLIENTE_PEDIDO unique (IDLIBRO, IDCLIENTE)

go

/*==============================================================*/

/* Index: LIBRO_PEDIDO2_FK */

/*==============================================================*/

create index LIBRO_PEDIDO2_FK on PEDIDO (

IDLIBRO ASC

go

/*==============================================================*/

/* Index: CLIENTE_PEDIDO2_FK */

/*==============================================================*/

create index CLIENTE_PEDIDO2_FK on PEDIDO (

IDPEDIDO ASC
)

go

alter table PEDIDO

add constraint FK_PEDIDO_CLIENTE_P_CLIENTE foreign key (IDCLIENTE)

references CLIENTE (IDCLIENTE)

go

alter table PEDIDO

add constraint FK_PEDIDO_LIBRO_PED_LIBRO foreign key (IDLIBRO)

references LIBRO (IDLIBRO)

go

Inserción base de datos de registros


INSERT INTO CLIENTE ([IDCLIENTE],[NOMBRE],[DIRECCION]) VALUES(1023355,'LIA
PERALTA','CR 1 #2-99')
INSERT INTO CLIENTE ([IDCLIENTE],[NOMBRE],[DIRECCION]) VALUES(1053365,'SANDRA
BELTRAN','CLL 1 #2-89')
INSERT INTO CLIENTE ([IDCLIENTE],[NOMBRE],[DIRECCION]) VALUES(154545,'ANDRES
RAMIREZ,'TRV 1 #5-78')
INSERT INTO CLIENTE ([IDCLIENTE],[NOMBRE],[DIRECCION]) VALUES(121212,DANIEL
CAMPOS','AV 1 #33-45')
INSERT INTO CLIENTE ([IDCLIENTE],[NOMBRE],[DIRECCION]) VALUES(11445,CAROLINA
CEPEDA','CR 1 #22-23')
go
INSERT INTO LIBRO([IDLIBRO],[CODIGO_SBN],[TITULO],[AUTOR],[PRECIO_COMPRA],
[PRECIO_VENTA],[ANIO_PUBLICACION],[STOCK])
VALUES (1,5698245,'100 años de soledad','Gabriel Garcia
marquez',20000,50000,1990,50)
go
INSERT INTO PEDIDO([IDPEDIDO],[IDCLIENTE],[IDLIBRO],[FECHA_PEDIDO],[FECHA_ENVIO],
[TARJETA],[CANTIDAD])
VALUES (1,121212,1,GETDATE(),GETDATE(),'9005654525',1)

También podría gustarte