223 lines
7.6 KiB
SQL
223 lines
7.6 KiB
SQL
-- Base de Datos Personal Assistant
|
|
CREATE DATABASE IF NOT EXISTS personal_assistant_db;
|
|
USE personal_assistant_db;
|
|
|
|
-- @table: users
|
|
-- @description: Tabla de usuarios que contiene la información básica del usuario
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
user_id INT AUTO_INCREMENT PRIMARY KEY,
|
|
username VARCHAR(50) NOT NULL,
|
|
email VARCHAR(100) NOT NULL UNIQUE,
|
|
password_hash VARCHAR(255) NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- @table: task_status
|
|
-- @description: Tabla de estados de las tareas
|
|
CREATE TABLE IF NOT EXISTS task_status (
|
|
status_id INT AUTO_INCREMENT PRIMARY KEY,
|
|
status_name VARCHAR(50) NOT NULL UNIQUE,
|
|
description TEXT
|
|
);
|
|
|
|
-- @table: tasks
|
|
-- @description: Tabla de tareas que almacena las tareas creadas por los usuarios
|
|
CREATE TABLE IF NOT EXISTS tasks (
|
|
task_id INT AUTO_INCREMENT PRIMARY KEY,
|
|
user_id INT NOT NULL,
|
|
status_id INT NOT NULL,
|
|
task_title VARCHAR(150) NOT NULL,
|
|
description TEXT,
|
|
color VARCHAR(10),
|
|
due_date DATE,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- @table: notification_types
|
|
-- @description: Tabla de tipos de notificación
|
|
CREATE TABLE IF NOT EXISTS notification_types (
|
|
type_id INT AUTO_INCREMENT PRIMARY KEY,
|
|
type_name VARCHAR(50) NOT NULL UNIQUE,
|
|
description TEXT
|
|
);
|
|
|
|
-- @table: notifications
|
|
-- @description: Tabla de notificaciones que almacena las notificaciones enviadas a los usuarios
|
|
CREATE TABLE IF NOT EXISTS notifications (
|
|
notification_id INT AUTO_INCREMENT PRIMARY KEY,
|
|
user_id INT NOT NULL,
|
|
type_id INT NOT NULL,
|
|
message TEXT NOT NULL,
|
|
is_read BOOLEAN DEFAULT FALSE,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- @table: settings
|
|
-- @description: Tabla de configuraciones del sistema
|
|
CREATE TABLE IF NOT EXISTS settings (
|
|
setting_id INT AUTO_INCREMENT PRIMARY KEY,
|
|
setting_key VARCHAR(50) NOT NULL UNIQUE,
|
|
setting_value VARCHAR(255) NOT NULL,
|
|
description TEXT,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- @table: frequencies
|
|
-- @description: Tabla de frecuencias utilizadas para ingresos y gastos
|
|
CREATE TABLE IF NOT EXISTS frequencies (
|
|
frequency_id INT AUTO_INCREMENT PRIMARY KEY,
|
|
frequency_name VARCHAR(50) NOT NULL UNIQUE,
|
|
description TEXT
|
|
);
|
|
|
|
-- @table: incomes
|
|
-- @description: Tabla de ingresos de los usuarios
|
|
CREATE TABLE IF NOT EXISTS incomes (
|
|
income_id INT AUTO_INCREMENT PRIMARY KEY,
|
|
user_id INT NOT NULL,
|
|
income_name VARCHAR(100) NOT NULL,
|
|
amount DECIMAL(10, 2) NOT NULL,
|
|
frequency_id INT NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- @table: expense_categories
|
|
-- @description: Tabla de categorías de gastos
|
|
CREATE TABLE IF NOT EXISTS expense_categories (
|
|
category_id INT AUTO_INCREMENT PRIMARY KEY,
|
|
category_name VARCHAR(100) NOT NULL UNIQUE,
|
|
description TEXT,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- @table: expenses
|
|
-- @description: Tabla de gastos de los usuarios
|
|
CREATE TABLE IF NOT EXISTS expenses (
|
|
expense_id INT AUTO_INCREMENT PRIMARY KEY,
|
|
user_id INT NOT NULL,
|
|
category_id INT NOT NULL,
|
|
expense_name VARCHAR(100) NOT NULL,
|
|
amount DECIMAL(10, 2) NOT NULL,
|
|
frequency_id INT NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- @table: email_templates
|
|
-- @description: Tabla de plantillas de correo
|
|
CREATE TABLE IF NOT EXISTS email_templates (
|
|
template_id INT AUTO_INCREMENT PRIMARY KEY,
|
|
template_name VARCHAR(100) NOT NULL UNIQUE,
|
|
html_content TEXT NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- @table: email_status
|
|
-- @description: Tabla de estados de correo
|
|
CREATE TABLE IF NOT EXISTS email_status (
|
|
status_id INT AUTO_INCREMENT PRIMARY KEY,
|
|
status_name VARCHAR(50) NOT NULL UNIQUE,
|
|
description TEXT
|
|
);
|
|
|
|
-- @table: sent_emails
|
|
-- @description: Tabla de correos enviados por el sistema
|
|
CREATE TABLE IF NOT EXISTS sent_emails (
|
|
email_id INT AUTO_INCREMENT PRIMARY KEY,
|
|
user_id INT NOT NULL,
|
|
template_id INT NOT NULL,
|
|
status_id INT NOT NULL,
|
|
subject VARCHAR(150) NOT NULL,
|
|
message TEXT NOT NULL,
|
|
sent_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- @table: healthy_recipes
|
|
-- @description: Tabla de recetas saludables
|
|
CREATE TABLE IF NOT EXISTS healthy_recipes (
|
|
recipe_id INT AUTO_INCREMENT PRIMARY KEY,
|
|
user_id INT NOT NULL,
|
|
recipe_name VARCHAR(100) NOT NULL,
|
|
description TEXT,
|
|
ingredients TEXT,
|
|
instructions TEXT,
|
|
calories DECIMAL(6, 2),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- @table: workout_routines
|
|
-- @description: Tabla de rutinas de gimnasio o calistenia
|
|
CREATE TABLE IF NOT EXISTS workout_routines (
|
|
routine_id INT AUTO_INCREMENT PRIMARY KEY,
|
|
user_id INT NOT NULL,
|
|
routine_name VARCHAR(100) NOT NULL,
|
|
description TEXT,
|
|
routine_type VARCHAR(50) NOT NULL,
|
|
exercises TEXT,
|
|
duration INT,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- @table: exercises
|
|
-- @description: Tabla de ejercicios para rutinas de gimnasio o calistenia
|
|
CREATE TABLE IF NOT EXISTS exercises (
|
|
exercise_id INT AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(100) NOT NULL,
|
|
type VARCHAR(50) NOT NULL,
|
|
muscle VARCHAR(50) NOT NULL,
|
|
equipment VARCHAR(50),
|
|
difficulty VARCHAR(20) NOT NULL,
|
|
instructions TEXT,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- @table: important_events
|
|
-- @description: Tabla de eventos importantes
|
|
CREATE TABLE IF NOT EXISTS important_events (
|
|
event_id INT AUTO_INCREMENT PRIMARY KEY,
|
|
user_id INT NOT NULL,
|
|
event_name VARCHAR(100) NOT NULL,
|
|
event_date DATE NOT NULL,
|
|
description TEXT,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- @insert: task_status
|
|
-- @description: Inserta los estados iniciales de las tareas
|
|
INSERT INTO task_status (status_name, description) VALUES
|
|
('Pendiente', 'Tarea pendiente de realizar'),
|
|
('En Proceso', 'Tarea en ejecución'),
|
|
('Completada', 'Tarea completada'),
|
|
('Cancelada', 'Tarea cancelada');
|
|
|
|
-- @insert: notification_types
|
|
-- @description: Inserta los tipos de notificación iniciales
|
|
INSERT INTO notification_types (type_name, description) VALUES
|
|
('Alerta', 'Notificación de alerta de alta prioridad'),
|
|
('Recordatorio', 'Notificación para recordar tareas o eventos'),
|
|
('Información', 'Notificación de información general');
|
|
|
|
-- @insert: settings
|
|
-- @description: Inserta configuraciones iniciales del sistema
|
|
INSERT INTO settings (setting_key, setting_value, description) VALUES
|
|
('theme', 'dark', 'Tema predeterminado de la aplicación'),
|
|
('language', 'es', 'Idioma predeterminado de la aplicación'),
|
|
('timezone', 'UTC-6', 'Zona horaria predeterminada de la aplicación');
|
|
|
|
-- @insert: frequencies
|
|
-- @description: Inserta las frecuencias de ingresos y gastos
|
|
INSERT INTO frequencies (frequency_name, description) VALUES
|
|
('Diario', 'Frecuencia diaria'),
|
|
('Semanal', 'Frecuencia semanal'),
|
|
('Mensual', 'Frecuencia mensual'),
|
|
('Anual', 'Frecuencia anual');
|