-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTable-Queries.sql
More file actions
73 lines (63 loc) · 2.64 KB
/
Copy pathTable-Queries.sql
File metadata and controls
73 lines (63 loc) · 2.64 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
/*
--1. VERÝTABANI OLUÞTURMA
CREATE DATABASE ITAssetManagementDB;
go
use ITAssetManagementDB;
go
*/
--2. USERS Tablosu (Soft Delete & GUID)
create table Users(
id UNIQUEIDENTIFIER PRIMARY KEY DEFAULT NEWSEQUENTIALID(),
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL UNIQUE,
password_hash VARCHAR(255) NOT NULL,
-- 'ACTIVE' veya 'DEACTIVATED' (Soft Delete için)
status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE' CHECK (status IN ('ACTIVE', 'DEACTIVATED')),
role VARCHAR(20) NOT NULL CHECK (role IN ('ADMIN', 'TECHNICIAN', 'USER')),
created_at DATETIME2 DEFAULT GETDATE()
);
-- 3. ASSETS Tablosu (GUID)
CREATE TABLE Assets(
id UNIQUEIDENTIFIER PRIMARY KEY DEFAULT NEWSEQUENTIALID(),
asset_name VARCHAR(100) NOT NULL,
asset_type VARCHAR(50) NOT NULL CHECK (asset_type IN ('SERVER', 'LAPTOP', 'SWITCH', 'ROUTER')),
ip_address VARCHAR(45) NULL,
mac_address VARCHAR(17) NOT NULL UNIQUE,
status VARCHAR(20) NOT NULL CHECK (status IN ('ACTIVE', 'MAINTENANCE', 'RETIRED', 'SPARE')),
location VARCHAR(100) NULL,
-- Ýliþki: USERS (1) ----o{ ASSETS (N)
assigned_user_id UNIQUEIDENTIFIER NULL,
updated_at DATETIME2 DEFAULT GETDATE(),
CONSTRAINT FK_Assets_Users FOREIGN KEY (assigned_user_id) REFERENCES users(id)
);
-- 4. LICENSES Tablosu (GUID)
CREATE TABLE licenses (
id UNIQUEIDENTIFIER PRIMARY KEY DEFAULT NEWSEQUENTIALID(),
software_name VARCHAR(100) NOT NULL,
license_key VARCHAR(255) NOT NULL,
expiration_date DATE NULL,
total_slots INT NOT NULL CHECK (total_slots >= 0)
);
-- 5. ASSET_LICENSES Ara Tablosu (N:M Ýliþkisi)
-- Notasyon: ASSETS }o----||----o{ LICENSES
CREATE TABLE asset_licenses (
asset_id UNIQUEIDENTIFIER NOT NULL,
license_id UNIQUEIDENTIFIER NOT NULL,
assigned_at DATETIME2 DEFAULT GETDATE(),
PRIMARY KEY (asset_id, license_id),
CONSTRAINT FK_AL_Assets FOREIGN KEY (asset_id) REFERENCES assets(id),
CONSTRAINT FK_AL_Licenses FOREIGN KEY (license_id) REFERENCES licenses(id)
);
-- 6. AUDIT_LOGS Tablosu (Deðiþmez Hafýza & GUID)
-- Notasyon: USERS ||----}o AUDIT_LOGS ve ASSETS ||----}o AUDIT_LOGS
CREATE TABLE audit_logs (
id UNIQUEIDENTIFIER PRIMARY KEY DEFAULT NEWSEQUENTIALID(),
asset_id UNIQUEIDENTIFIER NOT NULL,
action_by_id UNIQUEIDENTIFIER NULL, -- Ýþlemi yapan kullanýcý
action_type VARCHAR(50) NOT NULL,
old_value NVARCHAR(MAX) NULL, -- Büyük veri (JSON) için NVARCHAR(MAX)
new_value NVARCHAR(MAX) NULL,
logged_at DATETIME2 DEFAULT GETDATE(),
CONSTRAINT FK_Audit_Assets FOREIGN KEY (asset_id) REFERENCES assets(id) ON DELETE CASCADE,
CONSTRAINT FK_Audit_Users FOREIGN KEY (action_by_id) REFERENCES users(id)
);