SlideShare a Scribd company logo
1 of 33
CREATE DATABASE dbServiceProvider;
USE dbServiceProvider;
CREATE TABLE tblChatRoom(
ChatRoomId INTEGER IDENTITY(1, 1),
[Description] VARCHAR(255),
RoomType VARCHAR(25),
CONSTRAINT PK_tblChatRoom_ChatRoomId PRIMARY KEY(ChatRoomId)
);
CREATE TABLE tblRating(
ClientId INT,
ServiceProviderID INT,
RatingValue INT,
CONSTRAINT PK_tblRating_ClientId_ServiceProviderID PRIMARY KEY(ClientId, ServiceProviderID),
CONSTRAINT FK_tblRating_ClientId FOREIGN KEY(ClientId)
REFERENCES tblClient(ClientId),
CONSTRAINT FK_tblRating_SerivceProviderId FOREIGN KEY(ServiceProviderId)
REFERENCES tblServiceProvider(ServiceProviderId)
);
CREATE TABLE tblUser(
UserId INTEGER IDENTITY(1, 1),
Title VARCHAR(25),
FName VARCHAR(25),
LName VARCHAR(25),
Email VARCHAR(50) NOT NULL,
IsConfirmEmail BIT,
NIC VARCHAR(25) NOT NULL,
SaltedPassword VARCHAR(255) NOT NULL,
City VARCHAR(25) NOT NULL,
IsOnline BIT,
ChatRoomId INTEGER,
UserType VARCHAR(25),
CONSTRAINT PK_tblUser_UserId PRIMARY KEY(UserId),
CONSTRAINT UK_tblUser_SaltedPassword UNIQUE (SaltedPassword),
CONSTRAINT FK_tblUser_ChatRoomId FOREIGN KEY(ChatRoomId)
REFERENCES tblChatRoom(ChatRoomId),
);
CREATE TABLE tblMiddleName(
ID INT IDENTITY(1,1),
UserId INTEGER,
MName VARCHAR(25),
CONSTRAINT PK_tblMiddleName_UserId_MName PRIMARY KEY(ID),
CONSTRAINT FK_tblMiddleName_UserId FOREIGN KEY(UserId)
REFERENCES tblUser(UserId)
);
CREATE TABLE tblContactNumber(
UserId INTEGER,
Tel VARCHAR(25),
CONSTRAINT PK_tblContactNumber_UserId_Tel PRIMARY KEY(UserId, Tel),
CONSTRAINT FK_tblContactNumber_UserId FOREIGN KEY(UserId)
REFERENCES tblUser(UserId)
);
CREATE TABLE tblUserLog(
LoginId INTEGER IDENTITY(1, 1),
UserId INTEGER,
LoginTime DATETIME,
LogoutTime DATETIME,
CONSTRAINT PK_tblUserLog_LoginId PRIMARY KEY(LoginId),
CONSTRAINT FK_tblUserLog_UserId FOREIGN KEY(UserId)
REFERENCES tblUser(UserId)
);
CREATE TABLE tblAdministrator(
AdminId INTEGER IDENTITY(1, 1),
UserID INTEGER,
Permission VARCHAR(255) NOT NULL,
CONSTRAINT PK_tblAdministrator_AdminId PRIMARY KEY(AdminId),
CONSTRAINT FK_tblAdministrator_UserId FOREIGN KEY(UserId)
REFERENCES tblUser(UserId)
);
CREATE TABLE tblReport(
ReportId INTEGER IDENTITY(1, 1),
AdminId INTEGER,
[Date] DATETIME,
Content VARCHAR(MAX) NOT NULL,
IsAnswered BIT,
IsForwarded BIT,
CONSTRAINT PK_tblReport_ReportId PRIMARY KEY(ReportId),
CONSTRAINT FK_tblReport_AdminId FOREIGN KEY(AdminId)
REFERENCES tblAdministrator(AdminId)
);
CREATE TABLE tblNotification(
NotificationId INTEGER IDENTITY(1, 1),
UserId INTEGER NOT NULL,
[Date] DATETIME,
[Message] VARCHAR(MAX) NOT NULL,
IsRead BIT,
CONSTRAINT PK_tblNotification_NotificationId PRIMARY KEY(NotificationId),
CONSTRAINT FK_tblNotification_UserId FOREIGN KEY(UserId)
REFERENCES tblUser(UserId)
);
CREATE TABLE tblNotificationType(
TypeId INTEGER IDENTITY(1, 1),
TypeName VARCHAR(25) NOT NULL,
Description VARCHAR(MAX),
CONSTRAINT PK_tblNotificationType_TypeId PRIMARY KEY(TypeId)
);
CREATE TABLE tblNotification_NotificationType(
NotificationId INTEGER,
TypeId INTEGER,
CONSTRAINT PK_tblNotification_NotificationType_NotificationId_TypeId PRIMARY KEY(NotificationId, TypeId),
CONSTRAINT FK_tblNotification_NotificationType_NotificationId FOREIGN KEY(NotificationId)
REFERENCES tblNotification(NotificationId),
CONSTRAINT FK_tblNotification_NotificationType_TypeId FOREIGN KEY(TypeId)
REFERENCES tblNotificationType(TypeId)
);
CREATE TABLE tblNotificationRecieve(
NotificationId INTEGER,
UserId INTEGER,
CONSTRAINT PK_tblNotificationRecieve_NotificationId_UserId PRIMARY KEY(UserId),
CONSTRAINT FK_tblNotificationRecieve_UserId FOREIGN KEY(UserId)
REFERENCES tblUser(UserId),
CONSTRAINT FK_tblNotificationRecieve_NotificationId FOREIGN KEY(NotificationId)
REFERENCES tblNotification(NotificationId)
);
CREATE TABLE tblChat(
ChatId INTEGER IDENTITY(1, 1),
ChatRoomId INTEGER NOT NULL,
FromDateTime DATETIME,
ToDateTime DATETIME,
CONSTRAINT PK_tblChat_ChatId PRIMARY KEY(ChatId),
CONSTRAINT FK_tblChat_ChatRoomId FOREIGN KEY(ChatRoomId)
REFERENCES tblChatRoom(ChatRoomId)
);
CREATE TABLE tblChat_User(
ChatId INTEGER,
UserId INTEGER,
CONSTRAINT PK_tblChat_User_ChatId_UserId PRIMARY KEY(ChatId, UserId),
CONSTRAINT FK_tblChat_User_UserId FOREIGN KEY(UserId)
REFERENCES tblUser(UserId),
CONSTRAINT FK_tblChat_User_ChatId FOREIGN KEY(ChatId)
REFERENCES tblChat(ChatId)
);
CREATE TABLE tblChatMessage(
MessageId INTEGER IDENTITY(1, 1),
ChatId INTEGER,
SendUserId INTEGER,
[DateTime] DATETIME,
Content VARCHAR(MAX),
CONSTRAINT PK_tblChatMessage_MessageId PRIMARY KEY(MessageId),
CONSTRAINT FK_tblChatMessage_ChatId FOREIGN KEY(ChatId)
REFERENCES tblChat(ChatId),
CONSTRAINT FK_tblChatMessage_SendUserId FOREIGN KEY(SendUserId)
REFERENCES tblUser(UserId)
);
CREATE TABLE tblSeenBy(
MessageId INTEGER,
UserId INTEGER,
[DateTime] DATETIME,
CONSTRAINT PK_tblSeenBy_MessageId_UserId PRIMARY KEY(MessageId, UserId),
CONSTRAINT FK_tblSeenBy_MessageId FOREIGN KEY(MessageId)
REFERENCES tblChatMessage(MessageId),
CONSTRAINT FK_tblSeenBy_UserId FOREIGN KEY(UserId)
REFERENCES tblUser(UserId)
);
CREATE TABLE tblThread(
ThreadId INTEGER IDENTITY(1, 1),
UserId INTEGER,
[DateTime] DATETIME,
Title VARCHAR(255) NOT NULL,
CONSTRAINT PK_tblThread_ThreadId PRIMARY KEY(ThreadId),
CONSTRAINT FK_tblThread_UserId FOREIGN KEY(UserId)
REFERENCES tblUser(UserId)
);
CREATE TABLE tblPost(
PostId INTEGER IDENTITY(1, 1),
ThreadId INTEGER NOT NULL,
UserId INTEGER,
[DateTime] DATETIME,
Title VARCHAR(255) NOT NULL,
Content VARCHAR(MAX) NOT NULL,
CONSTRAINT PK_tblPost_PostId PRIMARY KEY(PostId),
CONSTRAINT FK_tblPost_ThreadId FOREIGN KEY(ThreadId)
REFERENCES tblThread(ThreadId),
CONSTRAINT FK_tblPost_UserId FOREIGN KEY(UserId)
REFERENCES tblUser(UserId)
);
CREATE TABLE tblClient(
ClientId INTEGER,
DateJoined DATETIME NOT NULL,
Address VARCHAR(510),
Longitude VARCHAR(25) NOT NULL,
Latitude VARCHAR(25) NOT NULL,
CONSTRAINT PK_tblClient_UserId PRIMARY KEY(ClientId),
CONSTRAINT FK_tblClient_UserId FOREIGN KEY(ClientId) ON DELETE CASCADE
REFERENCES tblUser(UserId)
);
CREATE TABLE tblServiceProvider(
ServiceProviderId INTEGER,
[Image] IMAGE,
BackgroundImage IMAGE,
DOB DATETIME NOT NULL,
Fax VARCHAR(25),
Website VARCHAR(50),
[Description] VARCHAR(MAX),
DateJoined DATETIME NOT NULL,
WorkExperience INTEGER,
WorkAddress VARCHAR(255),
Longitude VARCHAR(25) NOT NULL,
Latitude VARCHAR(25) NOT NULL,
JobType VARCHAR(25) NOT NULL,
CONSTRAINT PK_tblServiceProvider_ServiceProviderId PRIMARY KEY(ServiceProviderId),
CONSTRAINT FK_tblServiceProvider_ServiceProviderId FOREIGN KEY(ServiceProviderId)
REFERENCES tblUser(UserId) ON DELETE CASCADE
);
CREATE TABLE tblRecommendation(
ServiceProviderId INTEGER,
ByWhom VARCHAR(255) NOT NULL,
Occupation VARCHAR(255),
Relationship VARCHAR(50) NOT NULL,
[Description] VARCHAR(255),
CONSTRAINT PK_tblRecommendation_ServiceProviderId_ByWhom PRIMARY KEY(ServiceProviderId, ByWhom),
CONSTRAINT FK_tblRecommendation_ServiceProviderId FOREIGN KEY(ServiceProviderId)
REFERENCES tblServiceProvider(ServiceProviderId)
);
CREATE TABLE tblAppointmentDetail(
AppointmentId INTEGER IDENTITY(1, 1),
ClientId INTEGER,
SerivceProviderId INTEGER,
[DateTime] DATETIME,
[Subject] VARCHAR(255),
Content VARCHAR(MAX),
Reply VARCHAR(50),
CONSTRAINT PK_tblAppointmentDetail_AppointmentId PRIMARY KEY(AppointmentId),
CONSTRAINT FK_tblClient_ClientId FOREIGN KEY(ClientId)
REFERENCES tblUser(UserId),
CONSTRAINT FK_tblClient_SerivceProviderId FOREIGN KEY(SerivceProviderId)
REFERENCES tblUser(UserId)
);
CREATE TABLE tblReview(
ReviewId INTEGER IDENTITY(1,1),
ClientId INTEGER,
ServiceProviderId INTEGER,
[DateTime] DATETIME,
Content VARCHAR(MAX),
CONSTRAINT PK_tblReview_ReviewId PRIMARY KEY(ReviewId),
CONSTRAINT FK_tblReview_ClientId FOREIGN KEY(ClientId)
REFERENCES tblClient(ClientId),
CONSTRAINT FK_tblReview_SerivceProviderId FOREIGN KEY(ServiceProviderId)
REFERENCES tblServiceProvider(ServiceProviderId)
);
CREATE TABLE tblGroup(
GroupId INTEGER IDENTITY(1, 1),
GroupName VARCHAR(50),
CreateDate DATETIME,
CONSTRAINT PK_tblGroup_GroupId PRIMARY KEY(GroupId)
);
CREATE TABLE tblServiceProvider_Group(
ServiceProviderId INTEGER,
GroupId INTEGER,
CONSTRAINT PK_tblServiceProvider_Group_ServiceProviderId_GroupId PRIMARY KEY(ServiceProviderId, GroupId),
CONSTRAINT FK_tblServiceProvider_Group_SerivceProviderId FOREIGN KEY(ServiceProviderId)
REFERENCES tblServiceProvider(ServiceProviderId),
CONSTRAINT FK_tblServiceProvider_Group_GroupId FOREIGN KEY(GroupId)
REFERENCES tblGroup(GroupId)
);
CREATE TABLE tblLawyer(
LawyerId INTEGER,
RegNo INTEGER,
[Type] VARCHAR(50),
CONSTRAINT PK_tblLawyer_LawyerId PRIMARY KEY(LawyerId),
CONSTRAINT FK_tblLawyer_LawyerId FOREIGN KEY(LawyerId)
REFERENCES tblServiceProvider(ServiceProviderId),
CONSTRAINT UK_tblLawyer_RegNo UNIQUE(RegNo)
);
CREATE TABLE tblHighSchoolEducationOfLawyer(
LawyerId INTEGER,
SchoolName VARCHAR(50),
[From] DATETIME,
[To] DATETIME,
CONSTRAINT PK_tblHighSchoolEducationOfLawyer_LawyerId_SchoolName PRIMARY KEY(LawyerId,SchoolName),
CONSTRAINT FK_tblHighSchoolEducationOfLawyer_LawyerId FOREIGN KEY(LawyerId)
REFERENCES tblLawyer(LawyerId)
);
CREATE TABLE tblUniversityEducationOfLawyer(
LawyerId INTEGER,
UniversityName VARCHAR(50),
[From] DATETIME,
[To] DATETIME,
CONSTRAINT PK_tblUniversityEducationOfLawyer_LawyerId_UniversityName PRIMARY KEY(LawyerId,
UniversityName),
CONSTRAINT FK_tblUniversityEducationOfLawyer_LawyerId FOREIGN KEY(LawyerId)
REFERENCES tblLawyer(LawyerId)
);
CREATE TABLE tblExpertiseOfLawyer(
LawyerId INTEGER,
Skill VARCHAR(50),
CONSTRAINT PK_tblExpertiseOfLawyer_LawyerId_Skill PRIMARY KEY(LawyerId, Skill),
CONSTRAINT FK_tblExpertiseOfLawyer_LawyerId FOREIGN KEY(LawyerId)
REFERENCES tblLawyer(LawyerId)
);
CREATE TABLE tblPlumber(
PlumberId INTEGER,
CONSTRAINT PK_tblPlumber_PlumberId PRIMARY KEY(PlumberId),
CONSTRAINT FK_tblPlumber_PlumberId FOREIGN KEY(PlumberId)
REFERENCES tblServiceProvider(ServiceProviderId),
);
CREATE TABLE tblTechnicalEducationOfPlumber(
PlumberId INTEGER,
TechnicalSchoolName VARCHAR(50),
[From] DATETIME,
[To] DATETIME,
CONSTRAINT PK_tblTechnicalEducationOfPlumber_PlumberId_TechnicalSchoolName PRIMARY KEY(PlumberId,
TechnicalSchoolName),
CONSTRAINT FK_tblTechnicalEducationOfPlumber_PlumberId FOREIGN KEY(PlumberId)
REFERENCES tblPlumber(PlumberId)
);
CREATE TABLE tblExpertiseOfPlumber(
PlumberId INTEGER,
Skill VARCHAR(50),
CONSTRAINT PK_tblExpertiseOfPlumber_PlumberId_Skill PRIMARY KEY(PlumberId, Skill),
CONSTRAINT FK_tblExpertiseOfPlumber_PlumberId FOREIGN KEY(PlumberId)
REFERENCES tblPlumber(PlumberId)
);
CREATE TABLE tblMasonBass(
MasonBassId INTEGER,
CONSTRAINT PK_tblMasonBass_MasonBassId PRIMARY KEY(MasonBassId),
CONSTRAINT FK_tblMasonBass_MasonBassId FOREIGN KEY(MasonBassId)
REFERENCES tblServiceProvider(ServiceProviderId),
);
CREATE TABLE tblTechnicalEducationOfMasonBass(
MasonBassId INTEGER,
TechnicalSchoolName VARCHAR(50),
[From] DATETIME,
[To] DATETIME,
CONSTRAINT PK_tblTechnicalEducationOfMasonBass_MasonBassId_TechnicalSchoolName PRIMARY KEY(MasonBassId,
TechnicalSchoolName),
CONSTRAINT FK_tblTechnicalEducationOfMasonBass_MasonBassId FOREIGN KEY(MasonBassId)
REFERENCES tblMasonBass(MasonBassId)
);
CREATE TABLE tblExpertiseOfMasonBass(
MasonBassId INTEGER,
Skill VARCHAR(50),
CONSTRAINT PK_tblExpertiseOfMasonBass_MasonBassId_Skill PRIMARY KEY(MasonBassId, Skill),
CONSTRAINT FK_tblExpertiseOfMasonBass_MasonBassId FOREIGN KEY(MasonBassId)
REFERENCES tblMasonBass(MasonBassId)
);
CREATE TABLE tblPropertyTypeOfMasonBass(
MasonBassId INTEGER,
PropertyType VARCHAR(50),
CONSTRAINT PK_tblPropertyTypeOfMasonBass_MasonBassId_PropertyType PRIMARY KEY(MasonBassId, PropertyType),
CONSTRAINT FK_tblPropertyTypeOfMasonBass_MasonBassId FOREIGN KEY(MasonBassId)
REFERENCES tblMasonBass(MasonBassId)
);
CREATE TABLE tblEngineer(
EngineerId INTEGER,
RegNo INTEGER,
[Type] VARCHAR(50),
CurrentCompany VARCHAR(50),
CONSTRAINT PK_tblEngineer_EngineerId PRIMARY KEY(EngineerId),
CONSTRAINT FK_tblEngineer_EngineerId FOREIGN KEY(EngineerId)
REFERENCES tblServiceProvider(ServiceProviderId),
CONSTRAINT UK_tblEngineer_RegNo UNIQUE(RegNo)
);
CREATE TABLE tblHighSchoolEducationOfEngineer(
EngineerId INTEGER,
SchoolName VARCHAR(50),
[From] DATETIME,
[To] DATETIME,
CONSTRAINT PK_tblHighSchoolEducationOfEngineer_EngineerId_SchoolName PRIMARY KEY(EngineerId, SchoolName),
CONSTRAINT FK_tblHighSchoolEducationOfEngineer_EngineerId FOREIGN KEY(EngineerId)
REFERENCES tblEngineer(EngineerId)
);
CREATE TABLE tblUniversityEducationOfEngineer(
EngineerId INTEGER,
UniversityName VARCHAR(50),
[From] DATETIME,
[To] DATETIME,
CONSTRAINT PK_tblUniversityEducationOfEngineer_EngineerId_UniversityName PRIMARY KEY(EngineerId,
UniversityName),
CONSTRAINT FK_tblUniversityEducationOfEngineer_EngineerId FOREIGN KEY(EngineerId)
REFERENCES tblEngineer(EngineerId)
);
CREATE TABLE tblPastExperienceOfEngineer(
EngineerId INTEGER,
CompanyName VARCHAR(50),
[From] DATETIME,
[To] DATETIME,
CONSTRAINT PK_tblPastExperienceOfEngineer_EngineerId_CompanyName PRIMARY KEY(EngineerId, CompanyName),
CONSTRAINT FK_tblPastExperienceOfEngineer_EngineerId FOREIGN KEY(EngineerId)
REFERENCES tblEngineer(EngineerId)
);
CREATE TABLE tblTeacher(
TeacherId INTEGER,
CONSTRAINT PK_tblTeacher_TeacherId PRIMARY KEY(TeacherId),
CONSTRAINT FK_tblTeacher_TeacherId FOREIGN KEY(TeacherId)
REFERENCES tblServiceProvider(ServiceProviderId)
);
CREATE TABLE tblHighSchoolEducationOfTeacher(
TeacherId INTEGER,
SchoolName VARCHAR(50),
[From] DATETIME,
[To] DATETIME,
CONSTRAINT PK_tblHighSchoolEducationOfTeacher_TeacherId_SchoolName PRIMARY KEY(TeacherId, SchoolName),
CONSTRAINT FK_tblHighSchoolEducationOfTeacher_TeacherId FOREIGN KEY(TeacherId)
REFERENCES tblTeacher(TeacherId)
);
CREATE TABLE tblUniversityEducationOfTeacher(
TeacherId INTEGER,
UniversityName VARCHAR(50),
[From] DATETIME,
[To] DATETIME,
CONSTRAINT PK_tblUniversityEducationOfTeacher_TeacherId_UniversityName PRIMARY KEY(TeacherId,
UniversityName),
CONSTRAINT FK_tblUniversityEducationOfTeacher_TeacherId FOREIGN KEY(TeacherId)
REFERENCES tblTeacher(TeacherId)
);
CREATE TABLE tblCourse(
TeacherId INTEGER,
CourseName VARCHAR(50),
[Level] VARCHAR(25),
[Weekday] VARCHAR(25),
Duration VARCHAR(50),
Fee MONEY,
CONSTRAINT PK_tblCourse_TeacherId_CourseName_Level_Weekday_Duration PRIMARY KEY(TeacherId, CourseName,
[Level], [Weekday], Duration),
CONSTRAINT FK_tblCourse_TeacherId FOREIGN KEY(TeacherId)
REFERENCES tblTeacher(TeacherId)
);
CREATE FUNCTION getFullMiddleName(@UID INTEGER)
RETURNS VARCHAR(255)
AS
BEGIN
DECLARE @MiddleName VARCHAR(25)
DECLARE @FullMiddleName VARCHAR(255)
DECLARE @noOfMiddleNames INTEGER
DECLARE @n INTEGER
SET @MiddleName = ''
SET @FullMiddleName = ''
SELECT @noOfMiddleNames=COUNT(UserId)
FROM tblMiddleName
WHERE UserId =@UID;
SET @n=1;
WHILE(@n <= @noOfMiddleNames)
BEGIN
WITH MyCte AS
(
SELECT ROW_NUMBER() OVER (ORDER BY M.ID) AS Row, M.MName
FROM tblUser AS U
INNER JOIN tblMiddleName AS M
ON U.UserId = M.UserId
WHERE U.UserId =@UID
)
SELECT @MiddleName=MName
FROM MyCte
WHERE Row = @n
SET @FullMiddleName = @FullMiddleName + @MiddleName
IF(@n != @noOfMiddleNames)
BEGIN
SET @FullMiddleName = @FullMiddleName + ' '
END
SET @n=@n + 1
END
RETURN @FullMiddleName
END
CREATE VIEW vwtblUser_tblServiceProviderWithFullName
AS
SELECT U.UserId AS ID, COALESCE(U.Title + ' ', '') + COALESCE(U.FName + ' ', '') +
COALESCE(dbo.getFullMiddleName(U.UserId) + ' ', '') + COALESCE(U.LName, '') AS FullName,
U.Email AS Email, U.City AS City, S.Image AS Image, S.BackgroundImage AS BackgroundImage, S.Latitude AS
Latitude,
S.Longitude AS Longitude, S.JobType AS Profession
FROM tblUser AS U
INNER JOIN tblServiceProvider AS S
ON U.UserId=S.ServiceProviderId;
CREATE PROCEDURE spGet10RandomServiceProviders
AS
BEGIN
DECLARE @NoOfSeriveProviders INT;
DECLARE @A INT;
DECLARE @B INT;
DECLARE @C INT;
DECLARE @D INT;
DECLARE @E INT;
DECLARE @F INT;
DECLARE @G INT;
DECLARE @H INT;
DECLARE @I INT;
DECLARE @J INT;
SELECT @NoOfSeriveProviders=COUNT(ServiceProviderId)
FROM tblServiceProvider;
SELECT @A = FLOOR(RAND()*(@NoOfSeriveProviders)+1),
@B = FLOOR(RAND()*(@NoOfSeriveProviders)+1),@C = FLOOR(RAND()*(@NoOfSeriveProviders)+1),
@D = FLOOR(RAND()*(@NoOfSeriveProviders)+1),@E = FLOOR(RAND()*(@NoOfSeriveProviders)+1),
@F = FLOOR(RAND()*(@NoOfSeriveProviders)+1),@G = FLOOR(RAND()*(@NoOfSeriveProviders)+1),
@H = FLOOR(RAND()*(@NoOfSeriveProviders)+1),@I = FLOOR(RAND()*(@NoOfSeriveProviders)+1),
@J = FLOOR(RAND()*(@NoOfSeriveProviders)+1);
WITH MyCte AS
(
SELECT ROW_NUMBER() OVER (ORDER BY S.ServiceProviderId) AS ROW,
COALESCE(U.Title + ' ', '') + COALESCE(U.FName + ' ', '') +
COALESCE(dbo.getFullMiddleName(U.UserId) + ' ', '') + COALESCE(U.LName, '') AS FullName,
S.WorkAddress AS WorkAddress, S.JobType AS Profession
FROM tblUser AS U
INNER JOIN tblServiceProvider AS S
ON U.UserId = S.ServiceProviderId
WHERE U.UserId =S.ServiceProviderId
)
SELECT FullName,WorkAddress, Profession
FROM Mycte
WHERE ROW IN (@A, @B, @C, @D, @E, @F, @G, @H, @I, @J);
END;
CREATE FUNCTION getFullContactDetail(@UID INTEGER)
RETURNS VARCHAR(255)
AS
BEGIN
DECLARE @ContactDetail VARCHAR(25)
DECLARE @FullContactDetail VARCHAR(255)
DECLARE @noOfContactDetails INTEGER
DECLARE @n INTEGER
SET @ContactDetail = ''
SET @FullContactDetail = ''
SELECT @noOfContactDetails=COUNT(UserId)
FROM tblContactNumber
WHERE UserId =@UID;
SET @n=1;
WHILE(@n <= @noOfContactDetails)
BEGIN
WITH MyCte AS
(
SELECT ROW_NUMBER() OVER (ORDER BY C.UserId) AS Row, C.Tel
FROM tblUser AS U
INNER JOIN tblContactNumber AS C
ON U.UserId = C.UserId
WHERE U.UserId =@UID
)
SELECT @ContactDetail=Tel
FROM MyCte
WHERE Row = @n
SET @FullContactDetail = @FullContactDetail + @ContactDetail;
IF(@n != @noOfContactDetails)
BEGIN
SET @FullContactDetail = @FullContactDetail + '/';
END
SET @n=@n + 1
END
RETURN @FullContactDetail
END
CREATE PROCEDURE spGetServiceProvidersByJobType
@JobType VARCHAR(25)
AS
BEGIN
SELECT COALESCE(U.Title + ' ', '') + COALESCE(U.FName + ' ', '') +
COALESCE(dbo.getFullMiddleName(U.UserId) + ' ', '') + COALESCE(U.LName, '') AS FullName,
U.City, dbo.getFullContactDetail(U.UserId) AS ContactDetails, S.WorkAddress, U.Email
FROM tblUser AS U
INNER JOIN tblServiceProvider AS S
ON U.UserId = S.ServiceProviderId
WHERE S.JobType = @JobType;
END
CREATE PROCEDURE spGetServiceProvidersByCity
@City VARCHAR(25)
AS
BEGIN
SELECT COALESCE(U.Title + ' ', '') + COALESCE(U.FName + ' ', '') +
COALESCE(dbo.getFullMiddleName(U.UserId) + ' ', '') + COALESCE(U.LName, '') AS FullName,
dbo.getFullContactDetail(U.UserId) AS ContactDetails, S.WorkAddress AS WorkAddress, S.JobType
FROM tblUser AS U
INNER JOIN tblServiceProvider AS S
ON U.UserId = S.ServiceProviderId
WHERE U.City = @City;
END
--SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='tblUser'
CREATE VIEW vwtblUser_tblClient_ClientProfile
AS
SELECT U.UserId AS ID, U.Title, U.FName, dbo.getFullMiddleName(U.UserId) AS FullMiddleName, U.LName,
U.Email, U.City, C.Address, dbo.getFullContactDetail(U.UserId) AS ContactDetails,
C.Latitude,C.Longitude
FROM tblUser AS U
INNER JOIN tblClient AS C
ON U.UserId=C.ClientId;
CREATE VIEW vwtblUser_tblServiceProvider_LawyerProfile
AS
SELECT U.UserId AS ID, U.Title, U.FName, U.LName,
U.Email, U.City, S.JobType,
dbo.getFullUniversityDetailOfLawyer(U.UserId) AS UniversityDetail, S.DOB,
S.Description, S.Fax, dbo.getFullContactDetail(U.UserId) AS ContactDetails,
S.WorkAddress
FROM tblUser AS U
INNER JOIN tblServiceProvider AS S
ON U.UserId=S.ServiceProviderId
WHERE S.JobType='Lawyer';
CREATE TRIGGER tr_vwtblUser_tblClient_ClientProfile
ON vwtblUser_tblClient_ClientProfile
INSTEAD OF UPDATE
AS
BEGIN
--If client ID is to be updated.
DECLARE @ID INT
DECLARE @fullMiddleName VARCHAR(255)
DECLARE @fullContactDetail VARCHAR(255)
SELECT @ID = ID FROM inserted
IF(UPDATE(ID))
BEGIN
UPDATE tblClient
SET ClientId = inserted.ID FROM inserted
WHERE tblClient.ClientId = @ID
END
--If client Title is to be updated.
IF(UPDATE(Title))
BEGIN
UPDATE tblUser
SET Title = inserted.Title FROM inserted
WHERE tblUser.UserId = @ID
END
--If client First Name is to be updated.
IF(UPDATE(FName))
BEGIN
UPDATE tblUser
SET FName = inserted.FName FROM inserted
WHERE tblUser.UserId = @ID
END
--If client Full Middle Name is to be updated.
IF(UPDATE(FullMiddleName))
BEGIN
DELETE FROM tblMiddleName
WHERE UserId=@ID;
SELECT @fullMiddleName = inserted.FullMiddleName FROM inserted
INSERT INTO tblMiddleName(UserId, MName)
SELECT @ID,splitdata FROM dbo.fnSplitString(@fullMiddleName,' ')
END
--If client Last Name is to be updated.
IF(UPDATE(LName))
BEGIN
UPDATE tblUser
SET LName = inserted.LName FROM inserted
WHERE tblUser.UserId = @ID
END
--If client Email is to be updated.
IF(UPDATE(Email))
BEGIN
UPDATE tblUser
SET Email = inserted.Email FROM inserted
WHERE tblUser.UserId = @ID
END
--If client City is to be updated.
IF(UPDATE(City))
BEGIN
UPDATE tblUser
SET City = inserted.City FROM inserted
WHERE tblUser.UserId = @ID
END
--If client Address is to be updated.
IF(UPDATE(Address))
BEGIN
UPDATE tblClient
SET Address = inserted.Address FROM inserted
WHERE tblClient.ClientId = @ID
END
--If Client ContractDetails is to be updated.
IF(UPDATE(ContactDetails))
BEGIN
DELETE FROM tblContactNumber
WHERE UserId=@ID;
SELECT @fullContactDetail = inserted.ContactDetails FROM inserted
INSERT INTO tblContactNumber(UserId, Tel)
SELECT @ID,splitdata FROM dbo.fnSplitString(@fullContactDetail,'/')
END
--If Client Latitude is to be updated.
IF(UPDATE(Latitude))
BEGIN
UPDATE tblClient
SET Latitude = inserted.Latitude FROM inserted
WHERE ClientId = @ID
END
--If Client Longitude is to be updated.
IF(UPDATE(Longitude))
BEGIN
UPDATE tblClient
SET Longitude = inserted.Longitude FROM inserted
WHERE ClientId = @ID
END
END;
CREATE PROC spEditClientDetails
@Id INT,
@Title VARCHAR(25) = NULL,
@FName VARCHAR(25) = NULL,
@LName VARCHAR(25) = NULL,
@FullMiddleName VARCHAR(255) = NULL,
@Email VARCHAR(50) = NULL,
@City VARCHAR(25) = NULL,
@Address VARCHAR(510) = NULL,
@ContactDetails VARCHAR(255) = NULL,
@Latitude VARCHAR(25) = NULL,
@Longitude VARCHAR(25) = NULL
AS
BEGIN
--If client Title is to be updated.
IF(@Title IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblClient_ClientProfile
SET Title = @Title
WHERE vwtblUser_tblClient_ClientProfile.ID = @ID
END
--If client First Name is to be updated.
IF(@FName IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblClient_ClientProfile
SET FName = @FName
WHERE vwtblUser_tblClient_ClientProfile.ID = @ID
END
--If client Full Middle Name is to be updated.
IF(@FullMiddleName IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblClient_ClientProfile
SET FullMiddleName = @FullMiddleName
WHERE vwtblUser_tblClient_ClientProfile.ID = @ID
END
--If client Last Name is to be updated.
IF(@LName IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblClient_ClientProfile
SET LName = @LName
WHERE vwtblUser_tblClient_ClientProfile.ID = @ID
END
--If client Email is to be updated.
IF(@Email IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblClient_ClientProfile
SET Email = @Email
WHERE vwtblUser_tblClient_ClientProfile.ID = @ID
END
--If client City is to be updated.
IF(@City IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblClient_ClientProfile
SET City = @City
WHERE vwtblUser_tblClient_ClientProfile.ID = @ID
END
--If client Address is to be updated.
IF(@Address IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblClient_ClientProfile
SET Address = @Address
WHERE vwtblUser_tblClient_ClientProfile.ID = @ID
END
--If Client ContractDetails is to be updated.
IF(@ContactDetails IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblClient_ClientProfile
SET ContactDetails = @ContactDetails
WHERE vwtblUser_tblClient_ClientProfile.ID = @ID
END
--If Client Latitude is to be updated.
IF(@Latitude IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblClient_ClientProfile
SET Latitude = @Latitude
WHERE vwtblUser_tblClient_ClientProfile.ID = @ID
END
--If Client Longitude is to be updated.
IF(@Longitude IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblClient_ClientProfile
SET Longitude = @Longitude
WHERE vwtblUser_tblClient_ClientProfile.ID = @ID
END
END;
--SELECT COMPATIBILITY_LEVEL
--FROM SYS.DATABASES WHERE name = 'dbServiceProvider';
--ALTER DATABASE dbServiceProvider
--SET COMPATIBILITY_LEVEL = 120;
CREATE FUNCTION [dbo].[fnSplitString]
(
@string NVARCHAR(MAX),
@delimiter CHAR(1)
)
RETURNS @output TABLE(splitdata NVARCHAR(MAX)
)
BEGIN
DECLARE @start INT, @end INT
SELECT @start = 1, @end = CHARINDEX(@delimiter, @string)
WHILE @start < LEN(@string) + 1 BEGIN
IF @end = 0
SET @end = LEN(@string) + 1
INSERT INTO @output (splitdata)
VALUES(SUBSTRING(@string, @start, @end - @start))
SET @start = @end + 1
SET @end = CHARINDEX(@delimiter, @string, @start)
END
RETURN
END
--SELECT 2,splitdata FROM dbo.fnSplitString('Malika Priyashan Kannangara',' ')
CREATE FUNCTION getFullUniversityDetailOfLawyer(@UID INTEGER)
RETURNS VARCHAR(510)
AS
BEGIN
DECLARE @UniversityDetail VARCHAR(50)
DECLARE @FullUniversityDetail VARCHAR(510)
DECLARE @noOfUniversityDetail INTEGER
DECLARE @n INTEGER
SET @UniversityDetail = ''
SET @FullUniversityDetail = ''
SELECT @noOfUniversityDetail=COUNT(LawyerId)
FROM tblUniversityEducationOfLawyer
WHERE LawyerId=@UID;
SET @n=1;
WHILE(@n <= @noOfUniversityDetail)
BEGIN
WITH MyCte AS
(
SELECT ROW_NUMBER() OVER (ORDER BY Lawyerid) AS Row, UniversityName, [From], [To]
FROM tblUniversityEducationOfLawyer
WHERE Lawyerid =@UID
)
SELECT @UniversityDetail = UniversityName
FROM MyCte
WHERE Row = @n
SET @FullUniversityDetail = @FullUniversityDetail + @UniversityDetail;
IF(@n != @noOfUniversityDetail)
BEGIN
SET @FullUniversityDetail = @FullUniversityDetail + '/';
END
SET @n=@n + 1
END
RETURN @FullUniversityDetail
END
CREATE PROC spEditServiceProviderDetails
@Id INT,
@Title VARCHAR(25) = NULL,
@FName VARCHAR(25) = NULL,
@LName VARCHAR(25) = NULL,
@Email VARCHAR(50) = NULL,
@City VARCHAR(25) = NULL,
@DOB DATETIME = NULL,
@JobType VARCHAR(25) = NULL,
@WorkAddress VARCHAR(510) = NULL,
@ContactDetails VARCHAR(255) = NULL,
@Description VARCHAR(MAX) = NULL,
@UniversityDetail VARCHAR(510) = NULL,
@Fax VARCHAR(25) = NULL
AS
BEGIN
--If lawyer Title is to be updated.
IF(@Title IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblServiceProvider_LawyerProfile
SET Title = @Title
WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID
END
--If lawyer First Name is to be updated.
IF(@FName IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblServiceProvider_LawyerProfile
SET FName = @FName
WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID
END
--If lawyer Last Name is to be updated.
IF(@LName IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblServiceProvider_LawyerProfile
SET LName = @LName
WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID
END
--If lawyer Email is to be updated.
IF(@Email IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblServiceProvider_LawyerProfile
SET Email = @Email
WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID
END
--If lawyer Date of Birth is to be updated.
IF(@DOB IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblServiceProvider_LawyerProfile
SET DOB = @DOB
WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID
END
--If lawyer University Details is to be updated.
IF(@DOB IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblServiceProvider_LawyerProfile
SET UniversityDetail = @UniversityDetail
WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID
END
--If lawyer City is to be updated.
IF(@City IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblServiceProvider_LawyerProfile
SET City = @City
WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID
END
--If lawyer Job Type is to be updated.
IF(@City IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblServiceProvider_LawyerProfile
SET JobType = @JobType
WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID
END
--If lawyer Work Address is to be updated.
IF(@WorkAddress IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblServiceProvider_LawyerProfile
SET WorkAddress = @WorkAddress
WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID
END
--If lawyer Contract Details is to be updated.
IF(@ContactDetails IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblServiceProvider_LawyerProfile
SET ContactDetails = @ContactDetails
WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID
END
--If lawyer Fax is to be updated.
IF(@Fax IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblServiceProvider_LawyerProfile
SET Fax = @Fax
WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID
END
--If lawyer Description is to be updated.
IF(@Description IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblServiceProvider_LawyerProfile
SET [Description] = @Description
WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID
END
END;
CREATE TRIGGER tr_vwtblUser_tblServiceProvider_LawyerProfile
ON vwtblUser_tblServiceProvider_LawyerProfile
INSTEAD OF UPDATE
AS
BEGIN
--If lawyer ID is to be updated.
DECLARE @ID INT
DECLARE @UniversityDetails VARCHAR(510)
DECLARE @fullContactDetail VARCHAR(255)
SELECT @ID = ID FROM inserted
IF(UPDATE(ID))
BEGIN
UPDATE tblServiceProvider
SET ServiceProviderId = inserted.ID FROM inserted
WHERE tblServiceProvider.ServiceProviderId = @ID
END
--If lawyer Title is to be updated.
IF(UPDATE(Title))
BEGIN
UPDATE tblUser
SET Title = inserted.Title FROM inserted
WHERE tblUser.UserId = @ID
END
--If lawyer First Name is to be updated.
IF(UPDATE(FName))
BEGIN
UPDATE tblUser
SET FName = inserted.FName FROM inserted
WHERE tblUser.UserId = @ID
END
--If lawyer Last Name is to be updated.
IF(UPDATE(LName))
BEGIN
UPDATE tblUser
SET LName = inserted.LName FROM inserted
WHERE tblUser.UserId = @ID
END
--If lawyer Email is to be updated.
IF(UPDATE(Email))
BEGIN
UPDATE tblUser
SET Email = inserted.Email FROM inserted
WHERE tblUser.UserId = @ID
END
--If lawyer City is to be updated.
IF(UPDATE(City))
BEGIN
UPDATE tblUser
SET City = inserted.City FROM inserted
WHERE tblUser.UserId = @ID
END
--If lawyer Date Of Birth is to be updated.
IF(UPDATE(DOB))
BEGIN
UPDATE tblServiceProvider
SET DOB = inserted.DOB FROM inserted
WHERE tblServiceProvider.ServiceProviderId = @ID
END
--If lawyer Work Address is to be updated.
IF(UPDATE(WorkAddress))
BEGIN
UPDATE tblServiceProvider
SET WorkAddress = inserted.WorkAddress FROM inserted
WHERE tblServiceProvider.ServiceProviderId = @ID
END
--If lawyer Contract Details is to be updated.
IF(UPDATE(ContactDetails))
BEGIN
DELETE FROM tblContactNumber
WHERE UserId=@ID;
SELECT @fullContactDetail = inserted.ContactDetails FROM inserted
INSERT INTO tblContactNumber(UserId, Tel)
SELECT @ID,splitdata FROM dbo.fnSplitString(@fullContactDetail,'/')
END
--If lawyer University Details is to be updated.
IF(UPDATE(UniversityDetail))
BEGIN
DELETE FROM tblUniversityEducationOfLawyer
WHERE LawyerId=@ID;
SELECT @UniversityDetails = inserted.UniversityDetail FROM inserted
INSERT INTO tblUniversityEducationOfLawyer(LawyerId, UniversityName)
SELECT @ID,splitdata FROM dbo.fnSplitString(@UniversityDetails,'/')
END
--If lawyer Fax is to be updated.
IF(UPDATE(Fax))
BEGIN
UPDATE tblServiceProvider
SET Fax = inserted.Fax FROM inserted
WHERE tblServiceProvider.ServiceProviderId = @ID
END
--If lawyer Job Type is to be updated.
IF(UPDATE(JobType))
BEGIN
UPDATE tblServiceProvider
SET JobType = inserted.JobType FROM inserted
WHERE tblServiceProvider.ServiceProviderId = @ID
END
--If lawyer Description is to be updated.
IF(UPDATE(Description))
BEGIN
UPDATE tblServiceProvider
SET Description = inserted.Description FROM inserted
WHERE tblServiceProvider.ServiceProviderId = @ID
END
END;
ALTER PROC spEditClientName
@Id INT,
@Title VARCHAR(25),
@FName VARCHAR(25),
@FullMiddleName VARCHAR(255),
@LName VARCHAR(25)
AS
BEGIN
--Client Title is to be updated.
UPDATE tblUser
SET Title = @Title
WHERE tblUser.UserId = @ID
--Client First Name is to be updated.
UPDATE tblUser
SET FName = @FName
WHERE tblUser.UserId = @ID
--Client Full Middle Name is to be updated.
UPDATE vwtblUser_tblClient_ClientProfile
SET FullMiddleName = @FullMiddleName
WHERE vwtblUser_tblClient_ClientProfile.ID = @ID
--Client Last Name is to be updated.
UPDATE tblUser
SET LName = @LName
WHERE tblUser.UserId = @ID
END;
Create database and tables for service provider app

More Related Content

Viewers also liked

Deep Dive: More Oracle Data Pump Performance Tips and Tricks
Deep Dive: More Oracle Data Pump Performance Tips and TricksDeep Dive: More Oracle Data Pump Performance Tips and Tricks
Deep Dive: More Oracle Data Pump Performance Tips and TricksGuatemala User Group
 
Comandos de linux
Comandos de linuxComandos de linux
Comandos de linuxyaser6700
 
Procesos en windows
Procesos en windowsProcesos en windows
Procesos en windowsluis
 
Comandos GNU/Linux-Unix y programación shell.
Comandos GNU/Linux-Unix y programación shell.Comandos GNU/Linux-Unix y programación shell.
Comandos GNU/Linux-Unix y programación shell.Alan Resendiz
 
Tutorial Comandos
Tutorial ComandosTutorial Comandos
Tutorial Comandoseguzman
 
20 comandos linux que todos los administradores deben conocer
20 comandos linux que todos los administradores deben conocer20 comandos linux que todos los administradores deben conocer
20 comandos linux que todos los administradores deben conocerOpenWebinars.net
 
Script Y Comandos De Linux
Script Y Comandos De LinuxScript Y Comandos De Linux
Script Y Comandos De Linuxsilvanetorres
 
Tema 5 ejercicio 05 - normalizacion
Tema 5   ejercicio 05 - normalizacionTema 5   ejercicio 05 - normalizacion
Tema 5 ejercicio 05 - normalizaciontmssnchzprds
 
Normalizacion de bases de datos
Normalizacion de bases de datosNormalizacion de bases de datos
Normalizacion de bases de datosCaro_Noirgean
 
Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)michell_quitian
 
Normalizacion de base de datos
Normalizacion de base de datosNormalizacion de base de datos
Normalizacion de base de datosSergio Sanchez
 
Comandos Editor VI
Comandos Editor VIComandos Editor VI
Comandos Editor VIUsa
 

Viewers also liked (19)

Deep Dive: More Oracle Data Pump Performance Tips and Tricks
Deep Dive: More Oracle Data Pump Performance Tips and TricksDeep Dive: More Oracle Data Pump Performance Tips and Tricks
Deep Dive: More Oracle Data Pump Performance Tips and Tricks
 
Comandos de linux
Comandos de linuxComandos de linux
Comandos de linux
 
Procesos en windows
Procesos en windowsProcesos en windows
Procesos en windows
 
Procesos en windows
Procesos en windowsProcesos en windows
Procesos en windows
 
Comandos GNU/Linux-Unix y programación shell.
Comandos GNU/Linux-Unix y programación shell.Comandos GNU/Linux-Unix y programación shell.
Comandos GNU/Linux-Unix y programación shell.
 
Ejercicios sobre procesos en Windows y Linux
Ejercicios sobre procesos en Windows y LinuxEjercicios sobre procesos en Windows y Linux
Ejercicios sobre procesos en Windows y Linux
 
Tutorial Comandos
Tutorial ComandosTutorial Comandos
Tutorial Comandos
 
20 comandos linux que todos los administradores deben conocer
20 comandos linux que todos los administradores deben conocer20 comandos linux que todos los administradores deben conocer
20 comandos linux que todos los administradores deben conocer
 
Script Y Comandos De Linux
Script Y Comandos De LinuxScript Y Comandos De Linux
Script Y Comandos De Linux
 
Linux comandos 1
Linux comandos 1Linux comandos 1
Linux comandos 1
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Tema 5 ejercicio 05 - normalizacion
Tema 5   ejercicio 05 - normalizacionTema 5   ejercicio 05 - normalizacion
Tema 5 ejercicio 05 - normalizacion
 
Normalizacion de bases de datos
Normalizacion de bases de datosNormalizacion de bases de datos
Normalizacion de bases de datos
 
Guia normalización
Guia normalizaciónGuia normalización
Guia normalización
 
Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)
 
Normalizacion de base de datos
Normalizacion de base de datosNormalizacion de base de datos
Normalizacion de base de datos
 
Guía de ejercicios de normalizacion
Guía de ejercicios de normalizacionGuía de ejercicios de normalizacion
Guía de ejercicios de normalizacion
 
Bases de datos normalizacion
Bases de datos normalizacionBases de datos normalizacion
Bases de datos normalizacion
 
Comandos Editor VI
Comandos Editor VIComandos Editor VI
Comandos Editor VI
 

Similar to Create database and tables for service provider app

SQL FILE FROM MOODLEUSE [master]GO Object Databa.pdf
SQL FILE FROM MOODLEUSE [master]GO Object Databa.pdfSQL FILE FROM MOODLEUSE [master]GO Object Databa.pdf
SQL FILE FROM MOODLEUSE [master]GO Object Databa.pdfarrowit1
 
Database Manipulation in SQL
Database Manipulation in SQLDatabase Manipulation in SQL
Database Manipulation in SQLJack Clark
 
Writeable ct es_pgcon_may_2011
Writeable ct es_pgcon_may_2011Writeable ct es_pgcon_may_2011
Writeable ct es_pgcon_may_2011David Fetter
 
Oracle eCommerce (ATG) Database Best Practices
Oracle eCommerce (ATG) Database  Best Practices Oracle eCommerce (ATG) Database  Best Practices
Oracle eCommerce (ATG) Database Best Practices Kate Semizhon
 
ORM을 맞이하는 우리의 자세
ORM을 맞이하는 우리의 자세ORM을 맞이하는 우리의 자세
ORM을 맞이하는 우리의 자세병태 정
 
Les09 (using ddl statements to create and manage tables)
Les09 (using ddl statements to create and manage tables)Les09 (using ddl statements to create and manage tables)
Les09 (using ddl statements to create and manage tables)Achmad Solichin
 
Sql
SqlSql
SqlJoao
 
Using ddl statements to create and manage tables
Using ddl statements to create and manage tablesUsing ddl statements to create and manage tables
Using ddl statements to create and manage tablesSyed Zaid Irshad
 
Unidad 4 actividad 1
Unidad 4 actividad 1Unidad 4 actividad 1
Unidad 4 actividad 1KARY
 
CreacióN Tablas En Oracle
CreacióN Tablas En OracleCreacióN Tablas En Oracle
CreacióN Tablas En Oracleesacre
 
Finance data model
Finance data modelFinance data model
Finance data modelsridhark1981
 
Advanced Systems Analysis And DesignAssignment 1 Error Handling.docx
Advanced Systems Analysis And DesignAssignment 1 Error Handling.docxAdvanced Systems Analysis And DesignAssignment 1 Error Handling.docx
Advanced Systems Analysis And DesignAssignment 1 Error Handling.docxgalerussel59292
 

Similar to Create database and tables for service provider app (17)

SQL FILE FROM MOODLEUSE [master]GO Object Databa.pdf
SQL FILE FROM MOODLEUSE [master]GO Object Databa.pdfSQL FILE FROM MOODLEUSE [master]GO Object Databa.pdf
SQL FILE FROM MOODLEUSE [master]GO Object Databa.pdf
 
Database Manipulation in SQL
Database Manipulation in SQLDatabase Manipulation in SQL
Database Manipulation in SQL
 
Bd tienda
Bd tienda Bd tienda
Bd tienda
 
Writeable ct es_pgcon_may_2011
Writeable ct es_pgcon_may_2011Writeable ct es_pgcon_may_2011
Writeable ct es_pgcon_may_2011
 
Oracle eCommerce (ATG) Database Best Practices
Oracle eCommerce (ATG) Database  Best Practices Oracle eCommerce (ATG) Database  Best Practices
Oracle eCommerce (ATG) Database Best Practices
 
ORM을 맞이하는 우리의 자세
ORM을 맞이하는 우리의 자세ORM을 맞이하는 우리의 자세
ORM을 맞이하는 우리의 자세
 
Les09 (using ddl statements to create and manage tables)
Les09 (using ddl statements to create and manage tables)Les09 (using ddl statements to create and manage tables)
Les09 (using ddl statements to create and manage tables)
 
Sql
SqlSql
Sql
 
DDl
DDlDDl
DDl
 
Using ddl statements to create and manage tables
Using ddl statements to create and manage tablesUsing ddl statements to create and manage tables
Using ddl statements to create and manage tables
 
Writeable CTEs: The Next Big Thing
Writeable CTEs: The Next Big ThingWriteable CTEs: The Next Big Thing
Writeable CTEs: The Next Big Thing
 
Les09
Les09Les09
Les09
 
Unidad 4 actividad 1
Unidad 4 actividad 1Unidad 4 actividad 1
Unidad 4 actividad 1
 
Actividad 1
Actividad 1Actividad 1
Actividad 1
 
CreacióN Tablas En Oracle
CreacióN Tablas En OracleCreacióN Tablas En Oracle
CreacióN Tablas En Oracle
 
Finance data model
Finance data modelFinance data model
Finance data model
 
Advanced Systems Analysis And DesignAssignment 1 Error Handling.docx
Advanced Systems Analysis And DesignAssignment 1 Error Handling.docxAdvanced Systems Analysis And DesignAssignment 1 Error Handling.docx
Advanced Systems Analysis And DesignAssignment 1 Error Handling.docx
 

Create database and tables for service provider app

  • 1. CREATE DATABASE dbServiceProvider; USE dbServiceProvider; CREATE TABLE tblChatRoom( ChatRoomId INTEGER IDENTITY(1, 1), [Description] VARCHAR(255), RoomType VARCHAR(25), CONSTRAINT PK_tblChatRoom_ChatRoomId PRIMARY KEY(ChatRoomId) ); CREATE TABLE tblRating( ClientId INT, ServiceProviderID INT, RatingValue INT, CONSTRAINT PK_tblRating_ClientId_ServiceProviderID PRIMARY KEY(ClientId, ServiceProviderID), CONSTRAINT FK_tblRating_ClientId FOREIGN KEY(ClientId) REFERENCES tblClient(ClientId), CONSTRAINT FK_tblRating_SerivceProviderId FOREIGN KEY(ServiceProviderId) REFERENCES tblServiceProvider(ServiceProviderId) ); CREATE TABLE tblUser( UserId INTEGER IDENTITY(1, 1), Title VARCHAR(25), FName VARCHAR(25), LName VARCHAR(25), Email VARCHAR(50) NOT NULL, IsConfirmEmail BIT, NIC VARCHAR(25) NOT NULL, SaltedPassword VARCHAR(255) NOT NULL, City VARCHAR(25) NOT NULL, IsOnline BIT, ChatRoomId INTEGER, UserType VARCHAR(25), CONSTRAINT PK_tblUser_UserId PRIMARY KEY(UserId), CONSTRAINT UK_tblUser_SaltedPassword UNIQUE (SaltedPassword),
  • 2. CONSTRAINT FK_tblUser_ChatRoomId FOREIGN KEY(ChatRoomId) REFERENCES tblChatRoom(ChatRoomId), ); CREATE TABLE tblMiddleName( ID INT IDENTITY(1,1), UserId INTEGER, MName VARCHAR(25), CONSTRAINT PK_tblMiddleName_UserId_MName PRIMARY KEY(ID), CONSTRAINT FK_tblMiddleName_UserId FOREIGN KEY(UserId) REFERENCES tblUser(UserId) ); CREATE TABLE tblContactNumber( UserId INTEGER, Tel VARCHAR(25), CONSTRAINT PK_tblContactNumber_UserId_Tel PRIMARY KEY(UserId, Tel), CONSTRAINT FK_tblContactNumber_UserId FOREIGN KEY(UserId) REFERENCES tblUser(UserId) ); CREATE TABLE tblUserLog( LoginId INTEGER IDENTITY(1, 1), UserId INTEGER, LoginTime DATETIME, LogoutTime DATETIME, CONSTRAINT PK_tblUserLog_LoginId PRIMARY KEY(LoginId), CONSTRAINT FK_tblUserLog_UserId FOREIGN KEY(UserId) REFERENCES tblUser(UserId) ); CREATE TABLE tblAdministrator( AdminId INTEGER IDENTITY(1, 1), UserID INTEGER, Permission VARCHAR(255) NOT NULL, CONSTRAINT PK_tblAdministrator_AdminId PRIMARY KEY(AdminId), CONSTRAINT FK_tblAdministrator_UserId FOREIGN KEY(UserId)
  • 3. REFERENCES tblUser(UserId) ); CREATE TABLE tblReport( ReportId INTEGER IDENTITY(1, 1), AdminId INTEGER, [Date] DATETIME, Content VARCHAR(MAX) NOT NULL, IsAnswered BIT, IsForwarded BIT, CONSTRAINT PK_tblReport_ReportId PRIMARY KEY(ReportId), CONSTRAINT FK_tblReport_AdminId FOREIGN KEY(AdminId) REFERENCES tblAdministrator(AdminId) ); CREATE TABLE tblNotification( NotificationId INTEGER IDENTITY(1, 1), UserId INTEGER NOT NULL, [Date] DATETIME, [Message] VARCHAR(MAX) NOT NULL, IsRead BIT, CONSTRAINT PK_tblNotification_NotificationId PRIMARY KEY(NotificationId), CONSTRAINT FK_tblNotification_UserId FOREIGN KEY(UserId) REFERENCES tblUser(UserId) ); CREATE TABLE tblNotificationType( TypeId INTEGER IDENTITY(1, 1), TypeName VARCHAR(25) NOT NULL, Description VARCHAR(MAX), CONSTRAINT PK_tblNotificationType_TypeId PRIMARY KEY(TypeId) ); CREATE TABLE tblNotification_NotificationType( NotificationId INTEGER, TypeId INTEGER, CONSTRAINT PK_tblNotification_NotificationType_NotificationId_TypeId PRIMARY KEY(NotificationId, TypeId),
  • 4. CONSTRAINT FK_tblNotification_NotificationType_NotificationId FOREIGN KEY(NotificationId) REFERENCES tblNotification(NotificationId), CONSTRAINT FK_tblNotification_NotificationType_TypeId FOREIGN KEY(TypeId) REFERENCES tblNotificationType(TypeId) ); CREATE TABLE tblNotificationRecieve( NotificationId INTEGER, UserId INTEGER, CONSTRAINT PK_tblNotificationRecieve_NotificationId_UserId PRIMARY KEY(UserId), CONSTRAINT FK_tblNotificationRecieve_UserId FOREIGN KEY(UserId) REFERENCES tblUser(UserId), CONSTRAINT FK_tblNotificationRecieve_NotificationId FOREIGN KEY(NotificationId) REFERENCES tblNotification(NotificationId) ); CREATE TABLE tblChat( ChatId INTEGER IDENTITY(1, 1), ChatRoomId INTEGER NOT NULL, FromDateTime DATETIME, ToDateTime DATETIME, CONSTRAINT PK_tblChat_ChatId PRIMARY KEY(ChatId), CONSTRAINT FK_tblChat_ChatRoomId FOREIGN KEY(ChatRoomId) REFERENCES tblChatRoom(ChatRoomId) ); CREATE TABLE tblChat_User( ChatId INTEGER, UserId INTEGER, CONSTRAINT PK_tblChat_User_ChatId_UserId PRIMARY KEY(ChatId, UserId), CONSTRAINT FK_tblChat_User_UserId FOREIGN KEY(UserId) REFERENCES tblUser(UserId), CONSTRAINT FK_tblChat_User_ChatId FOREIGN KEY(ChatId) REFERENCES tblChat(ChatId) ); CREATE TABLE tblChatMessage(
  • 5. MessageId INTEGER IDENTITY(1, 1), ChatId INTEGER, SendUserId INTEGER, [DateTime] DATETIME, Content VARCHAR(MAX), CONSTRAINT PK_tblChatMessage_MessageId PRIMARY KEY(MessageId), CONSTRAINT FK_tblChatMessage_ChatId FOREIGN KEY(ChatId) REFERENCES tblChat(ChatId), CONSTRAINT FK_tblChatMessage_SendUserId FOREIGN KEY(SendUserId) REFERENCES tblUser(UserId) ); CREATE TABLE tblSeenBy( MessageId INTEGER, UserId INTEGER, [DateTime] DATETIME, CONSTRAINT PK_tblSeenBy_MessageId_UserId PRIMARY KEY(MessageId, UserId), CONSTRAINT FK_tblSeenBy_MessageId FOREIGN KEY(MessageId) REFERENCES tblChatMessage(MessageId), CONSTRAINT FK_tblSeenBy_UserId FOREIGN KEY(UserId) REFERENCES tblUser(UserId) ); CREATE TABLE tblThread( ThreadId INTEGER IDENTITY(1, 1), UserId INTEGER, [DateTime] DATETIME, Title VARCHAR(255) NOT NULL, CONSTRAINT PK_tblThread_ThreadId PRIMARY KEY(ThreadId), CONSTRAINT FK_tblThread_UserId FOREIGN KEY(UserId) REFERENCES tblUser(UserId) ); CREATE TABLE tblPost( PostId INTEGER IDENTITY(1, 1), ThreadId INTEGER NOT NULL, UserId INTEGER,
  • 6. [DateTime] DATETIME, Title VARCHAR(255) NOT NULL, Content VARCHAR(MAX) NOT NULL, CONSTRAINT PK_tblPost_PostId PRIMARY KEY(PostId), CONSTRAINT FK_tblPost_ThreadId FOREIGN KEY(ThreadId) REFERENCES tblThread(ThreadId), CONSTRAINT FK_tblPost_UserId FOREIGN KEY(UserId) REFERENCES tblUser(UserId) ); CREATE TABLE tblClient( ClientId INTEGER, DateJoined DATETIME NOT NULL, Address VARCHAR(510), Longitude VARCHAR(25) NOT NULL, Latitude VARCHAR(25) NOT NULL, CONSTRAINT PK_tblClient_UserId PRIMARY KEY(ClientId), CONSTRAINT FK_tblClient_UserId FOREIGN KEY(ClientId) ON DELETE CASCADE REFERENCES tblUser(UserId) ); CREATE TABLE tblServiceProvider( ServiceProviderId INTEGER, [Image] IMAGE, BackgroundImage IMAGE, DOB DATETIME NOT NULL, Fax VARCHAR(25), Website VARCHAR(50), [Description] VARCHAR(MAX), DateJoined DATETIME NOT NULL, WorkExperience INTEGER, WorkAddress VARCHAR(255), Longitude VARCHAR(25) NOT NULL, Latitude VARCHAR(25) NOT NULL, JobType VARCHAR(25) NOT NULL, CONSTRAINT PK_tblServiceProvider_ServiceProviderId PRIMARY KEY(ServiceProviderId), CONSTRAINT FK_tblServiceProvider_ServiceProviderId FOREIGN KEY(ServiceProviderId)
  • 7. REFERENCES tblUser(UserId) ON DELETE CASCADE ); CREATE TABLE tblRecommendation( ServiceProviderId INTEGER, ByWhom VARCHAR(255) NOT NULL, Occupation VARCHAR(255), Relationship VARCHAR(50) NOT NULL, [Description] VARCHAR(255), CONSTRAINT PK_tblRecommendation_ServiceProviderId_ByWhom PRIMARY KEY(ServiceProviderId, ByWhom), CONSTRAINT FK_tblRecommendation_ServiceProviderId FOREIGN KEY(ServiceProviderId) REFERENCES tblServiceProvider(ServiceProviderId) ); CREATE TABLE tblAppointmentDetail( AppointmentId INTEGER IDENTITY(1, 1), ClientId INTEGER, SerivceProviderId INTEGER, [DateTime] DATETIME, [Subject] VARCHAR(255), Content VARCHAR(MAX), Reply VARCHAR(50), CONSTRAINT PK_tblAppointmentDetail_AppointmentId PRIMARY KEY(AppointmentId), CONSTRAINT FK_tblClient_ClientId FOREIGN KEY(ClientId) REFERENCES tblUser(UserId), CONSTRAINT FK_tblClient_SerivceProviderId FOREIGN KEY(SerivceProviderId) REFERENCES tblUser(UserId) ); CREATE TABLE tblReview( ReviewId INTEGER IDENTITY(1,1), ClientId INTEGER, ServiceProviderId INTEGER, [DateTime] DATETIME, Content VARCHAR(MAX), CONSTRAINT PK_tblReview_ReviewId PRIMARY KEY(ReviewId), CONSTRAINT FK_tblReview_ClientId FOREIGN KEY(ClientId)
  • 8. REFERENCES tblClient(ClientId), CONSTRAINT FK_tblReview_SerivceProviderId FOREIGN KEY(ServiceProviderId) REFERENCES tblServiceProvider(ServiceProviderId) ); CREATE TABLE tblGroup( GroupId INTEGER IDENTITY(1, 1), GroupName VARCHAR(50), CreateDate DATETIME, CONSTRAINT PK_tblGroup_GroupId PRIMARY KEY(GroupId) ); CREATE TABLE tblServiceProvider_Group( ServiceProviderId INTEGER, GroupId INTEGER, CONSTRAINT PK_tblServiceProvider_Group_ServiceProviderId_GroupId PRIMARY KEY(ServiceProviderId, GroupId), CONSTRAINT FK_tblServiceProvider_Group_SerivceProviderId FOREIGN KEY(ServiceProviderId) REFERENCES tblServiceProvider(ServiceProviderId), CONSTRAINT FK_tblServiceProvider_Group_GroupId FOREIGN KEY(GroupId) REFERENCES tblGroup(GroupId) ); CREATE TABLE tblLawyer( LawyerId INTEGER, RegNo INTEGER, [Type] VARCHAR(50), CONSTRAINT PK_tblLawyer_LawyerId PRIMARY KEY(LawyerId), CONSTRAINT FK_tblLawyer_LawyerId FOREIGN KEY(LawyerId) REFERENCES tblServiceProvider(ServiceProviderId), CONSTRAINT UK_tblLawyer_RegNo UNIQUE(RegNo) ); CREATE TABLE tblHighSchoolEducationOfLawyer( LawyerId INTEGER, SchoolName VARCHAR(50), [From] DATETIME, [To] DATETIME,
  • 9. CONSTRAINT PK_tblHighSchoolEducationOfLawyer_LawyerId_SchoolName PRIMARY KEY(LawyerId,SchoolName), CONSTRAINT FK_tblHighSchoolEducationOfLawyer_LawyerId FOREIGN KEY(LawyerId) REFERENCES tblLawyer(LawyerId) ); CREATE TABLE tblUniversityEducationOfLawyer( LawyerId INTEGER, UniversityName VARCHAR(50), [From] DATETIME, [To] DATETIME, CONSTRAINT PK_tblUniversityEducationOfLawyer_LawyerId_UniversityName PRIMARY KEY(LawyerId, UniversityName), CONSTRAINT FK_tblUniversityEducationOfLawyer_LawyerId FOREIGN KEY(LawyerId) REFERENCES tblLawyer(LawyerId) ); CREATE TABLE tblExpertiseOfLawyer( LawyerId INTEGER, Skill VARCHAR(50), CONSTRAINT PK_tblExpertiseOfLawyer_LawyerId_Skill PRIMARY KEY(LawyerId, Skill), CONSTRAINT FK_tblExpertiseOfLawyer_LawyerId FOREIGN KEY(LawyerId) REFERENCES tblLawyer(LawyerId) ); CREATE TABLE tblPlumber( PlumberId INTEGER, CONSTRAINT PK_tblPlumber_PlumberId PRIMARY KEY(PlumberId), CONSTRAINT FK_tblPlumber_PlumberId FOREIGN KEY(PlumberId) REFERENCES tblServiceProvider(ServiceProviderId), ); CREATE TABLE tblTechnicalEducationOfPlumber( PlumberId INTEGER, TechnicalSchoolName VARCHAR(50), [From] DATETIME, [To] DATETIME,
  • 10. CONSTRAINT PK_tblTechnicalEducationOfPlumber_PlumberId_TechnicalSchoolName PRIMARY KEY(PlumberId, TechnicalSchoolName), CONSTRAINT FK_tblTechnicalEducationOfPlumber_PlumberId FOREIGN KEY(PlumberId) REFERENCES tblPlumber(PlumberId) ); CREATE TABLE tblExpertiseOfPlumber( PlumberId INTEGER, Skill VARCHAR(50), CONSTRAINT PK_tblExpertiseOfPlumber_PlumberId_Skill PRIMARY KEY(PlumberId, Skill), CONSTRAINT FK_tblExpertiseOfPlumber_PlumberId FOREIGN KEY(PlumberId) REFERENCES tblPlumber(PlumberId) ); CREATE TABLE tblMasonBass( MasonBassId INTEGER, CONSTRAINT PK_tblMasonBass_MasonBassId PRIMARY KEY(MasonBassId), CONSTRAINT FK_tblMasonBass_MasonBassId FOREIGN KEY(MasonBassId) REFERENCES tblServiceProvider(ServiceProviderId), ); CREATE TABLE tblTechnicalEducationOfMasonBass( MasonBassId INTEGER, TechnicalSchoolName VARCHAR(50), [From] DATETIME, [To] DATETIME, CONSTRAINT PK_tblTechnicalEducationOfMasonBass_MasonBassId_TechnicalSchoolName PRIMARY KEY(MasonBassId, TechnicalSchoolName), CONSTRAINT FK_tblTechnicalEducationOfMasonBass_MasonBassId FOREIGN KEY(MasonBassId) REFERENCES tblMasonBass(MasonBassId) ); CREATE TABLE tblExpertiseOfMasonBass( MasonBassId INTEGER, Skill VARCHAR(50), CONSTRAINT PK_tblExpertiseOfMasonBass_MasonBassId_Skill PRIMARY KEY(MasonBassId, Skill), CONSTRAINT FK_tblExpertiseOfMasonBass_MasonBassId FOREIGN KEY(MasonBassId)
  • 11. REFERENCES tblMasonBass(MasonBassId) ); CREATE TABLE tblPropertyTypeOfMasonBass( MasonBassId INTEGER, PropertyType VARCHAR(50), CONSTRAINT PK_tblPropertyTypeOfMasonBass_MasonBassId_PropertyType PRIMARY KEY(MasonBassId, PropertyType), CONSTRAINT FK_tblPropertyTypeOfMasonBass_MasonBassId FOREIGN KEY(MasonBassId) REFERENCES tblMasonBass(MasonBassId) ); CREATE TABLE tblEngineer( EngineerId INTEGER, RegNo INTEGER, [Type] VARCHAR(50), CurrentCompany VARCHAR(50), CONSTRAINT PK_tblEngineer_EngineerId PRIMARY KEY(EngineerId), CONSTRAINT FK_tblEngineer_EngineerId FOREIGN KEY(EngineerId) REFERENCES tblServiceProvider(ServiceProviderId), CONSTRAINT UK_tblEngineer_RegNo UNIQUE(RegNo) ); CREATE TABLE tblHighSchoolEducationOfEngineer( EngineerId INTEGER, SchoolName VARCHAR(50), [From] DATETIME, [To] DATETIME, CONSTRAINT PK_tblHighSchoolEducationOfEngineer_EngineerId_SchoolName PRIMARY KEY(EngineerId, SchoolName), CONSTRAINT FK_tblHighSchoolEducationOfEngineer_EngineerId FOREIGN KEY(EngineerId) REFERENCES tblEngineer(EngineerId) ); CREATE TABLE tblUniversityEducationOfEngineer( EngineerId INTEGER, UniversityName VARCHAR(50), [From] DATETIME, [To] DATETIME,
  • 12. CONSTRAINT PK_tblUniversityEducationOfEngineer_EngineerId_UniversityName PRIMARY KEY(EngineerId, UniversityName), CONSTRAINT FK_tblUniversityEducationOfEngineer_EngineerId FOREIGN KEY(EngineerId) REFERENCES tblEngineer(EngineerId) ); CREATE TABLE tblPastExperienceOfEngineer( EngineerId INTEGER, CompanyName VARCHAR(50), [From] DATETIME, [To] DATETIME, CONSTRAINT PK_tblPastExperienceOfEngineer_EngineerId_CompanyName PRIMARY KEY(EngineerId, CompanyName), CONSTRAINT FK_tblPastExperienceOfEngineer_EngineerId FOREIGN KEY(EngineerId) REFERENCES tblEngineer(EngineerId) ); CREATE TABLE tblTeacher( TeacherId INTEGER, CONSTRAINT PK_tblTeacher_TeacherId PRIMARY KEY(TeacherId), CONSTRAINT FK_tblTeacher_TeacherId FOREIGN KEY(TeacherId) REFERENCES tblServiceProvider(ServiceProviderId) ); CREATE TABLE tblHighSchoolEducationOfTeacher( TeacherId INTEGER, SchoolName VARCHAR(50), [From] DATETIME, [To] DATETIME, CONSTRAINT PK_tblHighSchoolEducationOfTeacher_TeacherId_SchoolName PRIMARY KEY(TeacherId, SchoolName), CONSTRAINT FK_tblHighSchoolEducationOfTeacher_TeacherId FOREIGN KEY(TeacherId) REFERENCES tblTeacher(TeacherId) ); CREATE TABLE tblUniversityEducationOfTeacher( TeacherId INTEGER, UniversityName VARCHAR(50), [From] DATETIME,
  • 13. [To] DATETIME, CONSTRAINT PK_tblUniversityEducationOfTeacher_TeacherId_UniversityName PRIMARY KEY(TeacherId, UniversityName), CONSTRAINT FK_tblUniversityEducationOfTeacher_TeacherId FOREIGN KEY(TeacherId) REFERENCES tblTeacher(TeacherId) ); CREATE TABLE tblCourse( TeacherId INTEGER, CourseName VARCHAR(50), [Level] VARCHAR(25), [Weekday] VARCHAR(25), Duration VARCHAR(50), Fee MONEY, CONSTRAINT PK_tblCourse_TeacherId_CourseName_Level_Weekday_Duration PRIMARY KEY(TeacherId, CourseName, [Level], [Weekday], Duration), CONSTRAINT FK_tblCourse_TeacherId FOREIGN KEY(TeacherId) REFERENCES tblTeacher(TeacherId) ); CREATE FUNCTION getFullMiddleName(@UID INTEGER) RETURNS VARCHAR(255) AS BEGIN DECLARE @MiddleName VARCHAR(25) DECLARE @FullMiddleName VARCHAR(255) DECLARE @noOfMiddleNames INTEGER DECLARE @n INTEGER SET @MiddleName = '' SET @FullMiddleName = '' SELECT @noOfMiddleNames=COUNT(UserId) FROM tblMiddleName WHERE UserId =@UID; SET @n=1;
  • 14. WHILE(@n <= @noOfMiddleNames) BEGIN WITH MyCte AS ( SELECT ROW_NUMBER() OVER (ORDER BY M.ID) AS Row, M.MName FROM tblUser AS U INNER JOIN tblMiddleName AS M ON U.UserId = M.UserId WHERE U.UserId =@UID ) SELECT @MiddleName=MName FROM MyCte WHERE Row = @n SET @FullMiddleName = @FullMiddleName + @MiddleName IF(@n != @noOfMiddleNames) BEGIN SET @FullMiddleName = @FullMiddleName + ' ' END SET @n=@n + 1 END RETURN @FullMiddleName END CREATE VIEW vwtblUser_tblServiceProviderWithFullName AS SELECT U.UserId AS ID, COALESCE(U.Title + ' ', '') + COALESCE(U.FName + ' ', '') + COALESCE(dbo.getFullMiddleName(U.UserId) + ' ', '') + COALESCE(U.LName, '') AS FullName, U.Email AS Email, U.City AS City, S.Image AS Image, S.BackgroundImage AS BackgroundImage, S.Latitude AS Latitude, S.Longitude AS Longitude, S.JobType AS Profession FROM tblUser AS U INNER JOIN tblServiceProvider AS S ON U.UserId=S.ServiceProviderId; CREATE PROCEDURE spGet10RandomServiceProviders
  • 15. AS BEGIN DECLARE @NoOfSeriveProviders INT; DECLARE @A INT; DECLARE @B INT; DECLARE @C INT; DECLARE @D INT; DECLARE @E INT; DECLARE @F INT; DECLARE @G INT; DECLARE @H INT; DECLARE @I INT; DECLARE @J INT; SELECT @NoOfSeriveProviders=COUNT(ServiceProviderId) FROM tblServiceProvider; SELECT @A = FLOOR(RAND()*(@NoOfSeriveProviders)+1), @B = FLOOR(RAND()*(@NoOfSeriveProviders)+1),@C = FLOOR(RAND()*(@NoOfSeriveProviders)+1), @D = FLOOR(RAND()*(@NoOfSeriveProviders)+1),@E = FLOOR(RAND()*(@NoOfSeriveProviders)+1), @F = FLOOR(RAND()*(@NoOfSeriveProviders)+1),@G = FLOOR(RAND()*(@NoOfSeriveProviders)+1), @H = FLOOR(RAND()*(@NoOfSeriveProviders)+1),@I = FLOOR(RAND()*(@NoOfSeriveProviders)+1), @J = FLOOR(RAND()*(@NoOfSeriveProviders)+1); WITH MyCte AS ( SELECT ROW_NUMBER() OVER (ORDER BY S.ServiceProviderId) AS ROW, COALESCE(U.Title + ' ', '') + COALESCE(U.FName + ' ', '') + COALESCE(dbo.getFullMiddleName(U.UserId) + ' ', '') + COALESCE(U.LName, '') AS FullName, S.WorkAddress AS WorkAddress, S.JobType AS Profession FROM tblUser AS U INNER JOIN tblServiceProvider AS S ON U.UserId = S.ServiceProviderId WHERE U.UserId =S.ServiceProviderId ) SELECT FullName,WorkAddress, Profession FROM Mycte
  • 16. WHERE ROW IN (@A, @B, @C, @D, @E, @F, @G, @H, @I, @J); END; CREATE FUNCTION getFullContactDetail(@UID INTEGER) RETURNS VARCHAR(255) AS BEGIN DECLARE @ContactDetail VARCHAR(25) DECLARE @FullContactDetail VARCHAR(255) DECLARE @noOfContactDetails INTEGER DECLARE @n INTEGER SET @ContactDetail = '' SET @FullContactDetail = '' SELECT @noOfContactDetails=COUNT(UserId) FROM tblContactNumber WHERE UserId =@UID; SET @n=1; WHILE(@n <= @noOfContactDetails) BEGIN WITH MyCte AS ( SELECT ROW_NUMBER() OVER (ORDER BY C.UserId) AS Row, C.Tel FROM tblUser AS U INNER JOIN tblContactNumber AS C ON U.UserId = C.UserId WHERE U.UserId =@UID ) SELECT @ContactDetail=Tel FROM MyCte WHERE Row = @n SET @FullContactDetail = @FullContactDetail + @ContactDetail; IF(@n != @noOfContactDetails) BEGIN
  • 17. SET @FullContactDetail = @FullContactDetail + '/'; END SET @n=@n + 1 END RETURN @FullContactDetail END CREATE PROCEDURE spGetServiceProvidersByJobType @JobType VARCHAR(25) AS BEGIN SELECT COALESCE(U.Title + ' ', '') + COALESCE(U.FName + ' ', '') + COALESCE(dbo.getFullMiddleName(U.UserId) + ' ', '') + COALESCE(U.LName, '') AS FullName, U.City, dbo.getFullContactDetail(U.UserId) AS ContactDetails, S.WorkAddress, U.Email FROM tblUser AS U INNER JOIN tblServiceProvider AS S ON U.UserId = S.ServiceProviderId WHERE S.JobType = @JobType; END CREATE PROCEDURE spGetServiceProvidersByCity @City VARCHAR(25) AS BEGIN SELECT COALESCE(U.Title + ' ', '') + COALESCE(U.FName + ' ', '') + COALESCE(dbo.getFullMiddleName(U.UserId) + ' ', '') + COALESCE(U.LName, '') AS FullName, dbo.getFullContactDetail(U.UserId) AS ContactDetails, S.WorkAddress AS WorkAddress, S.JobType FROM tblUser AS U INNER JOIN tblServiceProvider AS S ON U.UserId = S.ServiceProviderId WHERE U.City = @City; END --SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='tblUser' CREATE VIEW vwtblUser_tblClient_ClientProfile AS
  • 18. SELECT U.UserId AS ID, U.Title, U.FName, dbo.getFullMiddleName(U.UserId) AS FullMiddleName, U.LName, U.Email, U.City, C.Address, dbo.getFullContactDetail(U.UserId) AS ContactDetails, C.Latitude,C.Longitude FROM tblUser AS U INNER JOIN tblClient AS C ON U.UserId=C.ClientId; CREATE VIEW vwtblUser_tblServiceProvider_LawyerProfile AS SELECT U.UserId AS ID, U.Title, U.FName, U.LName, U.Email, U.City, S.JobType, dbo.getFullUniversityDetailOfLawyer(U.UserId) AS UniversityDetail, S.DOB, S.Description, S.Fax, dbo.getFullContactDetail(U.UserId) AS ContactDetails, S.WorkAddress FROM tblUser AS U INNER JOIN tblServiceProvider AS S ON U.UserId=S.ServiceProviderId WHERE S.JobType='Lawyer'; CREATE TRIGGER tr_vwtblUser_tblClient_ClientProfile ON vwtblUser_tblClient_ClientProfile INSTEAD OF UPDATE AS BEGIN --If client ID is to be updated. DECLARE @ID INT DECLARE @fullMiddleName VARCHAR(255) DECLARE @fullContactDetail VARCHAR(255) SELECT @ID = ID FROM inserted IF(UPDATE(ID)) BEGIN UPDATE tblClient SET ClientId = inserted.ID FROM inserted WHERE tblClient.ClientId = @ID END --If client Title is to be updated. IF(UPDATE(Title))
  • 19. BEGIN UPDATE tblUser SET Title = inserted.Title FROM inserted WHERE tblUser.UserId = @ID END --If client First Name is to be updated. IF(UPDATE(FName)) BEGIN UPDATE tblUser SET FName = inserted.FName FROM inserted WHERE tblUser.UserId = @ID END --If client Full Middle Name is to be updated. IF(UPDATE(FullMiddleName)) BEGIN DELETE FROM tblMiddleName WHERE UserId=@ID; SELECT @fullMiddleName = inserted.FullMiddleName FROM inserted INSERT INTO tblMiddleName(UserId, MName) SELECT @ID,splitdata FROM dbo.fnSplitString(@fullMiddleName,' ') END --If client Last Name is to be updated. IF(UPDATE(LName)) BEGIN UPDATE tblUser SET LName = inserted.LName FROM inserted WHERE tblUser.UserId = @ID END --If client Email is to be updated. IF(UPDATE(Email))
  • 20. BEGIN UPDATE tblUser SET Email = inserted.Email FROM inserted WHERE tblUser.UserId = @ID END --If client City is to be updated. IF(UPDATE(City)) BEGIN UPDATE tblUser SET City = inserted.City FROM inserted WHERE tblUser.UserId = @ID END --If client Address is to be updated. IF(UPDATE(Address)) BEGIN UPDATE tblClient SET Address = inserted.Address FROM inserted WHERE tblClient.ClientId = @ID END --If Client ContractDetails is to be updated. IF(UPDATE(ContactDetails)) BEGIN DELETE FROM tblContactNumber WHERE UserId=@ID; SELECT @fullContactDetail = inserted.ContactDetails FROM inserted INSERT INTO tblContactNumber(UserId, Tel) SELECT @ID,splitdata FROM dbo.fnSplitString(@fullContactDetail,'/') END --If Client Latitude is to be updated. IF(UPDATE(Latitude)) BEGIN
  • 21. UPDATE tblClient SET Latitude = inserted.Latitude FROM inserted WHERE ClientId = @ID END --If Client Longitude is to be updated. IF(UPDATE(Longitude)) BEGIN UPDATE tblClient SET Longitude = inserted.Longitude FROM inserted WHERE ClientId = @ID END END; CREATE PROC spEditClientDetails @Id INT, @Title VARCHAR(25) = NULL, @FName VARCHAR(25) = NULL, @LName VARCHAR(25) = NULL, @FullMiddleName VARCHAR(255) = NULL, @Email VARCHAR(50) = NULL, @City VARCHAR(25) = NULL, @Address VARCHAR(510) = NULL, @ContactDetails VARCHAR(255) = NULL, @Latitude VARCHAR(25) = NULL, @Longitude VARCHAR(25) = NULL AS BEGIN --If client Title is to be updated. IF(@Title IS NOT NULL) BEGIN UPDATE vwtblUser_tblClient_ClientProfile SET Title = @Title WHERE vwtblUser_tblClient_ClientProfile.ID = @ID END --If client First Name is to be updated.
  • 22. IF(@FName IS NOT NULL) BEGIN UPDATE vwtblUser_tblClient_ClientProfile SET FName = @FName WHERE vwtblUser_tblClient_ClientProfile.ID = @ID END --If client Full Middle Name is to be updated. IF(@FullMiddleName IS NOT NULL) BEGIN UPDATE vwtblUser_tblClient_ClientProfile SET FullMiddleName = @FullMiddleName WHERE vwtblUser_tblClient_ClientProfile.ID = @ID END --If client Last Name is to be updated. IF(@LName IS NOT NULL) BEGIN UPDATE vwtblUser_tblClient_ClientProfile SET LName = @LName WHERE vwtblUser_tblClient_ClientProfile.ID = @ID END --If client Email is to be updated. IF(@Email IS NOT NULL) BEGIN UPDATE vwtblUser_tblClient_ClientProfile SET Email = @Email WHERE vwtblUser_tblClient_ClientProfile.ID = @ID END --If client City is to be updated. IF(@City IS NOT NULL) BEGIN UPDATE vwtblUser_tblClient_ClientProfile SET City = @City WHERE vwtblUser_tblClient_ClientProfile.ID = @ID
  • 23. END --If client Address is to be updated. IF(@Address IS NOT NULL) BEGIN UPDATE vwtblUser_tblClient_ClientProfile SET Address = @Address WHERE vwtblUser_tblClient_ClientProfile.ID = @ID END --If Client ContractDetails is to be updated. IF(@ContactDetails IS NOT NULL) BEGIN UPDATE vwtblUser_tblClient_ClientProfile SET ContactDetails = @ContactDetails WHERE vwtblUser_tblClient_ClientProfile.ID = @ID END --If Client Latitude is to be updated. IF(@Latitude IS NOT NULL) BEGIN UPDATE vwtblUser_tblClient_ClientProfile SET Latitude = @Latitude WHERE vwtblUser_tblClient_ClientProfile.ID = @ID END --If Client Longitude is to be updated. IF(@Longitude IS NOT NULL) BEGIN UPDATE vwtblUser_tblClient_ClientProfile SET Longitude = @Longitude WHERE vwtblUser_tblClient_ClientProfile.ID = @ID END END; --SELECT COMPATIBILITY_LEVEL --FROM SYS.DATABASES WHERE name = 'dbServiceProvider';
  • 24. --ALTER DATABASE dbServiceProvider --SET COMPATIBILITY_LEVEL = 120; CREATE FUNCTION [dbo].[fnSplitString] ( @string NVARCHAR(MAX), @delimiter CHAR(1) ) RETURNS @output TABLE(splitdata NVARCHAR(MAX) ) BEGIN DECLARE @start INT, @end INT SELECT @start = 1, @end = CHARINDEX(@delimiter, @string) WHILE @start < LEN(@string) + 1 BEGIN IF @end = 0 SET @end = LEN(@string) + 1 INSERT INTO @output (splitdata) VALUES(SUBSTRING(@string, @start, @end - @start)) SET @start = @end + 1 SET @end = CHARINDEX(@delimiter, @string, @start) END RETURN END --SELECT 2,splitdata FROM dbo.fnSplitString('Malika Priyashan Kannangara',' ') CREATE FUNCTION getFullUniversityDetailOfLawyer(@UID INTEGER) RETURNS VARCHAR(510) AS BEGIN DECLARE @UniversityDetail VARCHAR(50) DECLARE @FullUniversityDetail VARCHAR(510) DECLARE @noOfUniversityDetail INTEGER DECLARE @n INTEGER SET @UniversityDetail = ''
  • 25. SET @FullUniversityDetail = '' SELECT @noOfUniversityDetail=COUNT(LawyerId) FROM tblUniversityEducationOfLawyer WHERE LawyerId=@UID; SET @n=1; WHILE(@n <= @noOfUniversityDetail) BEGIN WITH MyCte AS ( SELECT ROW_NUMBER() OVER (ORDER BY Lawyerid) AS Row, UniversityName, [From], [To] FROM tblUniversityEducationOfLawyer WHERE Lawyerid =@UID ) SELECT @UniversityDetail = UniversityName FROM MyCte WHERE Row = @n SET @FullUniversityDetail = @FullUniversityDetail + @UniversityDetail; IF(@n != @noOfUniversityDetail) BEGIN SET @FullUniversityDetail = @FullUniversityDetail + '/'; END SET @n=@n + 1 END RETURN @FullUniversityDetail END CREATE PROC spEditServiceProviderDetails @Id INT, @Title VARCHAR(25) = NULL, @FName VARCHAR(25) = NULL, @LName VARCHAR(25) = NULL, @Email VARCHAR(50) = NULL, @City VARCHAR(25) = NULL,
  • 26. @DOB DATETIME = NULL, @JobType VARCHAR(25) = NULL, @WorkAddress VARCHAR(510) = NULL, @ContactDetails VARCHAR(255) = NULL, @Description VARCHAR(MAX) = NULL, @UniversityDetail VARCHAR(510) = NULL, @Fax VARCHAR(25) = NULL AS BEGIN --If lawyer Title is to be updated. IF(@Title IS NOT NULL) BEGIN UPDATE vwtblUser_tblServiceProvider_LawyerProfile SET Title = @Title WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID END --If lawyer First Name is to be updated. IF(@FName IS NOT NULL) BEGIN UPDATE vwtblUser_tblServiceProvider_LawyerProfile SET FName = @FName WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID END --If lawyer Last Name is to be updated. IF(@LName IS NOT NULL) BEGIN UPDATE vwtblUser_tblServiceProvider_LawyerProfile SET LName = @LName WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID END --If lawyer Email is to be updated. IF(@Email IS NOT NULL) BEGIN UPDATE vwtblUser_tblServiceProvider_LawyerProfile
  • 27. SET Email = @Email WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID END --If lawyer Date of Birth is to be updated. IF(@DOB IS NOT NULL) BEGIN UPDATE vwtblUser_tblServiceProvider_LawyerProfile SET DOB = @DOB WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID END --If lawyer University Details is to be updated. IF(@DOB IS NOT NULL) BEGIN UPDATE vwtblUser_tblServiceProvider_LawyerProfile SET UniversityDetail = @UniversityDetail WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID END --If lawyer City is to be updated. IF(@City IS NOT NULL) BEGIN UPDATE vwtblUser_tblServiceProvider_LawyerProfile SET City = @City WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID END --If lawyer Job Type is to be updated. IF(@City IS NOT NULL) BEGIN UPDATE vwtblUser_tblServiceProvider_LawyerProfile SET JobType = @JobType WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID END --If lawyer Work Address is to be updated.
  • 28. IF(@WorkAddress IS NOT NULL) BEGIN UPDATE vwtblUser_tblServiceProvider_LawyerProfile SET WorkAddress = @WorkAddress WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID END --If lawyer Contract Details is to be updated. IF(@ContactDetails IS NOT NULL) BEGIN UPDATE vwtblUser_tblServiceProvider_LawyerProfile SET ContactDetails = @ContactDetails WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID END --If lawyer Fax is to be updated. IF(@Fax IS NOT NULL) BEGIN UPDATE vwtblUser_tblServiceProvider_LawyerProfile SET Fax = @Fax WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID END --If lawyer Description is to be updated. IF(@Description IS NOT NULL) BEGIN UPDATE vwtblUser_tblServiceProvider_LawyerProfile SET [Description] = @Description WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID END END; CREATE TRIGGER tr_vwtblUser_tblServiceProvider_LawyerProfile ON vwtblUser_tblServiceProvider_LawyerProfile INSTEAD OF UPDATE AS BEGIN
  • 29. --If lawyer ID is to be updated. DECLARE @ID INT DECLARE @UniversityDetails VARCHAR(510) DECLARE @fullContactDetail VARCHAR(255) SELECT @ID = ID FROM inserted IF(UPDATE(ID)) BEGIN UPDATE tblServiceProvider SET ServiceProviderId = inserted.ID FROM inserted WHERE tblServiceProvider.ServiceProviderId = @ID END --If lawyer Title is to be updated. IF(UPDATE(Title)) BEGIN UPDATE tblUser SET Title = inserted.Title FROM inserted WHERE tblUser.UserId = @ID END --If lawyer First Name is to be updated. IF(UPDATE(FName)) BEGIN UPDATE tblUser SET FName = inserted.FName FROM inserted WHERE tblUser.UserId = @ID END --If lawyer Last Name is to be updated. IF(UPDATE(LName)) BEGIN UPDATE tblUser SET LName = inserted.LName FROM inserted WHERE tblUser.UserId = @ID END --If lawyer Email is to be updated. IF(UPDATE(Email))
  • 30. BEGIN UPDATE tblUser SET Email = inserted.Email FROM inserted WHERE tblUser.UserId = @ID END --If lawyer City is to be updated. IF(UPDATE(City)) BEGIN UPDATE tblUser SET City = inserted.City FROM inserted WHERE tblUser.UserId = @ID END --If lawyer Date Of Birth is to be updated. IF(UPDATE(DOB)) BEGIN UPDATE tblServiceProvider SET DOB = inserted.DOB FROM inserted WHERE tblServiceProvider.ServiceProviderId = @ID END --If lawyer Work Address is to be updated. IF(UPDATE(WorkAddress)) BEGIN UPDATE tblServiceProvider SET WorkAddress = inserted.WorkAddress FROM inserted WHERE tblServiceProvider.ServiceProviderId = @ID END --If lawyer Contract Details is to be updated. IF(UPDATE(ContactDetails)) BEGIN DELETE FROM tblContactNumber WHERE UserId=@ID; SELECT @fullContactDetail = inserted.ContactDetails FROM inserted
  • 31. INSERT INTO tblContactNumber(UserId, Tel) SELECT @ID,splitdata FROM dbo.fnSplitString(@fullContactDetail,'/') END --If lawyer University Details is to be updated. IF(UPDATE(UniversityDetail)) BEGIN DELETE FROM tblUniversityEducationOfLawyer WHERE LawyerId=@ID; SELECT @UniversityDetails = inserted.UniversityDetail FROM inserted INSERT INTO tblUniversityEducationOfLawyer(LawyerId, UniversityName) SELECT @ID,splitdata FROM dbo.fnSplitString(@UniversityDetails,'/') END --If lawyer Fax is to be updated. IF(UPDATE(Fax)) BEGIN UPDATE tblServiceProvider SET Fax = inserted.Fax FROM inserted WHERE tblServiceProvider.ServiceProviderId = @ID END --If lawyer Job Type is to be updated. IF(UPDATE(JobType)) BEGIN UPDATE tblServiceProvider SET JobType = inserted.JobType FROM inserted WHERE tblServiceProvider.ServiceProviderId = @ID END --If lawyer Description is to be updated. IF(UPDATE(Description)) BEGIN UPDATE tblServiceProvider
  • 32. SET Description = inserted.Description FROM inserted WHERE tblServiceProvider.ServiceProviderId = @ID END END; ALTER PROC spEditClientName @Id INT, @Title VARCHAR(25), @FName VARCHAR(25), @FullMiddleName VARCHAR(255), @LName VARCHAR(25) AS BEGIN --Client Title is to be updated. UPDATE tblUser SET Title = @Title WHERE tblUser.UserId = @ID --Client First Name is to be updated. UPDATE tblUser SET FName = @FName WHERE tblUser.UserId = @ID --Client Full Middle Name is to be updated. UPDATE vwtblUser_tblClient_ClientProfile SET FullMiddleName = @FullMiddleName WHERE vwtblUser_tblClient_ClientProfile.ID = @ID --Client Last Name is to be updated. UPDATE tblUser SET LName = @LName WHERE tblUser.UserId = @ID END;