Académique Documents
Professionnel Documents
Culture Documents
Syracuse University
Xiaoli Chen
Yuting Guo
Project Summary
G&C is a China-based music label with offices in Shanghai and Beijing. Since 2006, the
company had been working with some of the most talented and inspiring artists from all around
the world. G&C nurtures young music talents by recruiting young artists, help them produce
professional music products, and organize concerts and music festivals.
In the past 8 years, G&C has accumulated a sizable musical asset, at the moment the company
have 60 contacted artists/ bands, who had released collectively 112 full-length records. It also
organizes 2 annual music festivals, 2 large promotional events, hundreds of smaller scale
concerts.
G&C has been using spreadsheets to organize its internal data storage and use, separate
spreadsheets for distinct company assets such as artist, records, concerts and frequent
collaborating venues. Now that the company is scaled up due to the number of asset and product
its managing, G&C decide to start using relational database to improve its daily practice and
make better use of historical data. Additionally, the company want to start tracking the ticket sell
of each concert, to gain valuable insights in order to assist future promotional activities.
The idea for the relational database is to identify and arrange relevant data in a better
way. The solution will need to capture details regarding the artists who are managed by G&C
(name, country of origin, genre, status, salary range), albums released (title, type, release date,
format, number of records sold, etc.), live shows including concerts and music festivals
organized in the past (title, date, type, basic financial facts), ticket sell situation (ticket purchase
date, category, price, seat), and other information pertain to these basic company asset building
blocks.
The database is designed to be used by internal management purposes, the major user
groups include:
Company executives
Company executives need to overlook the general performance of each part of the
company in order to make strategic decisions, especially the financial facts such
as sponsor relations, recurring costs and revenues.
Company managerial staff
Managers of the company need to work with detailed information within their
scope of responsibility, and the relationship among different areas.
Company employees
Employees who are directly involved with on-site organization will be responsible
for entering data to the database, to keep track of company practices.
The project will begin with an overall evaluation of current practice of G&C, follow with the
identification of the company assets in detail, business rules and management style. The project
will also take into consideration the requirements from newly proposed service and functionality.
With these information the database design team will provide a solution that best fit the
companys needs.
Project ERD
venue
PK
venueID
venueName
country
state
city
capacity
tickets
concert
PK
hold
FK1
has
concertID
concertTitle
date
venueID
type
sells
productionCost
profit
PK
ticketID
FK1
purchaseDate
category
price
seat
concertID
sells
currentSponsor
performance
PK,FK2
PK,FK1
artistID
concertID
includes
has
PK,FK2
PK,FK1
sponsorhipDuration
length
is in
concertSong
performs
PK,FK2
PK,FK1
concertID
songID
sponor
artist
PK
order
artistID
artistName
Country
Genre
Status
YearsActive
salaryRange
contact
has
is performed
song
PK
songID
FK1
albumCatalogueID
songTitle
trackNumber
length
lyrics
album
PK
albumCatalogID
FK1
artistID
albumTitle
releaseDate
type
format
price
sells
totalRevenue
sponsorID
concertID
has
PK
sponorID
sponserName
logo
contactPerson
investment
requirement
Entities and
attributes
Descriptions
artist
Each record/row in the artist entity is an artist identified by a unique ID. The
artists name, country, genre, status, yearsActive, salaryRange, phone and
email are also stored in this table.
yearActive is the time period they are working in the agency.
Status consists of five values, namely active, split-up, on hold, change name
and unknown.
album
concert
performance
An artist can perform in zero or many concerts and one concert can have
one or many artists who give performance. Therefore, it is a many-to-many
(M:N) relationship between artist and concert. We then build an
associative entity performance to convert the M:N relationship to two 1:M
relationship.
artistID is stored in the performance table as foreign key, which associates
each performance with its artist.
concertID is stored in the performance table as foreign key, which
associates each performance with the concert.
song
Each record/row in the song entity is a song identified by a unique ID, i.e.
songID. The songTitle, trackNumber, length and lyrics are also stored in this
table.
trackNumber refers to the order of the song in the album.
An album can have one or many songs and a song must be in one album.
Therefore it is a one-to-many relationship.
albumCatalogueID is stored in this table as foreign key, which associates
each song with the album.
concertSong
This entity/table stores information about each performance that involves one
song and a concert. It records the songs performed in a concert. It is uniquely
defined by songID and concertID.
The order of the songs performed in a concert is also stored in this table.
A song can be performed in zero or many concerts and a concert can
include one to many songs. Therefore, it is a many-to-many (M:N)
relationship between song and concert. We then build an associative
entity concertSong to convert the M:N relationship to two 1:M
relationship.
songID is stored in the concertSong table as foreign key, which associates
each song in the song table.
concertID is stored in the concertSong table as foreign key, which
associates each song performed in the concert with the concert in concert
table .
venue
Each record/row in the venue entity is a venue location uniquely identified by the
venueID. Descriptive information about the venue, such as venueName, country,
state, city, street, zip code and capacity of the venue are also stored in this table.
A venue can hold zero or many concerts and a concert must be held in one
category refers to the area of the seat designated by the ticket. In some
concert, the seats may not assigned, namely the audience can sit wherever
they want, so seat is optional.
A concert can sell zero or many tickets and a ticket is just for one concert.
Therefore, it is a one-to-many relationship.
concertID is stored in this table as foreign key, which relates the ticket to its
concert. It refers the concertID in the concert table.
sponsor
Each record/row in the sponsor entity represents a sponsor who invested certain
company activity, each uniquely identified by a sponsorID. Name, contact, amount
of investment, requirement, and company logo of the sponsor are stored in the table.
the sponsorDuration refers to the time period that the agency is obligated to do
advertisement for the sponsor.
,concertSongOrder CHAR(5)
,constraint concertSong_PK PRIMARY KEY (concertID, songID)
,constraint concertSong_FK1 FOREIGN KEY (concertID) REFERENCES
concert(concertID)
,constraint concertSong_FK2 FOREIGN KEY (songID) REFERENCES song(songID)
);
DROP TABLE concertSong;
/* create table performance */
create table performance
(
artistID INTEGER
,concertID INTEGER
,performanceLength DECIMAL (10,2) NOT NULL
,constraint performance_PK PRIMARY KEY (artistID, concertID)
,constraint performance_FK1 FOREIGN KEY (artistID) REFERENCES
artist(artistID)
,constraint performance_FK2 FOREIGN KEY (concertID) REFERENCES
concert(concertID)
);
DROP TABLE performance;
into
into
into
into
into
into
into
into
into
into
currentSponsor
currentSponsor
currentSponsor
currentSponsor
currentSponsor
currentSponsor
currentSponsor
currentSponsor
currentSponsor
currentSponsor
values('1001',
values('1001',
values('1003',
values('1004',
values('1005',
values('1005',
values('1004',
values('1003',
values('1002',
values('1002',
'1001',
'1002',
'1002',
'1002',
'1004',
'1003',
'1003',
'1003',
'1003',
'1005',
'1');
'1');
'3');
'3');
'2');
'2');
'1');
'1');
'2');
'4');
into
into
into
into
into
into
into
into
into
into
concertSong
concertSong
concertSong
concertSong
concertSong
concertSong
concertSong
concertSong
concertSong
concertSong
values('1001',
values('1001',
values('1001',
values('1001',
values('1001',
values('1002',
values('1002',
values('1002',
values('1003',
values('1003',
'1001',
'1002',
'1003',
'1004',
'1005',
'1001',
'1002',
'1003',
'1002',
'1004',
'1/16');
'3/16');
'10/16');
'11/16');
'2/21');
'5/21');
'6/21');
'9/21');
'3/10');
'4/10');
*
*
*
*
*
*
*
*
*
*
from
from
from
from
from
from
from
from
from
from
album
artist
concert
song
concertSong
ticket
sponsor
currentSponsor
venue
performance
/* 1b. How many albums each artist has made in this music agency? */
--The amount of the albums the artist has made is an important factor of the
artist's contribution to this agency. And how prodcutive each artist is.
select ar.artistID,artistName,COUNT(al.artistID)'albumNumber'
from artist as ar,album as al
where ar. artistID = al.artistID
group by artistName,ar.artistID;
/* 1c. What are the albums each artist has made in this music agency? */
--The manager or administrative staff may want to know the detailed
information of the album each artist has made as a reference to how popular
the artist is.
select albumTitle, artistName, releaseDate,albumType,albumFormat, albumPrice,
totalRevenue
from artist as ar,album as al
where ar. artistID = al.artistID
order by artistName;
--2. Album-/* 2a. what is the total revenue of each album released by this music agency?
*/
--The manger and the administrative staff want to know the profit each album
has generated. It can provide information for them to know the popular album
among the customers and decide the investment of the new albulms.
select albumTitle, artistName, releaseDate,albumType,albumFormat, albumPrice,
totalRevenue
from artist as ar,album as al
where ar. artistID = al.artistID;
/* 2b. what is the most and least profitable album released by this music
agency? */
--It povides the information about the features of the most and least popular
album and the preference of the customers. Thus they can produce new albulm
according to the customers' preference in order to gain more profit.
select albumTitle, artistName, releaseDate,albumType,albumFormat, albumPrice,
totalRevenue
from artist as ar,album as al
where ar. artistID = al.artistID
and totalRevenue = (select max(totalRevenue) from album);
select albumTitle, artistName, releaseDate,albumType,albumFormat, albumPrice,
totalRevenue
from artist as ar,album as al
where ar. artistID = al.artistID
and totalRevenue = (select min(totalRevenue) from album);
--3. Concert-/* 3a. what is the cost and profit of each concert? */
--The data can provide inormation of the factors which may influnce the
profit of the concert. Futher it can offer information as to the plan of
future concerts.
select concertTitle, concertType, productionCost, profit
from concert
order by profit;
--note:It would be beneficail for the manger to see which kind of concerts
are more profitable; the the cost/profit rang of diferent concerts.
--4. Create Views-/* 4a. what is the detailed information of all the concerts? */
CREATE view concert_performance_v AS
--5. Transactions--
rollback;
select * from concertSong;
select * from performance;
Interfaces
Input forms:
1. artist Form
2. album Form
3. song Form
4. concert Form
5. Venue Form
6. ticket Form
7. sponsor Form
8. concertSong Form
9. concertPerformance Form
Output reports:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.