{"id":31675481,"url":"https://github.com/kathyalde21/ventas_abp2_ae5","last_synced_at":"2025-10-08T05:02:01.542Z","repository":{"id":315689415,"uuid":"1039764682","full_name":"KathyAlde21/ventas_abp2_ae5","owner":"KathyAlde21","description":"Base de datos relacionada con las ventas que contiene 5 tablas de forma inicial y se agregan 3 más","archived":false,"fork":false,"pushed_at":"2025-09-20T03:29:46.000Z","size":249,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-09-20T05:34:17.620Z","etag":null,"topics":["bootcamp-desarrollo-aplicaciones-moviles","create-table","mysql","mysql-database"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KathyAlde21.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-17T23:52:22.000Z","updated_at":"2025-09-20T03:29:49.000Z","dependencies_parsed_at":"2025-09-20T05:34:18.778Z","dependency_job_id":"a9a22ce9-5223-4ccb-88bb-38a107e3ada1","html_url":"https://github.com/KathyAlde21/ventas_abp2_ae5","commit_stats":null,"previous_names":["kathyalde21/ventas_abp2_ae5"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/KathyAlde21/ventas_abp2_ae5","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KathyAlde21%2Fventas_abp2_ae5","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KathyAlde21%2Fventas_abp2_ae5/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KathyAlde21%2Fventas_abp2_ae5/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KathyAlde21%2Fventas_abp2_ae5/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KathyAlde21","download_url":"https://codeload.github.com/KathyAlde21/ventas_abp2_ae5/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KathyAlde21%2Fventas_abp2_ae5/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278891753,"owners_count":26063858,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bootcamp-desarrollo-aplicaciones-moviles","create-table","mysql","mysql-database"],"created_at":"2025-10-08T05:00:50.054Z","updated_at":"2025-10-08T05:02:01.537Z","avatar_url":"https://github.com/KathyAlde21.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"**_\u003ch1 align=\"center\"\u003e:vulcan_salute: BBDD Ventas ABP2_AE5:computer:\u003c/h1\u003e_**\n\n**\u003ch3\u003e:blue_book: Contexto de la Actividad:\u003c/h3\u003e**\n\n\u003cp\u003eEste ejercicio es la continuación del ejercicio individual del presente aprendizaje esperado.\u003c/p\u003e\n\u003cp\u003eUn negocio minorista desea llevar registro de las ventas diarias realizadas. Hasta hace un tiempo, el modelo de datos que tenían era el siguiente:\u003c/p\u003e\n\n\u003cimg src=\"./img/wireframes/wireframe_bbdd.jpg\" alt=\"Wireframe Base de Datos\" style=\"width: 80%;\"\u003e\n\n**\u003ch3\u003e:orange_book: Requerimiento:\u003c/h3\u003e**\n\n\u003cp\u003eA este modelo se desea agregar las siguientes tablas:\u003c/p\u003e\n\u003cul\u003e\n  \u003cli\u003eUna tabla que permita registrar las facturas generadas. Cada factura se asocia a una venta específica, y cada venta al mismo tiempo puede ser cancelada a través de una o más facturas. De cada factura interesa saber su número único y correlativo, la fecha de generación, la fecha de pago, el monto de la factura, el subtotal, el impuesto y el total.\u003c/li\u003e\n  \u003cli\u003eUna tabla que permita almacenar órdenes de compra. De cada orden de compra se debe registrar un código único, una fecha de creación, el nombre del trabajador que la autoriza y un campo que permita registrar observaciones. Es necesario destacar que cada venta solo tendrá una orden de compra asociada.\u003c/li\u003e\n  \u003cli\u003eTUna tabla que permita almacenar las adquisiciones realizadas para cada producto. En esta tabla se debe registrar un número correlativo, la fecha de compra, el nombre del proveedor y la cantidad adquirida.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eComo parte de este ejercicio se pide realizar un modelo de datos que contenga las tablas del modelo inicial más aquellas que se indican anteriormente.\u003c/p\u003e\n\n**\u003ch3\u003e:green_book: Construcción de la Base de Datos Original:\u003c/h3\u003e**\n\n\u003cp\u003eABP2 AE5 – MODELO ENTIDAD RELACIÓN (DDL) - TABLA INICIAL\u003c/p\u003e\n\n```SQL\n-- ======================================================\n-- 1) CATEGORIA\n-- ======================================================\nCREATE TABLE categoria (\n  idcategoria int NOT NULL,\n  nombrecategoria varchar(75) NOT NULL,\n  PRIMARY KEY (idcategoria)\n);\n\n-- ======================================================\n-- 2) CLIENTES\n-- ======================================================\nCREATE TABLE clientes (\n  idcliente int NOT NULL,\n  nombres varchar(50) NOT NULL,\n  apellidos varchar(50) NOT NULL,\n  direccion varchar(70) DEFAULT NULL,\n  telefono int DEFAULT NULL,\n  PRIMARY KEY (idcliente)\n);\n\n-- ======================================================\n-- 3) DETALLE VENTA\n-- ======================================================\nCREATE TABLE detalleventa (\n  ventas_idventa int NOT NULL,\n  producto_idproducto int NOT NULL,\n  cantidad int DEFAULT NULL,\n  PRIMARY KEY (ventas_idventa, producto_idproducto),\n  KEY idx_detalle_venta (ventas_idventa),\n  KEY idx_detalle_producto (producto_idproducto),\n  CONSTRAINT detalleventa_ibfk_1 FOREIGN KEY (ventas_idventa) REFERENCES ventas (idventa),\n  CONSTRAINT detalleventa_ibfk_2 FOREIGN KEY (producto_idproducto) REFERENCES producto (idproducto)\n);\n\n-- ======================================================\n-- 4) PRODUCTO\n-- ======================================================\nCREATE TABLE producto (\n  idproducto int NOT NULL,\n  nombreproducto varchar(50) NOT NULL,\n  valor int NOT NULL,\n  categoria_idcategoria int NOT NULL,\n  PRIMARY KEY (idproducto),\n  KEY idx_producto_categoria (categoria_idcategoria),\n  CONSTRAINT producto_categoria_fk FOREIGN KEY (categoria_idcategoria) REFERENCES categoria (idcategoria) ON DELETE RESTRICT ON UPDATE CASCADE\n);\n\n-- ======================================================\n-- 5) VENTAS\n-- ======================================================\nCREATE TABLE ventas (\n  idventa int NOT NULL,\n  vendedor varchar(50) DEFAULT NULL,\n  cantarticulos int NOT NULL,\n  subtotal int NOT NULL,\n  impuesto int NOT NULL,\n  total int NOT NULL,\n  clientes_idcliente int NOT NULL,\n  PRIMARY KEY (idventa),\n  KEY idx_ventas_cliente (clientes_idcliente),\n  CONSTRAINT ventas_ibfk_1 FOREIGN KEY (clientes_idcliente) REFERENCES clientes (idcliente)\n);\n\n-- ============================\n-- Verificación rápida\n-- ============================\nSHOW TABLES;\nSHOW CREATE TABLE categoria;\nSHOW CREATE TABLE clientes;\nSHOW CREATE TABLE detalleventa;\nSHOW CREATE TABLE producto;\nSHOW CREATE TABLE ventas;\n```\n\n**\u003ch3\u003e:blue_book: Consultas ejecutadas:\u003c/h3\u003e**\n\n\u003cp\u003eModificando la base de datos migrando incorporando tres tablas:\u003c/p\u003e\n\n```SQL\n-- ============================================================\n-- 1) FACTURA: varias facturas pueden cancelar una misma venta\n-- ============================================================\nCREATE TABLE factura (\n  numfactura INT NOT NULL AUTO_INCREMENT,          -- número único y correlativo\n  fecha_generacion DATE NOT NULL,\n  fecha_pago DATE DEFAULT NULL,\n  monto INT NOT NULL,                              -- monto de la factura (por ejemplo, monto pagado)\n  subtotal INT NOT NULL,\n  impuesto INT NOT NULL,\n  total INT NOT NULL,\n  venta_idventa INT NOT NULL,                      -- FK a ventas\n  PRIMARY KEY (numfactura),\n  KEY idx_factura_venta (venta_idventa),\n  CONSTRAINT factura_venta_fk\n    FOREIGN KEY (venta_idventa)\n    REFERENCES ventas (idventa)\n    ON UPDATE CASCADE\n    ON DELETE RESTRICT,\n  CHECK (subtotal \u003e= 0),\n  CHECK (impuesto \u003e= 0),\n  CHECK (total = subtotal + impuesto)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n\n-- ==========================================================================\n-- 2) ORDEN_COMPRA: relación 1 a 1 con venta (cada venta tiene una sola orden)\n-- ==========================================================================\nCREATE TABLE orden_compra (\n  idorden_compra INT NOT NULL AUTO_INCREMENT,\n  fecha_creacion DATE NOT NULL,\n  autorizado_por VARCHAR(100) NOT NULL,\n  observaciones VARCHAR(255) DEFAULT NULL,\n  venta_idventa INT NOT NULL,                      -- FK a ventas (UNIQUE para forzar 1 a 1)\n  PRIMARY KEY (idorden_compra),\n  UNIQUE KEY uq_orden_compra_venta (venta_idventa),\n  CONSTRAINT orden_compra_venta_fk\n    FOREIGN KEY (venta_idventa)\n    REFERENCES ventas (idventa)\n    ON UPDATE CASCADE\n    ON DELETE RESTRICT\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n\n-- =============================================================================\n--   3) ADQUISICION_PRODUCTO: adquisiciones/compras de stock por producto (N a 1)\n-- =============================================================================\nCREATE TABLE adquisicion_producto (\n  idadquisicion INT NOT NULL AUTO_INCREMENT,       -- correlativo\n  fecha_compra DATE NOT NULL,\n  proveedor VARCHAR(120) NOT NULL,\n  cantidad INT NOT NULL,\n  producto_idproducto INT NOT NULL,                -- FK a producto\n  PRIMARY KEY (idadquisicion),\n  KEY idx_adq_producto (producto_idproducto),\n  CONSTRAINT adq_producto_fk\n    FOREIGN KEY (producto_idproducto)\n    REFERENCES producto (idproducto)\n    ON UPDATE CASCADE\n    ON DELETE RESTRICT,\n  CHECK (cantidad \u003e 0)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n\nSHOW TABLES;\nSHOW CREATE TABLE factura;\nSHOW CREATE TABLE orden_compra;\nSHOW CREATE TABLE adquisicion_producto;\n```\n\n**\u003ch3\u003e📁 Estructura del Proyecto:\u003c/h3\u003e**\n\n```\n📁 abp_ae5_clinica_san_patras\n├── 📘 README.md\n├─── 📁 img\n│   └── 🖼️ eer_diagram.jpg\n└──  📁 mysql\n    └── 🟩 eer_diagram.mwb\n    └── 🟩 creando_tablas_M4_ABP_AE5.sql\n```\n\n**\u003ch3\u003e:book: EER Diagram Final:\u003c/h3\u003e**\n\n\u003cimg src=\"./img/eer_diagram.jpg\" alt=\"EER Diagram\" style=\"width: 80%;\"\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkathyalde21%2Fventas_abp2_ae5","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkathyalde21%2Fventas_abp2_ae5","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkathyalde21%2Fventas_abp2_ae5/lists"}