Professional Documents
Culture Documents
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
Queries
SELECT SongName FROM songs WHERE rating =4