Relational Schema
My relational schema followed fairly easily from my E/R diagram. There was only one entity set that needed further decomposition: the Tablature entity set would introduce redundant information for transcribers. Once that entity set was decomposed, all of my relations were in BCNF.
Relations
- Album(groupName, albumName, year, numTracks, recordingStudio)
- Artist(name, genre, homepage, hometown, bio)
- Musician(name, instrument, hometown)
- RecordCompany(name, address, homepage, phone)
- Song(groupName, songName, length, trackNo)
- Tablature(url, transcriber, transcriberEmail, date)
- GuestArtist(songName, groupName, musicianName)
- InGroup(groupName, musicianName)
- Influences(groupName, musicianName)
- OnAlbum(groupName, songName, albumName)
- ProducedBy(companyName, groupName, albumName)
- TabFor(url, groupName, songName)
Functional Dependencies
- in Group: name -> genre
- in Album: groupName, albumName -> year, numTracks, recordingStudio
- in Song: groupName, songName -> length, trackNo
- in Musician: name -> instrument, hometown
- in RecordCompany: name -> address, homepage, phone
- in Tablature: transcriber -> transcriberEmail; url -> transcriber, date
- in TabFor: url -> songName, groupName
Author: Steven van Loben Sels - June 2000