From bdb78e69018f6e50ec59a43b09e8c4f2af67dbcc Mon Sep 17 00:00:00 2001 From: devfzn Date: Sat, 19 Aug 2023 21:27:02 -0400 Subject: [PATCH] database creation statement & er diagram --- README.md | 136 ++++++++++++++---------- database/creation_stmnt.sql | 25 +++++ database/er_diagram.mwb | Bin 0 -> 6103 bytes src/cl/com/alura/hotel/views/Exito.java | 4 +- 4 files changed, 104 insertions(+), 61 deletions(-) create mode 100644 database/creation_stmnt.sql create mode 100644 database/er_diagram.mwb diff --git a/README.md b/README.md index c1c0109..31b7c8d 100644 --- a/README.md +++ b/README.md @@ -2,32 +2,16 @@ # Challenge ONE - Hotel Alura -[ToC] - ### 🖥️ Tecnologías Utilizadas -- Java v17 +- Java OpenJDK 17 - Eclipse - Plugin WindowBuilder - MySql - Biblioteca JCalendar - Biblioteca Dotenv -> **Note** Para este desafío, concéntrate en la parte lógica y la conexión -con la base de datos, después de completar el desafío, siéntete libre de -agregar nuevas funciones y modificar la interfaz gráfica. - - -### Proyeto base - -Github [Hotel Alura](https://github.com/alura-challenges/challenge-one-alura-hotel-latam) - -:small_orange_diamond: `src/views` Directorio con la interfaz gráfica -necesaria para el programa -:small_orange_diamond: `src/imagenes` Directorio con imágenes a usar en el -proyecto - -### Requerimientos +
Requerimientos - Sistema de autenticación de usuario para que solo usuarios autorizados accedan al sistema @@ -39,16 +23,15 @@ y al valor diario. Asignar en la moneda local de tu país; p.e. una reserva de 3 dias con valor diario de $20, serian $60, todo esto deberá ser hecho automaticamente y mostrado al usuario antes de guardar la reserva - Base de datos para almacenar todos los datos pedidos anteriormente. -- Ahora te preguntarás ¿Cómo se que datos debo registrar? Para eso el líder del -proyecto puso a disposición un Diagrama de Entidad Relación que usaremos para -crear las tablas en nuestra base de Datos y que está anexado a esta tarjeta -y que también estará como una tarea en nuestro backlog. No olvides leer todas -las tarjetas. -- Periodo de tiempo de cuatro semanas para desarrollar el proyecto y por eso en -esta oportunidad se facilota la parte visual del proyecto, para centrar el -desarrollo de la lógica y funcionamiento, puedes hacer las modificaciones que -creas convenientes, y se trabaja usando el sistema ágil de desarrollo utilizando -Trello +- Diagrama de [Entidad Relación](#modelo-entidad-relación) para creación de +tablas en la base de Datos +- Periodo de tiempo de cuatro semanas para desarrollar el proyecto y por ello +se facilita la parte visual del proyecto, para centrar el desarrollo de la +lógica y funcionamiento, puedes hacer las modificaciones que creas convenientes. +Se trabaja usando el sistema ágil de desarrollo utilizando +[Trello](https://trello.com/b/qMCaaWg4/g5-challenge-hotel) + +
## :construction: Proyecto @@ -64,12 +47,12 @@ proyecto ├── 📁 bin ├── 📁 src ├── 📁 target -├── .classpath -├── .env <---- Dotenv file -├── .gitignore -├── .project -├── pom.xml -└── README.md +├── 📄 .classpath +├── 📄 .env <---- Dotenv file +├── 📄 .gitignore +├── 📄 .project +├── 📄 pom.xml +└── 📄 README.md ``` Contenido de `.env` @@ -84,42 +67,77 @@ DBPASS=password #### Modelo entidad relación -- **`huesped`** -- **`reserva`** clave externa (***foreign key***) **idReserva** +- **Tabla `HUESPED`** +- **Tabla `RESERVA`** - Foreign key *`id_huesped`* ```mermaid erDiagram - Huesped ||--|{ Reserva : tiene - Huesped { - Id int PK "NN NB" - Nombre varchar "bla bla" - Apellido varchar "bla bla" - Fecha_Nacimiento date "1931-12-20" - Nacionalidad varchar "CL" - Telefono varchar - Id_Reserva int FK "bla bla" + HUESPED ||..o{ RESERVA : tiene + HUESPED { + id int PK "NN" + nombre varchar + apellido varchar + fecha_nacimiento date "AAAA-MM-DD" + nacionalidad varchar + telefono varchar "+00 123456789" } - Reserva { - Id int PK "NN NB" - Fecha_Entrada date "1931-12-20" - Fecha_Salida date "1931-12-20" - Valor int FK "bla bla" - Forma_Pago varchar "cheque" + RESERVA { + Id int PK "NN" + fecha_entrada date "AAAA-MM-DD" + fecha_salida date "AAAA-MM-DD" + valor int "Costo total de la reserva" + forma_pago varchar "debito, credito, efectivo, cheque" + id_huesped int FK "Huesped a quien pertenece la reserva" } ``` -### 🗔 Plugin WindowBuilder -- Explorar *Window Builder*, agregar nuevas ventanas, o cambiar el diseño -de las existentes, haz clic en el archivo **java**, luego en *Open With* -> -*Window Builder Editor* +
+ +Database creation statement + +[SQL script](./database/creation_stmnt.sql) + +```sql +CREATE DATABASE IF NOT EXISTS `hotel_alura` DEFAULT CHARACTER SET utf8mb4 +COLLATE utf8mb4_general_ci; + +USE `hotel_alura`; + +CREATE TABLE IF NOT EXISTS `huesped` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `nombre` varchar(20) NOT NULL, + `apellido` varchar(20) NOT NULL, + `fecha_nacimiento` date DEFAULT NULL, + `nacionalidad` varchar(20) DEFAULT NULL, + `telefono` varchar(20) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 +COLLATE=utf8mb4_general_ci; + +CREATE TABLE IF NOT EXISTS `reserva` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `fecha_entrada` date NOT NULL, + `fecha_salida` date NOT NULL, + `valor` double NOT NULL, + `forma_pago` varchar(20) NOT NULL, + `id_huesped` int(11) NOT NULL, + PRIMARY KEY (`id`), + KEY `id_huesped_idx` (`id_huesped`), + CONSTRAINT `id_huesped` FOREIGN KEY (`id_huesped`) REFERENCES `huesped` (`id`) + ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 +COLLATE=utf8mb4_general_ci; +``` + +
### :mailbox_with_mail: Entrega -1. Utilizar topico **challengeonehotelaluralatam4** en *About* -> *topics* -> -etiqueta **challengeonehotelaluralatam4** -2. Rellenar formulario de entrega con el enlace al repositorio +1. Utilizar topico **challengeonehotelaluralatam5** en *About* -> *topics* -> +etiqueta **challengeonehotelaluralatam4** ¿5? +2. Completar el formulario de entrega con el enlace al repositorio -> [Link formulario](https://lp.alura.com.br/alura-latam-entrega-challenge-one-esp-back-end) 3. ¡Añadir enlace y/o video del proyecto en Linkedin! Etiqueta a `#Oracle` y `#AluraLatam` :checkered_flag: @@ -127,6 +145,6 @@ etiqueta **challengeonehotelaluralatam4** 🧡 Oracle
[](https://www.linkedin.com/company/oracle/) -💙 Alura Latam
+:blue_heart: Alura Latam
[](https://www.linkedin.com/company/alura-latam/mycompany/) diff --git a/database/creation_stmnt.sql b/database/creation_stmnt.sql new file mode 100644 index 0000000..6f6a6f6 --- /dev/null +++ b/database/creation_stmnt.sql @@ -0,0 +1,25 @@ +CREATE DATABASE IF NOT EXISTS `hotel_alura` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; + +USE `hotel_alura`; + +CREATE TABLE IF NOT EXISTS `huesped` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `nombre` varchar(20) NOT NULL, + `apellido` varchar(20) NOT NULL, + `fecha_nacimiento` date DEFAULT NULL, + `nacionalidad` varchar(20) DEFAULT NULL, + `telefono` varchar(20) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +CREATE TABLE IF NOT EXISTS `reserva` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `fecha_entrada` date NOT NULL, + `fecha_salida` date NOT NULL, + `valor` double NOT NULL, + `forma_pago` varchar(20) NOT NULL, + `id_huesped` int(11) NOT NULL, + PRIMARY KEY (`id`), + KEY `id_huesped_idx` (`id_huesped`), + CONSTRAINT `id_huesped` FOREIGN KEY (`id_huesped`) REFERENCES `huesped` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; diff --git a/database/er_diagram.mwb b/database/er_diagram.mwb new file mode 100644 index 0000000000000000000000000000000000000000..f23263987751fc0d17c5325c7ba92c3bf80d056c GIT binary patch literal 6103 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 literal 0 HcmV?d00001 diff --git a/src/cl/com/alura/hotel/views/Exito.java b/src/cl/com/alura/hotel/views/Exito.java index f0119b4..1ad70ee 100644 --- a/src/cl/com/alura/hotel/views/Exito.java +++ b/src/cl/com/alura/hotel/views/Exito.java @@ -22,7 +22,7 @@ public class Exito extends JDialog { private final JPanel contentPanel = new JPanel(); /** - * Launch the application. + * Launch application. */ public static void main(String[] args) { try { @@ -35,7 +35,7 @@ public class Exito extends JDialog { } /** - * Create the dialog. + * Create dialog. */ public Exito() { setIconImage(Toolkit.getDefaultToolkit().getImage(Exito.class.getResource("/imagenes/aH-40px.png")));