-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinitialize-database.sql
More file actions
82 lines (70 loc) · 2.33 KB
/
Copy pathinitialize-database.sql
File metadata and controls
82 lines (70 loc) · 2.33 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
-- Database Creation Script
-- ========================
-- This script establishes the structure of the database. It defines
-- the complete schema by creating all necessary tables (including
-- `Clients`, `Projects`, `Sessions`, and `Employees`) and enforces
-- data integrity through the use of primary keys, foreign keys, and
-- specific constraints like `CHECK` and `UNIQUE`.
CREATE DATABASE VD_Studio
GO
USE VD_Studio
GO
CREATE TABLE Clients (
client_id INT NOT NULL IDENTITY PRIMARY KEY,
name VARCHAR(50) NOT NULL,
phone VARCHAR(15) NOT NULL,
email VARCHAR(50) UNIQUE,
town VARCHAR(50),
address VARCHAR(50),
company_number VARCHAR(13) CHECK(LEN(company_number) IN (9, 13)),
VAT_number CHAR(11)
)
CREATE TABLE Project_types (
type_id TINYINT NOT NULL IDENTITY PRIMARY KEY,
name VARCHAR(50) NOT NULL UNIQUE
)
CREATE TABLE Projects (
project_id INT NOT NULL IDENTITY PRIMARY KEY,
type_id TINYINT NOT NULL REFERENCES Project_types(type_id),
client_id INT NOT NULL REFERENCES Clients(client_id),
name VARCHAR(100),
contract_number INT,
contract_date DATE,
price MONEY,
is_paid BIT NOT NULL DEFAULT 0,
is_completed BIT NOT NULL DEFAULT 0,
additional_notes VARCHAR(MAX)
)
CREATE TABLE Sessions (
session_id INT NOT NULL IDENTITY PRIMARY KEY,
project_id INT NOT NULL REFERENCES Projects(project_id),
location VARCHAR(100),
date_and_time DATETIME
)
CREATE TABLE Employees (
employee_id INT NOT NULL IDENTITY PRIMARY KEY,
name VARCHAR(30) NOT NULL,
surname VARCHAR(30) NOT NULL,
email VARCHAR(50) NOT NULL UNIQUE,
phone VARCHAR(15) NOT NULL,
town VARCHAR(50) NOT NULL,
address VARCHAR(50) NOT NULL,
is_active BIT NOT NULL DEFAULT 1
)
CREATE TABLE Session_teams (
session_id INT NOT NULL REFERENCES Sessions(session_id),
employee_id INT NOT NULL REFERENCES Employees(employee_id),
role VARCHAR(50) NOT NULL,
PRIMARY KEY (session_id, employee_id)
)
CREATE TABLE Skills (
skill_id TINYINT NOT NULL IDENTITY PRIMARY KEY,
name VARCHAR(20) NOT NULL UNIQUE
)
CREATE TABLE Employee_skills (
employee_id INT NOT NULL REFERENCES Employees(employee_id),
skill_id TINYINT NOT NULL REFERENCES Skills(skill_id),
level_of_skill TINYINT CHECK(level_of_skill BETWEEN 1 AND 5),
PRIMARY KEY (employee_id, skill_id)
)
GO