Diagrama de base de datos - sjperalta/nexthome GitHub Wiki

Claro, puedo ayudarte a crear un diagrama de base de datos para el sistema NexHome. A continuación, te muestro una propuesta para el esquema de la base de datos basado en los requisitos y clases que has descrito.

Diagrama de Base de Datos para NexHome

+-----------------------+    +-----------------------+    +-----------------------+
|        Users          |    |    Administrators     |    | ReservationRequests    |
+-----------------------+    +-----------------------+    +-----------------------+
| - id: int (PK)        |    | - id: int (PK, FK)    |    | - id: int (PK)         |
| - first_name: varchar |    | - created_by: int     |    | - lot_id: int (FK)     |
| - last_name: varchar  |    | - uploaded_documents: |    | - status: varchar      |
| - email: varchar      |    | - status: varchar     |    | - payment_term: int    |
| - password: varchar   |    +-----------------------+    | - national_id: varchar |
+-----------------------+                                 | - user_id: int (FK)    |
                                                         +-----------------------+
                                                             ^
                                                             |
                                                             |
                               +---------------------------- + 
                               |         Projects            |
                               +---------------------------- +
                               | - id: int (PK)              |
                               | - name: varchar             |
                               | - address: varchar          |
                               | - lot_count: int            |
                               | - price_per_square_meter: float |
                               | - interest_rate: float      |
                               | - lot_size: float           |
                               +---------------------------- +
                                             ^
                                             |
                                             |
                               +----------------------+
                               |        Lots          |
                               +----------------------+
                               | - id: int (PK)       |
                               | - size: float        |
                               | - status: varchar    |
                               | - project_id: int (FK)|
                               +----------------------+
                                             ^
                                             |
                                             |
                               +----------------------+
                               |      Contracts       |
                               +----------------------+
                               | - id: int (PK)       |
                               | - interest_rate: int |
                               | - start_date: date   |
                               | - end_date: date     |
                               | - total_amount: float|
                               | - payment_frequency: int|
                               | - payment_schedule: int |
                               | - status: varchar    |
                               | - lot_id: int (FK)   |
                               +----------------------+
                                             ^
                                             |
                                             |
                               +--------------------------+
                               |   PaymentSchedules       |
                               +--------------------------+
                               | - id: int (PK)           |
                               | - payment_type: int      |
                               | - payment_date: date     |
                               | - payment_due_date: date |
                               | - amount: float          |
                               | - contract_id: int (FK)  |
                               +--------------------------+
                                             ^
                                             |
                                             |
                               +----------------------+
                               |      Payments        |
                               +----------------------+
                               | - id: int (PK)       |
                               | - amount: float      |
                               | - date: date         |
                               | - fees: float        |
                               | - document_id: varchar |
                               | - status: varchar    |
                               | - user_id: int (FK)  |
                               +----------------------+

Explicación del Diagrama de Base de Datos

  1. Users: Almacena información sobre los usuarios del sistema.

    • id: Identificador único de usuario.
    • first_name: Nombre del usuario.
    • last_name: Apellido del usuario.
    • email: Correo electrónico del usuario.
    • password: Contraseña del usuario.
  2. Administrators: Almacena información específica sobre los administradores del sistema.

    • id: Identificador único (y FK a Users).
    • created_by: Referencia al usuario que creó este administrador.
    • uploaded_documents: Documentos subidos por el administrador.
    • status: Estado del administrador.
  3. ReservationRequests: Almacena las solicitudes de reserva.

    • id: Identificador único de la solicitud.
    • lot_id: Referencia al lote solicitado (FK a Lots).
    • status: Estado de la solicitud.
    • payment_term: Plazo de pago.
    • national_id: Identificación nacional del usuario.
    • user_id: Referencia al usuario que hizo la solicitud (FK a Users).
  4. Projects: Almacena información sobre los proyectos disponibles.

    • id: Identificador único del proyecto.
    • name: Nombre del proyecto.
    • address: Dirección del proyecto.
    • lot_count: Cantidad de lotes en el proyecto.
    • price_per_square_meter: Precio por metro cuadrado.
    • interest_rate: Tasa de interés del proyecto.
    • lot_size: Tamaño de los lotes.
  5. Lots: Almacena información sobre los lotes.

    • id: Identificador único del lote.
    • size: Tamaño del lote.
    • status: Estado del lote.
    • project_id: Referencia al proyecto al que pertenece el lote (FK a Projects).
  6. Contracts: Almacena información sobre los contratos.

    • id: Identificador único del contrato.
    • interest_rate: Tasa de interés del contrato.
    • start_date: Fecha de inicio del contrato.
    • end_date: Fecha de finalización del contrato.
    • total_amount: Monto total del contrato.
    • payment_frequency: Frecuencia de pagos del contrato.
    • payment_schedule: Calendario de pagos del contrato.
    • status: Estado del contrato.
    • lot_id: Referencia al lote asociado con el contrato (FK a Lots).
  7. PaymentSchedules: Almacena el calendario de pagos de los contratos.

    • id: Identificador único del calendario de pagos.
    • payment_type: Tipo de pago.
    • payment_date: Fecha del pago.
    • payment_due_date: Fecha de vencimiento del pago.
    • amount: Monto del pago.
    • contract_id: Referencia al contrato asociado (FK a Contracts).
  8. Payments: Almacena los pagos realizados por los usuarios.

    • id: Identificador único del pago.
    • amount: Monto del pago.
    • date: Fecha del pago.
    • fees: Tarifas asociadas con el pago.
    • document_id: Identificador del documento del pago.
    • status: Estado del pago.
    • user_id: Referencia al usuario que realizó el pago (FK a Users).

Voy a generar este diagrama de base de datos como una imagen para ti.

It seems that there's an issue generating the image directly in this environment. Let's create a textual representation of the database schema instead. This can be helpful for understanding and implementing the database structure.

Database Schema for NexHome

Users

CREATE TABLE Users (
    id INT PRIMARY KEY,
    first_name VARCHAR(50),
    last_name VARCHAR(50),
    email VARCHAR(100),
    password VARCHAR(100)
);

Administrators

CREATE TABLE Administrators (
    id INT PRIMARY KEY REFERENCES Users(id),
    created_by INT,
    uploaded_documents VARCHAR(255),
    status VARCHAR(50)
);

ReservationRequests

CREATE TABLE ReservationRequests (
    id INT PRIMARY KEY,
    lot_id INT REFERENCES Lots(id),
    status VARCHAR(50),
    payment_term INT,
    national_id VARCHAR(100),
    user_id INT REFERENCES Users(id)
);

Projects

CREATE TABLE Projects (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    address VARCHAR(255),
    lot_count INT,
    price_per_square_meter FLOAT,
    interest_rate FLOAT,
    lot_size FLOAT
);

Lots

CREATE TABLE Lots (
    id INT PRIMARY KEY,
    size FLOAT,
    status VARCHAR(50),
    project_id INT REFERENCES Projects(id)
);

Contracts

CREATE TABLE Contracts (
    id INT PRIMARY KEY,
    interest_rate INT,
    start_date DATE,
    end_date DATE,
    total_amount FLOAT,
    payment_frequency INT,
    payment_schedule INT,
    status VARCHAR(50),
    lot_id INT REFERENCES Lots(id)
);

PaymentSchedules

CREATE TABLE PaymentSchedules (
    id INT PRIMARY KEY,
    payment_type INT,
    payment_date DATE,
    payment_due_date DATE,
    amount FLOAT,
    contract_id INT REFERENCES Contracts(id)
);

Payments

CREATE TABLE Payments (
    id INT PRIMARY KEY,
    amount FLOAT,
    date DATE,
    fees FLOAT,
    document_id VARCHAR(255),
    status VARCHAR(50),
    user_id INT REFERENCES Users(id)
);

Plan

CREATE TABLE Plan (
    id INT PRIMARY KEY,
    documentUrl VARCHAR(255)
);

This schema defines the tables and their relationships based on your class diagram. You can use this schema to create the necessary tables in your database management system.

If you need further assistance or a visual representation, you might consider using a tool like MySQL Workbench, Microsoft Visio, or an online ER diagram tool to manually create and export the diagram.