-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathQuerryFile.sql
More file actions
126 lines (116 loc) · 3.88 KB
/
Copy pathQuerryFile.sql
File metadata and controls
126 lines (116 loc) · 3.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
-- Create Database
CREATE DATABASE IF NOT EXISTS ProTrackDB;
USE ProTrackDB;
-- Clients Table
CREATE TABLE Clients (
client_id INT AUTO_INCREMENT PRIMARY KEY,
client_name VARCHAR(100) NOT NULL,
contact_person VARCHAR(100),
email VARCHAR(100),
phone VARCHAR(15),
company_name VARCHAR(100),
address TEXT,
industry_type ENUM('Technology', 'Finance', 'Healthcare', 'Other')
);
-- Projects Table
CREATE TABLE Projects (
project_id INT AUTO_INCREMENT PRIMARY KEY,
project_name VARCHAR(100) NOT NULL,
client_id INT,
project_type ENUM('Development', 'Service') NOT NULL,
start_date DATE,
end_date DATE,
status ENUM('Proposed', 'In Progress', 'Completed', 'On Hold') NOT NULL,
priority ENUM('High', 'Medium', 'Low') NOT NULL,
budget DECIMAL(10, 2),
description TEXT,
FOREIGN KEY (client_id) REFERENCES Clients(client_id) ON DELETE CASCADE
);
-- Developers Table
CREATE TABLE Developers (
developer_id INT AUTO_INCREMENT PRIMARY KEY,
developer_name VARCHAR(100) NOT NULL,
email VARCHAR(100),
phone VARCHAR(15),
specialization VARCHAR(50),
experience_level ENUM('Junior', 'Mid-level', 'Senior'),
availability_status ENUM('Available', 'Unavailable'),
hourly_rate DECIMAL(10, 2)
);
-- Assignments Table
CREATE TABLE Assignments (
assignment_id INT AUTO_INCREMENT PRIMARY KEY,
project_id INT,
developer_id INT,
role VARCHAR(50),
hours_allocated DECIMAL(5, 2),
assigned_date DATE,
completion_status ENUM('Assigned', 'In Progress', 'Completed'),
FOREIGN KEY (project_id) REFERENCES Projects(project_id) ON DELETE CASCADE,
FOREIGN KEY (developer_id) REFERENCES Developers(developer_id) ON DELETE CASCADE
);
-- Costs Table
CREATE TABLE Costs (
cost_id INT AUTO_INCREMENT PRIMARY KEY,
project_id INT,
description VARCHAR(255),
amount DECIMAL(10, 2),
due_date DATE,
payment_status ENUM('Paid', 'Pending', 'Overdue'),
invoice_number VARCHAR(50),
FOREIGN KEY (project_id) REFERENCES Projects(project_id) ON DELETE CASCADE
);
-- Tasks Table
CREATE TABLE Tasks (
task_id INT AUTO_INCREMENT PRIMARY KEY,
project_id INT,
developer_id INT,
task_name VARCHAR(100),
description TEXT,
priority ENUM('High', 'Medium', 'Low'),
status ENUM('To Do', 'In Progress', 'Review', 'Completed') NOT NULL,
estimated_hours DECIMAL(5, 2),
deadline DATE,
actual_hours_spent DECIMAL(5, 2),
dependencies VARCHAR(100), -- This could refer to other task_ids
FOREIGN KEY (project_id) REFERENCES Projects(project_id) ON DELETE CASCADE,
FOREIGN KEY (developer_id) REFERENCES Developers(developer_id) ON DELETE SET NULL
);
-- Milestones Table
CREATE TABLE Milestones (
milestone_id INT AUTO_INCREMENT PRIMARY KEY,
project_id INT,
milestone_name VARCHAR(100),
description TEXT,
due_date DATE,
status ENUM('Not Started', 'In Progress', 'Completed') NOT NULL,
FOREIGN KEY (project_id) REFERENCES Projects(project_id) ON DELETE CASCADE
);
-- Payments Table
CREATE TABLE Payments (
payment_id INT AUTO_INCREMENT PRIMARY KEY,
client_id INT,
amount DECIMAL(10, 2),
payment_date DATE,
payment_method ENUM('Bank Transfer', 'Credit Card', 'PayPal'),
payment_status ENUM('Confirmed', 'Pending'),
FOREIGN KEY (client_id) REFERENCES Clients(client_id) ON DELETE CASCADE
);
-- User Roles Table
CREATE TABLE UserRoles (
user_id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password_hash VARCHAR(255) NOT NULL,
role ENUM('Admin', 'Manager', 'Developer', 'Client') NOT NULL,
permissions TEXT
);
-- Audit Logs Table
CREATE TABLE AuditLogs (
log_id INT AUTO_INCREMENT PRIMARY KEY,
entity_name VARCHAR(50),
entity_id INT,
action VARCHAR(50),
user_id INT,
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES UserRoles(user_id) ON DELETE SET NULL
);