On SQL Managment studio
This lab is all about database normalization. Download, from DocShare, and run Week 6
Normalizing.sql to create the four databases, UNF (Unnormalized Form), FNF (First Normal
Form), SNF (Second Normal Form), and TNF (Third Norma Form) used in this lab. Each of the
following will be executed against all four databases. This will require a use and go statement
between each query. All four queries should be able to run at one time. The goal of this lab is to
show how the different normalization change how data is queried. Note: The same result set will
be returned from each database. This is a good check to see that each query is correct.
Write a select statement that returns the project code, project name, and project manager.
List each Employee’s name, department, and department name.
List employee by project.
List each employee, project name, hourly rate, and department name.
the database is
Use master
GO
--
-- Unnormalized Database
--
CREATE DATABASE UNF;
GO
USE UNF;
GO
CREATE TABLE Unnormalized
(
ProjectCode varchar(100),
ProjectName varchar(100),
ProjectManager varchar(255),
ProjectBudget Decimal(10,2),
EmployeeNumber varchar(10),
EmployeeName varchar(100),
DepartmentNumber varchar(10),
DepartmentName varchar(100),
HourlyRate Decimal(10,2)
);
INSERT INTO Unnormalized
(ProjectCode, ProjectName, ProjectManager, ProjectBudget, EmployeeNumber,
EmployeeName, DepartmentNumber, DepartmentName, HourlyRate)
VALUES (\'PC010\', \'Reservation System\', \'Mr. Jones\', 120500.00, \'S100\', \'John\', \'D03\',
\'Database\', 21.00)
INSERT INTO Unnormalized
(ProjectCode, ProjectName, ProjectManager, ProjectBudget, EmployeeNumber,
EmployeeName, DepartmentNumber, DepartmentName, HourlyRate)
VALUES (\'PC010\', \'Reservation System\', \'Mr. Jones\', 120500.00, \'S101\', \'George\',
\'D02\', \'Testing\', 16.50)
INSERT INTO Unnormalized
(ProjectCode, ProjectName, ProjectManager, ProjectBudget, EmployeeNumber,
EmployeeName, DepartmentNumber, DepartmentName, HourlyRate)
VALUES (\'PC010\', \'Reservation System\', \'Mr. Jones\', 120500.00, \'S102\', \'Bob\', \'D01\',
\'IT\', 22.00)
INSERT INTO Unnormalized
(ProjectCode, ProjectName, ProjectManager, ProjectBudget, EmployeeNumber,
EmployeeName, DepartmentNumber, DepartmentName, HourlyRate)
VALUES (\'PC011\', \'HR System\', \'Mrs. Smith\', 500500.00, \'S103\', \'Jack\', \'D03\',
\'Database\', 18.50)
INSERT INTO Unnormalized
(ProjectCode, ProjectName, ProjectManager, ProjectBudget, EmployeeNumber,
EmployeeName, DepartmentNumber, DepartmentName, HourlyRate)
VALUES (\'PC011\', \'HR System\', \'Mrs. Smith\', 500500.00, \'S104\', \'Jane\', \'D02\',
\'Testing\', 17.00)
INSERT INTO Unnormalized
(ProjectCode, ProjectName, ProjectManager, ProjectBudget, EmployeeNumber,
EmployeeName, DepartmentNumber, DepartmentName, HourlyRate)
VALUES (\'PC011\', \'HR System\', \'Mrs. Smith\', 500500.00, \'S315\', \'Dave\', \'D01\', \'IT\',
23.50)
INSERT INTO Unnormalized
(ProjectCode, ProjectName, ProjectManager, Project.
9548086042 for call girls in Indira Nagar with room service
On SQL Managment studioThis lab is all about database normalizatio.pdf
1. On SQL Managment studio
This lab is all about database normalization. Download, from DocShare, and run Week 6
Normalizing.sql to create the four databases, UNF (Unnormalized Form), FNF (First Normal
Form), SNF (Second Normal Form), and TNF (Third Norma Form) used in this lab. Each of the
following will be executed against all four databases. This will require a use and go statement
between each query. All four queries should be able to run at one time. The goal of this lab is to
show how the different normalization change how data is queried. Note: The same result set will
be returned from each database. This is a good check to see that each query is correct.
Write a select statement that returns the project code, project name, and project manager.
List each Employee’s name, department, and department name.
List employee by project.
List each employee, project name, hourly rate, and department name.
the database is
Use master
GO
--
-- Unnormalized Database
--
CREATE DATABASE UNF;
GO
USE UNF;
GO
CREATE TABLE Unnormalized
(
ProjectCode varchar(100),
ProjectName varchar(100),
ProjectManager varchar(255),
ProjectBudget Decimal(10,2),
EmployeeNumber varchar(10),
EmployeeName varchar(100),
DepartmentNumber varchar(10),
DepartmentName varchar(100),
HourlyRate Decimal(10,2)
);
5. (ProjectCode, EmployeeNumber, EmployeeName, DepartmentNumber, DepartmentName,
HourlyRate)
VALUES ('PC011', 'S315', 'Dave', 'D01', 'IT', 23.50);
INSERT INTO ProjectStaff
(ProjectCode, EmployeeNumber, EmployeeName, DepartmentNumber, DepartmentName,
HourlyRate)
VALUES ('PC012', 'S137', 'Sam', 'D03', 'Database', 21.50);
INSERT INTO ProjectStaff
(ProjectCode, EmployeeNumber, EmployeeName, DepartmentNumber, DepartmentName,
HourlyRate)
VALUES ('PC012', 'S218', 'Neil', 'D02', 'Testing', 15.50);
INSERT INTO ProjectStaff
(ProjectCode, EmployeeNumber, EmployeeName, DepartmentNumber, DepartmentName,
HourlyRate)
VALUES ('PC012', 'S109', 'Hope', 'D01', 'IT', 20.50);
GO
--
-- Second Normal Form
--
-- 1 - First Normal Form Plus:
--
-- 2 - Remove the partial dependencies(A type of functional dependency where a field
-- is only functionally dependent on the part of primary key) of any non-key field.
--
-- 3 - If field B depends on field A and vice versa. Also for a given value of B, we have
-- only one possible value of A and vice versa, Then we put the field B in to new
-- database table where B will be primary key and also marked as foreign key in
-- parent table.
--
CREATE DATABASE SNF;
GO
USE SNF;
GO
CREATE TABLE ProjectInfo
(
ProjectCode varchar(100),
8. (ProjectCode, EmployeeNumber, HourlyRate)
VALUES ('PC011', 'S104', 17.00);
INSERT INTO ProjectRates
(ProjectCode, EmployeeNumber, HourlyRate)
VALUES ('PC011', 'S315', 23.50);
INSERT INTO ProjectRates
(ProjectCode, EmployeeNumber, HourlyRate)
VALUES ('PC012', 'S137', 21.50);
INSERT INTO ProjectRates
(ProjectCode, EmployeeNumber, HourlyRate)
VALUES ('PC012', 'S218', 15.50);
INSERT INTO ProjectRates
(ProjectCode, EmployeeNumber, HourlyRate)
VALUES ('PC012', 'S109', 20.50);
GO
--
-- Third Normal Form
--
-- 1 - Second Normal Form Plus:
--
-- 2 - Remove the transitive dependecies(A type of functional dependency where a field
-- is functionally dependent on the Field that is not the primary key.Hence
-- its value is determined, indirectly by the primary key )
--
-- 3 - Make separate table for transitive dependent Field.
--
CREATE DATABASE TNF;
GO
USE TNF;
GO
CREATE TABLE ProjectInfo
(
ProjectCode varchar(100),
ProjectName varchar(100),
ProjectManager varchar(255),
ProjectBudget Decimal(10,2)
10. (DepartmentNumber, DepartmentName)
VALUES ('D03', 'Database');
INSERT INTO DepartmentInfo
(DepartmentNumber, DepartmentName)
VALUES ('D02', 'Testing');
INSERT INTO DepartmentInfo
(DepartmentNumber, DepartmentName)
VALUES ('D01', 'IT');
INSERT INTO EmployeeInfo
(EmployeeNumber, EmployeeName, DepartmentNumber)
VALUES ('S100', 'John', 'D03');
INSERT INTO EmployeeInfo
(EmployeeNumber, EmployeeName, DepartmentNumber)
VALUES ('S101', 'George', 'D02');
INSERT INTO EmployeeInfo
(EmployeeNumber, EmployeeName, DepartmentNumber)
VALUES ('S102', 'Bob', 'D01');
INSERT INTO EmployeeInfo
(EmployeeNumber, EmployeeName, DepartmentNumber)
VALUES ('S103', 'Jack', 'D03');
INSERT INTO EmployeeInfo
(EmployeeNumber, EmployeeName, DepartmentNumber)
VALUES ('S104', 'Jane', 'D02');
INSERT INTO EmployeeInfo
(EmployeeNumber, EmployeeName, DepartmentNumber)
VALUES ('S315', 'Dave', 'D01');
INSERT INTO EmployeeInfo
(EmployeeNumber, EmployeeName, DepartmentNumber)
VALUES ('S137', 'Sam', 'D03');
INSERT INTO EmployeeInfo
(EmployeeNumber, EmployeeName, DepartmentNumber)
VALUES ('S218', 'Neil', 'D02');
INSERT INTO EmployeeInfo
(EmployeeNumber, EmployeeName, DepartmentNumber)
VALUES ('S109', 'Hope', 'D01');
INSERT INTO ProjectRates
11. (ProjectCode, EmployeeNumber, HourlyRate)
VALUES ('PC010', 'S100', 21.00);
INSERT INTO ProjectRates
(ProjectCode, EmployeeNumber, HourlyRate)
VALUES ('PC010', 'S101', 16.50);
INSERT INTO ProjectRates
(ProjectCode, EmployeeNumber, HourlyRate)
VALUES ('PC010', 'S102', 22.00);
INSERT INTO ProjectRates
(ProjectCode, EmployeeNumber, HourlyRate)
VALUES ('PC011', 'S103', 18.50);
INSERT INTO ProjectRates
(ProjectCode, EmployeeNumber, HourlyRate)
VALUES ('PC011', 'S104', 17.00);
INSERT INTO ProjectRates
(ProjectCode, EmployeeNumber, HourlyRate)
VALUES ('PC011', 'S315', 23.50);
INSERT INTO ProjectRates
(ProjectCode, EmployeeNumber, HourlyRate)
VALUES ('PC012', 'S137', 21.50);
INSERT INTO ProjectRates
(ProjectCode, EmployeeNumber, HourlyRate)
VALUES ('PC012', 'S218', 15.50);
INSERT INTO ProjectRates
(ProjectCode, EmployeeNumber, HourlyRate)
VALUES ('PC012', 'S109', 20.50);
Solution
here are 12 queries for the database. whenever you find all columns in a single table, you just
fetch it. Otherwise you have to join the 2 tables based on the matching common key... like in our
example ProjectCode or EmployeeNumber. Also using table aliases its convinient to write
queries in more readable and short form.
=========================
for unnormalized form
select ProjectCode,ProjectName,ProjectManager from Unnormalized;
12. select Employeename,DepartmentNumber,DepartmentName from Unnormalized;
select ProjectCode ,Employeename from Unnormalized order by ProjectCode;
select ProjectName ,EmployeeName,HourlyRate, DepartmentName from Unnormalized;
===========================================
for 1st normal form
select ProjectCode,ProjectName,ProjectManager from ProjectInfo;
select Employeename,DepartmentNumber,DepartmentName from ProjectStaff;
select ProjectCode ,Employeename from ProjectStaff;
select p.ProjectName ,s.EmployeeName,s.HourlyRate, s.DepartmentName
from ProjectStaff s JOIN ProjectInfo p
using (ProjectCode);
========================================
for 2nd normal form
select ProjectCode,ProjectName,ProjectManager from ProjectInfo;
select Employeename,DepartmentNumber,DepartmentName from EmployeeInfo;
select r.ProjectCode ,e.EmployeeName
from ProjectRates r JOIN EmployeeInfo e
using (EmployeeNumber);
SELECT p.ProjectName,e.EmployeeName,e.DepartmentName,r.HourlyRate
FROM
ProjectRates r
INNER JOIN
EmployeeInfo e on r.EmployeeNumber = e.EmployeeNumber
LEFT JOIN
ProjectInfo p on r.ProjectCode = p.ProjectCode