- Employees
CREATE TABLE Employees (
EmployeeID INT IDENTITY PRIMARY KEY,
FirstName NVARCHAR(50),
LastName NVARCHAR(50),
RoleType VARCHAR(20) CHECK (RoleType IN ('Consultant', 'Contractor')),
Email NVARCHAR(100),
HourlyRate DECIMAL(10,2),
IsActive BIT DEFAULT 1
);
- Clients
CREATE TABLE Clients (
ClientID INT IDENTITY PRIMARY KEY,
ClientName NVARCHAR(100),
ContactPerson NVARCHAR(100),
Email NVARCHAR(100),
Phone NVARCHAR(20)
);
- Projects
CREATE TABLE Projects (
ProjectID INT IDENTITY PRIMARY KEY,
ProjectName NVARCHAR(100),
ClientID INT FOREIGN KEY REFERENCES Clients(ClientID),
StartDate DATE,
EndDate DATE NULL
);
- TimeEntries
CREATE TABLE TimeEntries (
TimeEntryID INT IDENTITY PRIMARY KEY,
EmployeeID INT FOREIGN KEY REFERENCES Employees(EmployeeID),
ProjectID INT FOREIGN KEY REFERENCES Projects(ProjectID),
WorkDate DATE,
HoursWorked DECIMAL(5,2),
WorkDescription NVARCHAR(255),
IsBilled BIT DEFAULT 0
);
- Invoices
CREATE TABLE Invoices (
InvoiceID INT IDENTITY PRIMARY KEY,
ClientID INT FOREIGN KEY REFERENCES Clients(ClientID),
InvoiceDate DATE,
TotalAmount DECIMAL(10,2),
IsPaid BIT DEFAULT 0
);
- InvoiceDetails
CREATE TABLE InvoiceDetails (
InvoiceDetailID INT IDENTITY PRIMARY KEY,
InvoiceID INT FOREIGN KEY REFERENCES Invoices(InvoiceID),
TimeEntryID INT FOREIGN KEY REFERENCES TimeEntries(TimeEntryID),
BilledAmount AS (HoursWorked * Rate) PERSISTED,
Rate DECIMAL(10,2)
);