The document provides instructions for normalizing a vehicle database table. It has the student create new tables to store make, model, drive, and fuel type data separately. It then has the student populate these new tables, create a normalized vehicle table with foreign keys, and add indexes to improve query performance. Finally, it asks the student to write queries against the normalized schema.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
178 views4 pages
DBSLab 3
The document provides instructions for normalizing a vehicle database table. It has the student create new tables to store make, model, drive, and fuel type data separately. It then has the student populate these new tables, create a normalized vehicle table with foreign keys, and add indexes to improve query performance. Finally, it asks the student to write queries against the normalized schema.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 4
DBS Lab 3
Name: Steve Dolan
1. Retrieve the average MPG Highway for all vehicles. Paste the SQL and results below. Select AVG(mpgHighway) from `vehicle` Result : 32.688334334353904 2. Retrieve the top 10 (best) average MPG City values by vehicle model. Group the average MPG values by vehicle model. Exclude vehicles with a MPG city value of 0 as these are electric cars. Example: The average MPG city of all Ford Mustangs across all years would be 1 of the rows returned. Paste the SQL below. Select AVG(mpgCity) as avgValue, model from (select * from vehicle where `mpgCity`!= 0) as vehicle Group By `model` order by avgValue desc Limit 10 3. Retrieve the count of models produced by each make in 1997. Order the results by make. Paste the SQL and results below. Select count(*) , make from `vehicle` where year = 1997 group by `make` order by make 4. Retrieve the count of models produced by each make in only 2002. Order the results by make. Exclude makes who only produce less than 5 models by using a having clause. Paste the SQL and results below. Select count(*) as count , make from `vehicle` where year = 2002 group by `make` having count > 5 order by make
In you example database look at the vehicle table. Like the
cableRawData table the data is not normalized. For this section you will be normalizing this table. 5. The columns with repeating data will be moved to separate tables. Create tables for the following columns: make, model, drive, fuelType. Name the tables vehicleMake, vehicleModel, vehicleDrive and vehicleFuelType. Set the id fields of these table auto increment. Table type should be INNOdb. Paste the SQL below. CREATE TABLE vehicleMake (vehicleMakeId int not null auto_increment, make varchar(255), primary key (vehicleMakeId)) ENGINE=InnoDB; CREATE TABLE vehicleModel (vehicleModelId int not null auto_increment, model varchar(255), primary key (vehicleModelId)) ENGINE=InnoDB; CREATE TABLE vehicleDrive (vehicleDriveId int not null auto_increment, drive varchar(255), primary key (vehicleDriveId)) ENGINE=InnoDB; CREATE TABLE vehicleFuelType (vehicleFuelType int not null auto_increment, fuelType varchar(255), primary key (vehicleFuelType)) ENGINE=InnoDB; 6. Create unique indexes on the name columns for the 4 tables we just created. Paste the SQL below. CREATE UNIQUE INDEX vehicleMakeId ON vehicleMake (vehicleMakeId);
CREATE UNIQUE INDEX vehicleFuelType
ON vehicleFuelType (vehicleFuelType); CREATE UNIQUE INDEX vehicleModelId ON vehicleModel (vehicleModelId); CREATE UNIQUE INDEX vehicleDriveId ON vehicleDrive (vehicleDriveId); 7. Populate the 4 new tables with the appropriate data using the select into statement with the distinct function. Paste the SQL below.
8. Create a new table called vehicleNormal. Include the
following columns: vehicleId, makeId, modelId, Year, cylinders, driveId, mpgHighway, mpgCity and fuelTypeId. Ids should be integers. MPG should be decimals. Paste the SQL below. CREATE TABLE vehicleNormal (vehicleId int not null auto_increment, makeId int (11) default null, modelId int(11) default null, Year int(11) default null, cylinders varchar(255) default null, driveId int(11) default null, mpgHighway decimal (10,2) default null, mpgCity decimal (10,2) default null, fuelTypeId int(11) default null, primary key (vehicleId) unique key (vehicleId)) ENGINE=InnoDB; DEFAULT CHARSET= latin1;
9. To increase the speed of the queries we will run in the next
question, create four indexes on the vehicle table for the columns: make, model, drive, fuelType.
10. Populate vehicleNormal by joining the vehicle,
vehicleMake, vehicleModel, vehicleDrive and vehicleFuelType tables. Paste the SQL below.
11. Write a select statement to return the following fields:
vehicle Id, make, model, year, drive, fuel type. Do not use the vehicle table, instead use the 5 new tables we just created. Paste the SQL and results below.
To complete this assignment, upload this document to FSO.