-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmusic_engine.sql
62 lines (54 loc) · 1.79 KB
/
music_engine.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
CREATE TABLE Artists (
artistName varchar(60) NOT NULL,
PRIMARY KEY (artistName)
);
CREATE TABLE Genres (
genreName varchar(60) NOT NULL,
PRIMARY KEY (genreName)
);
CREATE TABLE Eras (
era varchar(60) NOT NULL,
PRIMARY KEY (era)
);
CREATE TABLE Albums (
albumName varchar(60) NOT NULL,
artist varchar(60) NOT NULL,
PRIMARY KEY (albumName, artist),
FOREIGN KEY(artist) REFERENCES Artists(artistName) ON UPDATE CASCADE ON DELETE CASCADE
);
CREATE TABLE Songs (
songTitle varchar(60) NOT NULL,
artist varchar(60) NOT NULL,
album varchar(60) NOT NULL,
duration INT NOT NULL,
genre varchar(60) NOT NULL,
era varchar(60) NOT NULL,
FOREIGN KEY (artist) REFERENCES Artists(artistName) ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (album) REFERENCES Albums(albumName) ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (genre) REFERENCES Genres(genreName) ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (era) REFERENCES Eras(era) ON UPDATE CASCADE ON DELETE CASCADE,
PRIMARY KEY (songTitle, artist)
);
CREATE TABLE Playlists (
playlistName varchar(60) NOT NULL,
dateCreated DATE NOT NULL,
PRIMARY KEY (playlistName)
);
CREATE TABLE PlaylistSongs (
playlist varchar(60) NOT NULL,
song varchar(60) NOT NULL,
artist varchar(60) NOT NULL,
PRIMARY KEY (playlist, song, artist),
FOREIGN KEY(playlist) REFERENCES Playlists(playlistName) ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY(song) REFERENCES Songs(songTitle) ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY(artist) REFERENCES Songs(artist) ON UPDATE CASCADE ON DELETE CASCADE
);
ALTER TABLE Songs
DROP COLUMN url;
drop table PlaylistSongs;
drop table Playlists;
drop table Songs;
drop table Albums;
drop table Genres;
drop table Eras;
drop table Artists;