Requirements+Artifacts

=Interview Transcript=

The target users of this application are band members and fanatics of music. The central client and source of ideas for the application is **Joshua Balagapo**. He is the acting chairman of the UP Underground Music Community.

December 2, 2010
 * Interviewer**: We are creating a web application that is sort of a networking site for bands and music lovers, where users could subscribe or follow a band for band profile information, gig schedules and updates. What information would you want to be included in the website?
 * Interviewee**: Just like other networking sites, like Facebook, the usual information displayed on those would be enough. The information about the bands such as band members and gig schedules are okay.
 * Interviewer**: Should we create separate profile pages for each member of every band?
 * Interviewee**: I can't assure you that the band members would be responsive in such matters. I guess basic information will do.

Based from the suggestions during the previous reporting, additional features like embedded videos and song list of bands would be a plus for the website.

=Possible Database Queries=
 * View gigs of a band by schedule
 * View all members belonging to a band
 * View all bands affiliated to individual artists
 * View all instruments played by a band member
 * View listing of music owned by a band
 * View all bands created by a user
 * View all bands followed by a user

=Entity-Relationship Diagram=

Four entities were extracted from the interview: **band**, **band members**, **gigs**, **users** (music lovers). The fifth entity, **music**, is based from the suggestion in class. The profile of the users and band members are also present and shall include basic information such as numeric id, name, birthday, email address and instrument/role. The band is tagged with its name and year of establishment. Gigs shall be described by displaying its detailed schedule and id. The information about the band songs are added -- id, duration and links (if there are any).



In the newer version, aside from minor changes in the titles, the users could now follow bands that are registered in the system.



The third version is comprised mostly of the suggestions given by the review group assigned to us. The new entity **instrument** is created to handle instances where a band member is assigned to multiple instruments. The **genre** entity plays a similar role for songs or other music types that fall under more than one genre or category. The duration field is also added to the GIG entity to contain the information regarding a certain band's gig duration. Instead of a unique user id, a unique user name and a password were added to contain basic user account information.



=ENTITIES=

Information about bands
 * BAND**
 * band_id - number of band
 * band_name - name of band
 * year_est - band's year of establishment

Information about users
 * USER**
 * username - account user name
 * password - account password
 * nick - user's nickname
 * first_name - user's first name
 * middle_initial -user's middle initial
 * surname - user's surname
 * name suffix - user's name suffix
 * birth_month - user's month of birth
 * birth_date - user's date of birth
 * birth_year - user's year of birth
 * email_add - user's email address

Information about band members
 * MEM**
 * username - number of mem
 * nick - mem's nickname
 * first_name - mem's first name
 * middle_initial -mem's middle initial
 * surname - mem's surname
 * name suffix - mem's name suffix
 * birth_month - mem's month of birth
 * birth_date - mem's date of birth
 * birth_year - mem's year of birth

Listing of musical instruments
 * INSTRUMENT**
 * inst_id - id of instrument
 * inst_name - name of instrument

Information about band music
 * MUSIC**
 * music_id - id of music
 * title - title of music
 * minutes - music's duration (minutes part)
 * seconds - music's duration (seconds part)
 * dl_link - download link of music file
 * embed_link - embedded link of music file

Listing of music categories
 * GENRE**
 * genre_id - id of genre
 * genre_title - genre title

Information about band gigs = = =RELATIONSHIPS=
 * GIG**
 * gig_id - number of gig
 * month - month of gig
 * day - day of gig
 * year - year of gig
 * hour - hour of gig
 * minute - minute of gig
 * venue - venue of gig
 * duration - band's gig duration in minutes

A //band// could be followed by 0 or more users. A //user// could follow 0 or more bands.
 * Followed By**

A //band// could be created by only 1 user. A //user// could create 0 or more bands.
 * Created By**

A //member// could belong to at least 1 band. A //band// could have at least one member.
 * Belongs To**

A //gig// could be performed by only 1 band. A //band// could perform on 0 or more gigs.
 * Performed By**

A //music// could be owned by only 1 band. A //band// could own 0 or more music titles.
 * Owned By**

Any type of //instrument// could be played by 0 or more members. A //member// could play at least 1 type of instrument.
 * Is Played By**

A //genre// could have 0 or more music titles fall under it. A //music// title could have at least 1 music genre.
 * Falls Under**