-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcreatescript.sql
More file actions
70 lines (58 loc) · 1.73 KB
/
createscript.sql
File metadata and controls
70 lines (58 loc) · 1.73 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
DROP SCHEMA IF EXISTS spotitube;
DROP TABLE if exists OWNER;
CREATE TABLE Owner
(
OwnerID INT NOT NULL AUTO_INCREMENT,
Username VARCHAR(100) NOT NULL,
Password VARCHAR(100) NOT NULL,
PRIMARY KEY (OwnerID),
UNIQUE (Username)
);
DROP TABLE if exists Track;
CREATE TABLE Track
(
TrackID INT NOT NULL AUTO_INCREMENT,
title VARCHAR(55) NOT NULL,
performer VARCHAR(55) NOT NULL,
duration INT NOT NULL,
album VARCHAR(55) NOT NULL,
playcount int NULL,
publicationDate varchar(15) NULL,
description VARCHAR(100) NULL,
offlineAvailable BOOLEAN DEFAULT false,
PRIMARY KEY (TrackID)
);
DROP TABLE if exists Playlist;
CREATE TABLE Playlist
(
PlaylistID INT NOT NULL AUTO_INCREMENT,
Name VARCHAR(100) NOT NULL,
Owner INT NOT NULL,
PRIMARY KEY (PlaylistID),
FOREIGN KEY (Owner) REFERENCES Owner (OwnerID)
);
DROP TABLE if exists Playlist_Track;
CREATE TABLE Playlist_Track
(
TrackID INT NOT NULL,
PlaylistID INT NOT NULL,
FOREIGN KEY (TrackID) REFERENCES Track (TrackID),
FOREIGN KEY (PlaylistID) REFERENCES Playlist (PlaylistID) ON DELETE cascade,
PRIMARY KEY (TrackID, PlaylistID)
);
DROP TABLE if exists Token_Owner;
CREATE TABLE Token_Owner
(
Token VARCHAR(40) NOT NULL,
Owner VARCHAR(100) NOT NULL,
PRIMARY KEY (Token, Owner)
);
DROP TABLE if exists Playlist_Owner;
CREATE TABLE Playlist_Owner
(
PlaylistID INT NOT NULL,
OwnerID INT NOT NULL,
FOREIGN KEY (PlaylistID) REFERENCES Playlist (PlaylistID) ON DELETE cascade,
FOREIGN KEY (OwnerID) REFERENCES Owner (OwnerID),
PRIMARY KEY (PlaylistID, OwnerID)
);