Instituto Politécnico Nacional
Escuela Superior de Computo
Base de Datos
PROYECTO FINAL
“Base de datos de una
tienda en línea”
Integrantes:
Rendón Ruiz Fabricio
Reyes Espinosa Miguel Ángel
Grupo: 3CM4
Profesora: Ana Juárez Méndez
Fecha de realización:
06 de Enero de 2024
Fecha de entrega:
07 de Enero de 2024
Introducción
En el presente documento redactaremos el proceso que se llevó a cabo para la
realización de nuestro proyecto para la asignatura de base de datos, el cual tiene
como objetivo poner en práctica todos los conocimientos adquiridos durante el
curso. El proyecto implicaba la realización de la base de datos desde cero, es
decir desde el modelado con el modelo entidad-relación, el modelado relacional, y
por último la creación y diseño de la base de datos en el software pgAdmin4.
Posteriormente la realización de consultas con las sentencias y estructuras vistas
en clase.
El tema para la creación de la base de datos era una tienda en línea de venta de
artículos deportivos, en donde con ayuda del texto con todas las características de
la tienda, es decir como era el proceso de compra desde que tipos de usuarios
existían(administradores y clinetes), los productos que se vendían(ropa,
accesorios y calzado) incluyendo para que personas estaban disponibles, es decir
hombre, mujer, unisex o niño, además de todas las características como el precio,
las tallas, y la existencias que habían. Tambien los pedidos tenían que ser
registrados, esto con ayuda de información relevante como el pago que era con
tarjeta expedida por un banco, la paquetería que entregaba el paquete, la persona
que recoge el paquete, las fechas importantes y más información relevante como
la dirección de los Administradores y los clientes.
Diagrama entidad-relación.
Para el diagrama entidad-relación pusimos a prueba nuestros conocimientos que
por medio del texto lo transformamos a él diagrama entidad-relación.
Párrafo 1: “Una tienda quiere manejar todas sus ventas en línea. La tienda cuenta
con usuarios Administradores y clientes, de todos ellos cuenta con un id que los
identifica, su nombre completo, su edad, su estado civil, su género, teléfonos
asociados, fecha de nacimiento, nombre de usuario, contraseña, correo
electrónico y foto.”
Leyendo notamos que la tienda contaba con dos tipos de usuarios, los cuales eran
usuarios administradores y usuarios clientes, por lo tanto nuestra entidad principal
era usuario, con los atributos que menciona en el párrafo (nombre completo, su
edad, su estado civil, su género, teléfonos asociados, fecha de nacimiento,
nombre de usuario, contraseña, correo electrónico y foto), de nuestra entidad
usuario se desprendían dos subclases haciendo referencia a los tipos de usuarios
que existían mencionados anteriormente.
Parrafo2: “De los clientes además se necesitan conocer su(s) dirección(es) de
envío (tipo, número interior, número exterior, calle, colonia, código postal,
delegación o municipio, estado o ciudad, país), y el tipo de cuenta que tiene
(básico, premium, oro). Los clientes tienen dados de alta a varias personas para
que reciban su pedido, de las cuales solo se conoce el nombre completo.”
En el párrafo anterior notamos que la entidad cliente cuenta con una dirección, la
cual hace referencia al domicilio donde habita el cliente, además que se relaciona
con una persona que puede recoger su pedido, entonces creamos una entidad
débil titulada persona, la cual tiene como atributos su nombre y apellidos y se
relaciona con el cliente, recordando que una persona a cargo puede estar
relacionada con 2 o más clientes.
Párrafo 3: “De los administradores se necesita conocer la dirección donde vive
(tipo, número interior, número exterior, calle, colonia, código postal, delegación o
municipio, estado o ciudad, país).”
A partir de este apartado decidimos crear una entidad llamada dirección, la cual
nos permite que esta se relacione con dos entidades, la cuales son administrador
y cliente, en donde nos pareció más práctico guardar todas las direcciones en un
mismo lugar pero que cada una esté relacionada dependiendo si es del cliente o
administrador.
Párrafo 4: “Los clientes pueden dar de alta varios números de cuentas de banco
para pagar, de ellas se desea conocer la fecha de vencimiento y el número. Las
cuentas pertenecen solo a un banco emisor, del cual se quiere conocer el
nombre.”
En el párrafo anterior creamos 2 entidades nuevas, las cuales son número de
cuenta y banco, en las cuales en la primera entidad tiene como atributos la fecha
de vencimiento de la tarjeta y el respectivo número de cuenta, luego tenemos al
banco con su nombre, y de igual manera se menciona la relación del cliente con el
número de cuenta como forma de pago y a la tarjeta con el banco emisor de ella.
Párrafo 5: “La tienda vente productos deportivos de los cuales se tiene un id, su
precio, un nombre de producto, su marca y su existencia, los productos pueden
ser para varios tipos de deportes para el que se ocupa (coloca al menos 5 tipos).”
Podemos leer que se crea otra entidad llamada productos con sus respectivos
atributos agregando que pueden ser usados para tipos de deportes diferentes.
Párrafo 6: “Los productos pueden ser ropa, calzado o accesorios. De la ropa se
conoce si es para mujer, hombre o niños, color(es), del calzado se requiere
conocer el número y una descripción de las características y de los accesorios
solo una descripción. De la ropa y el calzado puede haber varias tallas.”
De nuestra entidad principal que es producto, se desprenden 3 subentidades que
hacen referencia a los tipos de productos que pueden ser, además que se les
agregan atributos a las subentidades como y en donde vemos que se genera otra
entidad que relacionan a la ropa y al calzado el cual es la talla.
Párrafo 7: “Los clientes realizan pedidos a la tienda, de estos se conoce una
dirección de envío, referencias de dicha dirección, la cantidad a pagar, los pedidos
pueden tener varios productos junto con la cantidad de cada uno y si hay o no
descuento en ellos. Los pedidos también pueden estar asociados a uno o más
números de cuenta para efectuar el pago, de cada una indicar qué cantidad se va
a pagar del total. De los pedidos también se desea conocer la fecha en que se
realizó el pedido, y la fecha en la que se entregó junto con la persona que recibió
el pedido. Cada pedido es entregado por una paquetería, de la cual solo se
conoce el nombre y la razón social. La tienda está asociada con varias
paqueterías para la entrega de sus pedidos, pero cada pedido solo es entregado
por una paquetería.”
En este último párrafo a transformar leemos que se crea la entidad pedidos con
sus atributos correspondientes, en donde primero lo relacionamos con la dirección
de envío, las referencias que tiene la dirección la cantidad a pagar y que se
relaciona con los productos de manera que un pedido puede tener muchos
productos, y si existen descuentos. Además, se relaciona con la entidad de tarjeta
ya que puede tener dos tarjetas registradas en la tienda, tambien se relaciona con
la persona que recibe el pedido previamente registrado por el cliente. Por último,
vemos que la tienda tiene relación con paqueterías para entregar los pedidos,
siendo que una paquetería puede entregar varios pedidos, pero que no todas
pueden estar entregando el mismo pedido.
Resultado final de diagrama entidad-relación:
Conversión del diagrama entidad-relación al diagrama relacional:
En este apartado aplicamos las reglas necesarias para pasar del modelo entidad-
relación al modelo relacional, de manera que podamos ver de una manera más
detallada las relaciones entre tablas que existen.
Aclarando que, para poder hacer las transformaciones necesarias, recurrimos a
las cardinalidades de las relaciones que se muestran en el modelo entidad-
relación, siendo estas las existentes: 1-n, n-m y 1-1.
Normalización.
Podemos observar que el diagrama relacional cuenta con algunas complicaciones
al momento de hacer consultas y obtener ciertos datos específicos, por ello
recurrimos a la normalización de las tablas.
En primera instancia, algunas tablas ya se encuentran normalizadas, sin embargo,
hay otras que necesitan ser normalizadas, como el caso de la tabla productos
¿Primera forma normal?
Podemos observar que la tabla ya se encuentra en primera forma normal, ya que
no existen datos no atómicos.
¿Segunda forma normal?
No, ya que atributos como marca y tipoi de producto no dependen directamente
del ide producto, ya que muchos productos iguales pueden ser de diferentes
marcas, e igualmente pasa en tipo de deporte, ya que muchos artículos pueden
ser usados para diferentes tipos de deportes y por lo tanto tienen diferentes usos
oficiales.
Como resultado tenemos la creación de catálogos con las diferentes marcas que
tenga la tienda, y los diferentes deportes que tiene la tienda, y como la relación es
de muchos a muchos en ambos casos, se hace la realización de marca con
producto, y la relación de tipos de deporte con productos.
Ahora vemos que la tabla dirección, no se encuentra normalizada.
¿1era FN? Si, ya que todos los atributos son atómicos.
¿2da FN? Si, ya que existen dependencias funcionales parciales.
¿3ra FN? No ya que existen las siguientes dependencias transitivas:
Id_dir: no_int, no_ext, calle.
Calle: colonia.
Colonia: Delegación. C.P:
Delegación Delegación: Estado.
Estado: País.
Por lo tanto, quedaría de la siguiente forma
Como resultado tenemos la creación de tablas que se crearon para eliminar la
transitividad que existían entre los atributos anteriores.
Finalmente vemos que todas las tablas se encuentran normalizadas para el
manejo de manera eficaz de la base de datos, por lo tanto, la normalización
quedaría de la siguiente manera:
Finalmente con el modelo ya normalizado pasamos a la creación de la base de
datos en el software pgAdmin, donde de la misma manera pusimos a prueba los
conocimientos de las clases, con las sentencias de crear tablas, con los atributos,
declarando llaves primarias y foráneas, a demas de crear registros y consultas que
hacen ver el funcionamiento de la base de datos correctamente cumpliendo el
objetivo que era poner en práctica los conocimientos para la creación de la base
de datos desde los modelados.