SQL Server – SQL Database for Visitor Registration System

This is for a web-based application that allows someone to register visitors, assign their hosts, and specify the dates they are visited.

Imagine this scenario:

I want to register (Requester_Employee_Id) some providers (Gast_Typ), Mary and Bob (visitors) for a visit. Your hosts are Employee1 and Employee2 (host). Mary and Bob will be on 19.02. From 11-16 o'clock and 2/20 10-22 o'clock to visit (visit)

When they arrive, I want to "check in" every day (participation)

DB Chart

participation

CREATE TABLE [dbo],[Attendance](
    [Visitor_Id] [int]    NOT ZERO,
    [Visit_Id] [int]    NOT ZERO,
    [Checked_In_UTC] [datetime2](0) zero
) ON [PRIMARY]
GO

OLD TABLE [dbo],[Attendance]  ADD WITH TEST [FK_Attendance_Visit] UNKNOWN KEY([Visit_Id])
REFERENCES [dbo],[Visit] ([Id])
GO

OLD TABLE [dbo],[Attendance] CHECK INSPECTION [FK_Attendance_Visit]
GO

OLD TABLE [dbo],[Attendance]  ADD WITH TEST [FK_Attendance_Vistor] UNKNOWN KEY([Visitor_Id])
REFERENCES [dbo],[Vistor] ([Id])
GO

OLD TABLE [dbo],[Attendance] CHECK INSPECTION [FK_Attendance_Vistor]
GO

Gast_Typ

CREATE TABLE [dbo],[Guest_Type](
    [Id] [int]    IDENTITY (1,1) NOT NULL,
    [Name] [nvarchar](25) zero,
    [Description] [nvarchar](200) NOT NULL,
FORCE [PK_Guest_Type] PRIMARY KEY CLUSTERED
(
    [Id] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

host

CREATE TABLE [dbo],[Host](
    [Registration_Id] [int]    ZERO,
    [Employee_Id] [uniqueidentifier]    ZERO
) ON [PRIMARY]
GO

OLD TABLE [dbo],[Host]  ADD WITH TEST [FK_Host_Registration] UNKNOWN KEY([Registration_Id])
REFERENCES [dbo],[Registration] ([Id])
GO

OLD TABLE [dbo],[Host] CHECK INSPECTION [FK_Host_Registration]
GO

registration

CREATE TABLE [dbo],[Registration](
    [Id] [int]    IDENTITY (1,1) NOT NULL,
    [Guest_Type_Id] [int]    NOT ZERO,
    [Mode_of_Transportation] [nvarchar](200) zero,
    [Requester_Employee_Id] [uniqueidentifier]    NOT ZERO,
    [Removal_Date_UTC] [datetime2](0) zero,
FORCE [PK_Registration] PRIMARY KEY CLUSTERED
(
    [Id] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

OLD TABLE [dbo],[Registration]  ADD WITH TEST [FK_Registration_Guest_Type] UNKNOWN KEY([Guest_Type_Id])
REFERENCES [dbo],[Guest_Type] ([Id])
GO

OLD TABLE [dbo],[Registration] CHECK INSPECTION [FK_Registration_Guest_Type]
GO

visit

CREATE TABLE [dbo],[Visit](
    [Id] [int]    IDENTITY (1,1) NOT NULL,
    [Registration_Id] [int]    NOT ZERO,
    [Start_UTC] [datetime2](0) NOT NULL,
    [End_UTC] [datetime2](0) NOT NULL,
FORCE [PK_Visit] PRIMARY KEY CLUSTERED
(
    [Id] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

OLD TABLE [dbo],[Visit]  ADD WITH TEST [FK_Visit_Registration] UNKNOWN KEY([Registration_Id])
REFERENCES [dbo],[Registration] ([Id])
GO

OLD TABLE [dbo],[Visit] CHECK INSPECTION [FK_Visit_Registration]
GO

visitors

CREATE TABLE [dbo],[Vistor](
    [Id] [int]    IDENTITY (1,1) NOT NULL,
    [Registration_Id] [int]    NOT ZERO,
    [First_Name] [nvarchar](25) NOT NULL,
    [Last_Name] [nvarchar](25) NOT NULL,
    [Email] [nvarchar](50) zero,
    [Notes] [nvarchar](200) zero,
FORCE [PK_Vistor] PRIMARY KEY CLUSTERED
(
    [Id] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

OLD TABLE [dbo],[Vistor]  ADD WITH TEST [FK_Vistor_Registration] UNKNOWN KEY([Registration_Id])
REFERENCES [dbo],[Registration] ([Id])
GO

OLD TABLE [dbo],[Vistor] CHECK INSPECTION [FK_Vistor_Registration]
GO

Now I have never designed a db from scratch, so I would appreciate your help.

Most of the data types that I selected were based on other similar fields from other projects I've already covered, but I'm open to any criticism. I think there are a few things I should do, but I'm not sure yet how to do it. For example, the host table has unique value combinations. I think the db can enforce that?

Entering a request results in a large internal approval system that can not be processed. If changes need to be made to a registry, it will be deleted (Removal_Date_UTC) and a new request is created.