Garden Glory Project Questions Assume that Garden Glory designs a database with the following tables:
OWNER (OwnerID, OwnerName, OwnerEmail, OwnerType)
OWNED_PROPERTY (PropertyID, PropertyName, PropertyType, Street, City, State, Zip, OwnerID)
GG_SERVICE (ServiceID, ServiceDescription, CostPerHour);
EMPLOYEE (EmployeeID, LastName, FirstName, CellPhone, ExperienceLevel)
PROPERTY_SERVICE ( PropertyServiceID , PropertyID , ServiceID, ServiceDate , EmployeeID, HoursWorked)
The referential integrity constraints are:
OwnerID in OWNED_PROPERTY must exist in OwnerID in OWNER
PropertyID in PROPERTY_SERVICE must exist in PropertyID in OWNED_PROPERTY
ServiceID in PROPERTY_SERVICE must exist in ServiceID in GG_SERVICE
EmployeeID in PROPERTY_SERVICE must exist in EmployeeID in EMPLOYEE
Assume that OwnerID in OWNER, PropertyID in PROPERTY, and EmployeeID in EMPLOYEE are surrogate keys with values as follows:
OwnerID Start at 1 Increment by 1
PropertyID Start at 1 Increment by 1
ServiceID Start at 1 Increment by 1
EmployeeID Start at 1 Increment by 1
PropertyServiceID Start at 1 Increment by 1
Sample data are shown in Figure 3-38, Figure 3-39, Figure 3-40, Figure 3-41, and Figure 3-42. OwnerType is either Individual or Corporation. PropertyType is one of Office, Apartments, or Private Residence. ExperienceLevel is one of Unknown, Junior, Senior, Master or SuperMaster. These tables, referential integrity constraints, and data are used
Sample Data for Garden Glory OWNER Table OwnerID OwnerName OwnerEmailAddress OwnerType
1 Mary Jones [email protected] Individual
2 DT Enterprises [email protected] Corporation
3 Sam Douglas [email protected] Individual
4 UNY Enterprises [email protected] Corporation
5 Doug Samuels [email protected] Individual
Sample Data for Garden Glory OWNED_PROPERTY Table PropertyID PropertyName PropertyType Street City State ZIP OwnerID
1 Eastlake Building Office 123 Eastlake Seattle WA 98119 2
2 Elm St Apts Apartments 4 East Elm Lynwood WA 98223 1
3 Jefferson Hill Office 42 West 7th St Bellevue WA 98007 2
4 Lake View Apts Apartments 1265 32nd Avenue Redmond WA 98052 3
5 Kodak Heights Apts Apartments 65 32nd Avenue Redmond WA 98052 4
6 Jones House Private Residence 1456 48th St Bellevue WA 98007 1
7 Douglas House Private Residence 1567 51st St Bellevue WA 98007 3
8 Samuels House Private Residence 567 151st St Redmond WA 98052 5
as the basis for the SQL statements you will create in the exercises that follow. If possible, run these statements in an actual DBMS, as appropriate, to obtain your results. Name your database GARDEN_GLORY. Use data types consistent with the DBMS you are using. If you are not using an actual DBMS, consistently represent data types using either the MySQL, Microsoft SQL Server, or Oracle Database data types shown in Figure 3-5. For each SQL statement you write, show the results based on your data. Write SQL statements and answer questions for this database as follows:
B. Write foreign key constraints for the relationships in each of these tables. Make your own assumptions regarding cascading updates and deletions and justify those assumptions. (Hint: You can combine the SQL for your answers to parts A and B.)
C. Write SQL statements to insert the data into each of the five Garden Glory database tables. Assume that any surrogate key value will be supplied by the DBMS. Use the data in Figure 3-38, Figure 3-39, Figure 3-40, Figure 3-41, and Figure 3-42.
D. Write SQL statements to list all columns for all tables.
E. Write an SQL statement to list LastName, FirstName, and CellPhone for all employees having an experience level of Master.
F. Write an SQL statement to list LastName, FirstName, and CellPhone for all employees having an experience level of Master and FirstName that begins with the letter J
Will you please explain and write the instructions how to write on mySQL and thank you
FIGURE 3-40
Sample Data for Garden Glory EMPLOYEE Table EmployeeID LastName FirstName CellPhone ExperienceLevel
1 Smith Sam 206-254-1234 Master
2 Evanston John 206-254-2345 Senior
3 Murray Dale 206-254-3456 Junior
4 Murphy Jerry 585-545-8765 Master
5 Fontaine Joan 206-254-4567 Senior
FIGURE 3-41
Sample Data for Garden Glory GG_SERVICE Table ServiceID ServiceDescription CostPerHour
1 Mow Lawn 25.00
2 Plant Annuals 25.00
3 Weed Garden 30.00
4 Trim Hedge 45.00
5 Prune Small Tree 60.00
6 Trim Medium Tree 100.00
7 Trim Large Tree 125.00
FIGURE 3-42
Sample Data for Garden Glory PROPERTY_SERVICE Table PropertyServiceID PropertyID ServiceID ServiceDate EmployeeID HoursWorked
1 1 2 2019-05-05 1 4.50
2 3 2 2019-05-08 3 4.50
3 2 1 2019-05-08 2 2.75
4 6 1 2019-05-10 5 2.50
5 5 4 2019-05-12 4 7.50
6 8 1 2019-05-15 4 2.75
7 4 4 2019-05-19 1 1.00
8 7 1 2019-05-21 2 2.50
9 6 3 2019-06-03 5 2.50
10 5 7 2019-06-08 4 10.50
11 8 3 2019-06-12 4 2.75
12 4 5 2019-06-15 1 5.00
13 7 3 2019-06-19 2 4.00
A & B: As mentioned in problem, let’s combine part A and B to create table and add foreign keys in same solution:
1. Create database and start using it: This is achieved by using below script:
Create database GARDEN_GLORY;
use GARDEN_GLORY;
2. Create tables and add referential constraints: Below is the MYSql code for table creation where a database named GARDEN_GLORY.
CREATE TABLE OWNER (OwnerID int primary key auto_increment, OwnerName varchar(50), OwnerEmail varchar(70), OwnerType Varchar(20), check (OwnerType in ('Individual' , 'Corporation')));
CREATE TABLE OWNED_PROPERTY (PropertyID int primary key auto_increment, PropertyName varchar(50), PropertyType varchar(20), Street varchar(100), City varchar(50), State varchar(5), Zip int, OwnerID int,
constraint prop_Owner foreign key(OwnerID) references OWNER(OwnerID) On Delete cascade/*no need to record properties for deleted owners*/,
check (PropertyType in ('Office', 'Apartments', 'Private Residence')));
CREATE TABLE GG_SERVICE (ServiceID int primary key auto_increment, ServiceDescription varchar(50), CostPerHour float);
CREATE TABLE EMPLOYEE (EmployeeID int primary key auto_increment, LastName varchar(50), FirstName varchar(50), CellPhone varchar(50), ExperienceLevel varchar(15), check (ExperienceLevel in ('Unknown', 'Junior', 'Senior', 'Master', 'SuperMaster')));
CREATE TABLE PROPERTY_SERVICE ( PropertyServiceID int primary key auto_increment, PropertyID int, ServiceID int, ServiceDate date, EmployeeID int, HoursWorked float,
constraint prop_services foreign key(PropertyID) references OWNED_PROPERTY(PropertyID) On Delete set null /*set null property when it is deleted from OWNED_PROPERTY to keep track of services by employee*/,
constraint given_services foreign key(ServiceID) references GG_SERVICE(ServiceID) On Delete set null /*set null when service is deleted from GG_SERVICE */,
constraint given_by foreign key(EmployeeID) references EMPLOYEE(EmployeeID) On Delete set null /*set null when employee is deleted from EMPLOYEE to keep track of services for properties */
)
C. Please find below the sql script to add records in the tables:
1. OWNER Table:
INSERT INTO OWNER (OwnerName, OwnerEmail , OwnerType) VALUES
('Mary Jones', '[email protected]','Individual'),
('DT Enterprises', '[email protected]', 'Corporation'),
('Sam Douglas','[email protected]','Individual'),
('UNY Enterprises','[email protected]','Corporation'),
('Doug Samuels','[email protected]','Individual');
Output:
2. OWNED_PROPERTY Table:
INSERT INTO OWNED_PROPERTY (PropertyName, PropertyType, Street, City, State, ZIP, OwnerID) VALUES
('Eastlake Building','Office','123 Eastlake', 'Seattle','WA', 98119, 2),
('Elm St Apts','Apartments', '4 East Elm','Lynwood', 'WA', 98223, 1),
('Jefferson Hill', 'Office','42 West 7th St','Bellevue','WA', 98007, 2),
('Lake View Apts', 'Apartments','1265 32nd Avenue','Redmond','WA', 98052, 3),
('Kodak Heights Apts','Apartments','65 32nd Avenue','Redmond','WA', 98052, 4),
('Jones House','Private Residence', '1456 48th St',' Bellevue','WA', 98007, 1),
('Douglas House', 'Private Residence', '1567 51st St','Bellevue', 'WA', 98007, 3),
('Samuels House', 'Private Residence', '567 151st St','Redmond', 'WA', 98052, 5);
OUTPUT:
3. EMPLOYEE table:
INSERT INTO EMPLOYEE(LastName, FirstName, CellPhone, ExperienceLevel)VALUES
('Smith','Sam','206-254-1234','Master'),
('Evanston','John','206-254-2345','Senior'),
('Murray','Dale','206-254-3456','Junior'),
('Murphy','Jerry','585-545-8765','Master'),
('Fontaine','Joan','206-254-4567','Senior');
OUTPUT:
4. GG_SERVICE
INSERT INTO GG_SERVICE(ServiceDescription,CostPerHour) VALUES
('Mow Lawn', 25.00),
('Plant Annuals', 25.00),
('Weed Garden', 30.00),
('Trim Hedge', 45.00),
('Prune Small Tree', 60.00),
('Trim Medium Tree', 100.00),
('Trim Large Tree', 125.00);
OUTPUT:
5. PROPERTY_SERVICE Table:
INSERT INTO PROPERTY_SERVICE (PropertyID, ServiceID, ServiceDate, EmployeeID, HoursWorked) VALUES
(1, 2,'2019-05-05',1, 4.50),
(3 ,2,'2019-05-08',3, 4.50),
(2, 1,'2019-05-08',2, 2.75),
(6 ,1,'2019-05-10',5, 2.50),
(5, 4,'2019-05-12',4, 7.50),
(8, 1,'2019-05-15',4, 2.75),
(4, 4,'2019-05-19',1, 1.00),
(7, 1,'2019-05-21',2, 2.50),
(6, 3,'2019-06-03',5, 2.50),
(5,7,'2019-06-08',4, 10.50),
(8, 3,'2019-06-12',4, 2.75),
(4, 5,'2019-06-15',1 ,5.00),
(7, 3,'2019-06-19',2, 4.00);
OUTPUT:
D. SQL statements to list all columns for all tables
Select * from OWNER;
Select * from OWNED_PROPERTY;
Select * from EMPLOYEE;
Select * from GG_SERVICE;
SELECT * from PROPERTY_SERVICE ;
OUTPUT is already inlined for each table in part C.
E: SQL to list LastName, FirstName, and CellPhone for all employees having an experience level of Master.
Query:
Select LastName, FirstName, CellPhone from EMPLOYEE where ExperienceLevel = 'Master';
OUTPUT:
F: SQL to list LastName, FirstName, and CellPhone for all employees having an experience level of Master and FirstName has J as first character
Query:
Select LastName, FirstName, CellPhone from EMPLOYEE where ExperienceLevel = 'Master' AND FirstName like 'J%';
OUTPUT:
**As it was a lengthy assignment, I tried providing complete details. Please comment if you have any doubt at line of script. Thanks.
Get Answers For Free
Most questions answered within 1 hours.