-
Notifications
You must be signed in to change notification settings - Fork 0
Diagrama de base de datos
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.
+-----------------------+ +-----------------------+ +-----------------------+
| 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) |
+----------------------+
-
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.
-
-
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.
-
-
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).
-
-
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.
-
-
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).
-
-
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).
-
-
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).
-
-
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.
CREATE TABLE Users (
id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
email VARCHAR(100),
password VARCHAR(100)
);
CREATE TABLE Administrators (
id INT PRIMARY KEY REFERENCES Users(id),
created_by INT,
uploaded_documents VARCHAR(255),
status VARCHAR(50)
);
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)
);
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
);
CREATE TABLE Lots (
id INT PRIMARY KEY,
size FLOAT,
status VARCHAR(50),
project_id INT REFERENCES Projects(id)
);
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)
);
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)
);
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)
);
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.