You are on page 1of 6

Music Database

3NF
Song SongID SongName TrackNo Rating Artist ArtistID ArtistName Genres GenreID GenreName Album AlbumID AlbumName SongIsInAlbum SongID AlbumID SongByArtist SongID ArtistID ArtistHasGenre AlbumID GenreID ArtistIsOnAlbum ArtistID AlbumID

DDL Statements
CREATE TABLE Songs (SongID INT NOT NULL AUTO_INCREMENT, TrackNo INT, SongName VARCHAR(30) NOT NULL, Rating INT, PRIMARY KEY (SongID)) ENGINE=INNODB;
CREATE TABLE Artists (ArtistID INT NOT NULL AUTO_INCREMENT, ArtistName VARCHAR(30) NOT NULL, PRIMARY KEY (ArtistID)) ENGINE=INNODB; CREATE TABLE Albums (AlbumID INT NOT NULL AUTO_INCREMENT, AlbumName VARCHAR(30) NOT NULL, PRIMARY KEY (AlbumID)) ENGINE=INNODB CREATE TABLE Genres (GenreID INT NOT NULL AUTO_INCREMENT, GenreName VARCHAR(30) NOT NULL, PRIMARY KEY (AlbumID)) ENGINE=INNODB CREATE TABLE SongIsInAlbum (AlbumID INT NOT NULL AUTO_INCREMENT, SongID INT NOT NULL, FOREIGN KEY (AlbumID) REFERENCES Albums (AlbumID), FOREIGN KEY (SongID) REFERENCES Songs (SongID)) ENGINE=INNODB CREATE TABLE SongbyArtist (ArtistID INT NOT NULL AUTO_INCREMENT, SongID INT NOT NULL, FOREIGN KEY (ArtistID) REFERENCES Artists (ArtistID), FOREIGN KEY (SongID) REFERENCES Songs (SongID)) ENGINE=INNODB CREATE TABLE ArtistIsOnAlbum (ArtistID INT NOT NULL AUTO_INCREMENT, AlbumID INT NOT NULL, FOREIGN KEY (ArtistID) REFERENCES Artists (ArtistID), FOREIGN KEY (AlbumID) REFERENCES Albums (AlbumID)) ENGINE=INNODB CREATE TABLE ArtistHasGenre (ArtistID INT NOT NULL AUTO_INCREMENT, GenreID INT NOT NULL, FOREIGN KEY (ArtistID) REFERENCES Artists (ArtistID), FOREIGN KEY (GenreID) REFERENCES Genres (GenreID)) ENGINE=INNODB

Screenshots of each table

Queries
SELECT SongName FROM songs WHERE rating =4

SELECT SongName FROM songs WHERE Trackno =1 AND Rating =3

You might also like