-
Notifications
You must be signed in to change notification settings - Fork 0
/
blog.sql.txt
111 lines (85 loc) · 2.83 KB
/
blog.sql.txt
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
-- Primeira parte a executar↓↓↓
CREATE DATABASE [Blog]
GO
-- Primeira parte a executar↑↑↑
-- Segunda parte a executar↓↓↓
USE [Blog]
GO
-- DROP TABLE [User]
-- DROP TABLE [Role]
-- DROP TABLE [UserRole]
-- DROP TABLE [Post]
-- DROP TABLE [Category]
-- DROP TABLE [Tag]
-- DROP TABLE [PostTag]
CREATE TABLE [User] (
[Id] INT NOT NULL IDENTITY(1, 1),
[Name] NVARCHAR(80) NOT NULL,
[Email] VARCHAR(200) NOT NULL,
[PasswordHash] VARCHAR(255) NOT NULL,
[Bio] TEXT NOT NULL,
[Image] VARCHAR(2000) NOT NULL,
[Slug] VARCHAR(80) NOT NULL,
CONSTRAINT [PK_User] PRIMARY KEY([Id]),
CONSTRAINT [UQ_User_Email] UNIQUE([Email]),
CONSTRAINT [UQ_User_Slug] UNIQUE([Slug])
)
CREATE NONCLUSTERED INDEX [IX_User_Email] ON [User]([Email])
CREATE NONCLUSTERED INDEX [IX_User_Slug] ON [User]([Slug])
CREATE TABLE [Role] (
[Id] INT NOT NULL IDENTITY(1, 1),
[Name] VARCHAR(80) NOT NULL,
[Slug] VARCHAR(80) NOT NULL,
CONSTRAINT [PK_Role] PRIMARY KEY([Id]),
CONSTRAINT [UQ_Role_Slug] UNIQUE([Slug])
)
CREATE NONCLUSTERED INDEX [IX_Role_Slug] ON [Role]([Slug])
CREATE TABLE [UserRole] (
[UserId] INT NOT NULL,
[RoleId] INT NOT NULL,
CONSTRAINT [PK_UserRole] PRIMARY KEY([UserId], [RoleId])
)
CREATE TABLE [Category] (
[Id] INT NOT NULL IDENTITY(1, 1),
[Name] VARCHAR(80) NOT NULL,
[Slug] VARCHAR(80) NOT NULL,
CONSTRAINT [PK_Category] PRIMARY KEY([Id]),
CONSTRAINT [UQ_Category_Slug] UNIQUE([Slug])
)
CREATE NONCLUSTERED INDEX [IX_Category_Slug] ON [Category]([Slug])
CREATE TABLE [Post] (
[Id] INT NOT NULL IDENTITY(1, 1),
[CategoryId] INT NOT NULL,
[AuthorId] INT NOT NULL,
[Title] VARCHAR(160) NOT NULL,
[Summary] VARCHAR(255) NOT NULL,
[Body] TEXT NOT NULL,
[Slug] VARCHAR(80) NOT NULL,
[CreateDate] DATETIME NOT NULL DEFAULT(GETDATE()),
[LastUpdateDate] DATETIME NOT NULL DEFAULT(GETDATE()),
CONSTRAINT [PK_Post] PRIMARY KEY([Id]),
CONSTRAINT [FK_Post_Category] FOREIGN KEY([CategoryId]) REFERENCES [Category]([Id]),
CONSTRAINT [FK_Post_Author] FOREIGN KEY([AuthorId]) REFERENCES [User]([Id]),
CONSTRAINT [UQ_Post_Slug] UNIQUE([Slug])
)
CREATE NONCLUSTERED INDEX [IX_Post_Slug] ON [Post]([Slug])
CREATE TABLE [Tag] (
[Id] INT NOT NULL IDENTITY(1, 1),
[Name] VARCHAR(80) NOT NULL,
[Slug] VARCHAR(80) NOT NULL,
CONSTRAINT [PK_Tag] PRIMARY KEY([Id]),
CONSTRAINT [UQ_Tag_Slug] UNIQUE([Slug])
)
CREATE NONCLUSTERED INDEX [IX_Tag_Slug] ON [Tag]([Slug])
CREATE TABLE [PostTag] (
[PostId] INT NOT NULL,
[TagId] INT NOT NULL,
CONSTRAINT PK_PostTag PRIMARY KEY([PostId], [TagId])
)
-- Segunda parte a executar↑↑↑
-- Terceira parte a executar↓↓↓
ALTER TABLE dbo.Post
ADD CONSTRAINT FK_Post_Author
FOREIGN KEY (AuthorId) REFERENCES dbo.[User](Id)
ON DELETE CASCADE;
-- Terceira parte a executar↑↑↑