IF DB_ID(N'WorkToDo') IS NULL
BEGIN
EXEC(N'CREATE DATABASE [WorkToDo]');
END
/* ĐANG Ở DB: WorkToDo */
-- Xóa nếu đã tồn tại
IF OBJECT_ID('[Link]', 'U') IS NOT NULL DROP TABLE [Link];
IF OBJECT_ID('[Link]', 'U') IS NOT NULL DROP TABLE [Link];
IF OBJECT_ID('[Link]', 'U') IS NOT NULL DROP TABLE [Link];
-- USERS
CREATE TABLE [Link](
TaiKhoan VARCHAR(50) NOT NULL PRIMARY KEY,
MatKhau NVARCHAR(255) NOT NULL,
HoTen NVARCHAR(120) NOT NULL,
TaoLuc DATETIME2(0) NOT NULL DEFAULT SYSUTCDATETIME()
);
-- TASKS
CREATE TABLE [Link](
TaskId INT IDENTITY(1,1) PRIMARY KEY,
TaiKhoan VARCHAR(50) NOT NULL,
CongViec NVARCHAR(200) NOT NULL,
MoTa NVARCHAR(MAX) NULL,
IsDone BIT NOT NULL DEFAULT 0,
TaoLuc DATETIME2(0) NOT NULL DEFAULT SYSUTCDATETIME()
);
ALTER TABLE [Link]
ADD CONSTRAINT FK_TASKS_USERS
FOREIGN KEY (TaiKhoan) REFERENCES [Link](TaiKhoan)
ON DELETE CASCADE;
-- NHACVIEC (đơn giản)
CREATE TABLE [Link](
MaNhac INT IDENTITY(1,1) PRIMARY KEY,
TaskId INT NOT NULL,
NhacLuc DATETIME2(0) NOT NULL,
KieuLap TINYINT NOT NULL DEFAULT 0, -- 0=không lặp,1=hàng ngày,2=hàng
tuần
GhiChu NVARCHAR(200) NULL,
DangHoatDong BIT NOT NULL DEFAULT 1
);
ALTER TABLE [Link]
ADD CONSTRAINT FK_NHACVIEC_TASKS
FOREIGN KEY (TaskId) REFERENCES [Link](TaskId)
ON DELETE CASCADE;
-- Index tham khảo
CREATE INDEX IX_TASKS_User_Time ON [Link](TaiKhoan, TaoLuc DESC);
CREATE INDEX IX_NHACVIEC_Next ON [Link](DangHoatDong, NhacLuc)
INCLUDE(TaskId);