-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCreate DataBase.sql
151 lines (131 loc) · 4.63 KB
/
Create DataBase.sql
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
-- Crear la base de datos 'Shows' si no existe
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'Shows')
BEGIN
CREATE DATABASE Shows;
END
GO
-- Usar la base de datos 'Shows'
USE Shows;
GO
-- Crear las tablas solo si no existen
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Country')
BEGIN
-- Crea la tabla Country
CREATE TABLE Country (
Id INT NOT NULL PRIMARY KEY IDENTITY,
Name NVARCHAR(MAX) NOT NULL,
Code NVARCHAR(MAX) NOT NULL,
Timezone NVARCHAR(MAX) NOT NULL
);
END
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Externals')
BEGIN
-- Crea la tabla Externals
CREATE TABLE Externals (
Id INT NOT NULL PRIMARY KEY IDENTITY,
Tvrage INT NOT NULL,
Thetvdb INT NOT NULL,
Imdb NVARCHAR(MAX) NOT NULL
);
END
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Image')
BEGIN
-- Crea la tabla Image
CREATE TABLE Image (
Id INT NOT NULL PRIMARY KEY IDENTITY,
Medium NVARCHAR(MAX) NOT NULL,
Original NVARCHAR(MAX) NOT NULL
);
END
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Link')
BEGIN
-- Crea la tabla Link
CREATE TABLE Link (
Id INT NOT NULL PRIMARY KEY IDENTITY,
SelfHref NVARCHAR(MAX) NOT NULL,
PreviousepisodeHref NVARCHAR(MAX) NOT NULL
);
END
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Network')
BEGIN
-- Crea la tabla Network
CREATE TABLE Network (
Id INT NOT NULL PRIMARY KEY IDENTITY,
Name NVARCHAR(MAX) NOT NULL,
idCountry INT NOT NULL,
OfficialSite NVARCHAR(MAX) NOT NULL,
CONSTRAINT FK_Network_Country_idCountry FOREIGN KEY (idCountry) REFERENCES Country (Id) ON DELETE CASCADE
);
END
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Schedule')
BEGIN
-- Crea la tabla Schedule
CREATE TABLE Schedule (
Id INT NOT NULL PRIMARY KEY IDENTITY,
Time NVARCHAR(MAX) NOT NULL,
Days NVARCHAR(MAX) NOT NULL
);
END
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Show')
BEGIN
-- Crea la tabla Show
CREATE TABLE Show (
Id INT NOT NULL PRIMARY KEY IDENTITY,
Url NVARCHAR(MAX) NOT NULL,
Name NVARCHAR(MAX) NOT NULL,
Type NVARCHAR(MAX) NOT NULL,
Language NVARCHAR(MAX) NOT NULL,
Genres NVARCHAR(MAX) NULL,
Status NVARCHAR(MAX) NOT NULL,
Runtime INT NOT NULL,
AverageRuntime INT NOT NULL,
Premiered DATETIME NOT NULL,
Ended DATETIME NOT NULL,
OfficialSite NVARCHAR(MAX) NOT NULL,
IdSchedule INT NULL,
Rating FLOAT NOT NULL,
Weight INT NOT NULL,
idNetwork INT NULL,
WebChannel NVARCHAR(MAX) NOT NULL,
DvdCountry NVARCHAR(MAX) NOT NULL,
idExternals INT NULL,
idImage INT NULL,
Summary NVARCHAR(MAX) NOT NULL,
Updated BIGINT NOT NULL,
idLink INT NULL,
CONSTRAINT FK_Show_Externals_idExternals FOREIGN KEY (idExternals) REFERENCES Externals (Id),
CONSTRAINT FK_Show_Image_idImage FOREIGN KEY (idImage) REFERENCES Image (Id),
CONSTRAINT FK_Show_Link_idLink FOREIGN KEY (idLink) REFERENCES Link (Id),
CONSTRAINT FK_Show_Network_idNetwork FOREIGN KEY (idNetwork) REFERENCES Network (Id),
CONSTRAINT FK_Show_Schedule_IdSchedule FOREIGN KEY (IdSchedule) REFERENCES Schedule (Id)
);
END
-- Deshabilita temporalmente las restricciones de clave externa
EXEC sp_MSforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL';
-- Crear ndices si no existen
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_Network_idCountry')
BEGIN
CREATE INDEX IX_Network_idCountry ON Network (idCountry);
END
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_Show_idExternals')
BEGIN
CREATE UNIQUE INDEX IX_Show_idExternals ON Show (idExternals);
END
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_Show_idImage')
BEGIN
CREATE UNIQUE INDEX IX_Show_idImage ON Show (idImage);
END
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_Show_idLink')
BEGIN
CREATE UNIQUE INDEX IX_Show_idLink ON Show (idLink);
END
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_Show_idNetwork')
BEGIN
CREATE INDEX IX_Show_idNetwork ON Show (idNetwork);
END
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_Show_IdSchedule')
BEGIN
CREATE UNIQUE INDEX IX_Show_IdSchedule ON Show (IdSchedule);
END
-- Habilita nuevamente las restricciones de clave externa
EXEC sp_MSforeachtable 'ALTER TABLE ? WITH CHECK CHECK CONSTRAINT ALL';