Прежде всего, вы должны создать таблицу Категории поиска. Вы можете создать его с помощью сценария, как это:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [Categories](
[Id] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[Description] [varchar](50) NOT NULL,
CONSTRAINT [PK_Categories] 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
SET ANSI_PADDING ON
GO
ALTER TABLE [Categories] ADD CONSTRAINT [DF_Categories_Id] DEFAULT (newid()) FOR [Id]
GO
и заполнить его с 4 описаниями:
INSERT INTO Categories ([Description])
VALUES ('Client')
INSERT INTO Categories ([Description])
VALUES ('Worker')
INSERT INTO Categories ([Description])
VALUES ('Assessor')
INSERT INTO Categories ([Description])
VALUES ('Unknown')
После этого, вы должны создать таблицу Persons, с ограничением с таблицей Категории:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [Persons](
[Id] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[IdCategory] [uniqueidentifier] NOT NULL,
[FirstName] [varchar](50) NOT NULL,
[LastName] [varchar](50) NOT NULL,
[FirstAddress] [varchar](250) NULL,
[SecondAddress] [varchar](250) NULL,
[ThirdAddress] [varchar](250) NULL,
[HomePhone] [varchar](50) NULL,
[MobilePhone] [varchar](50) NULL,
[Modified] [datetime] NOT NULL,
[Comment] [varchar](500) NULL,
CONSTRAINT [PK_Persons] 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
SET ANSI_PADDING ON
GO
ALTER TABLE [Persons] ADD CONSTRAINT [DF_Persons_Id] DEFAULT (newid()) FOR [Id]
GO
ALTER TABLE [Persons] WITH CHECK ADD CONSTRAINT [FK_Persons_Categories] FOREIGN KEY([IdCategory])
REFERENCES [Categories] ([Id])
GO
ALTER TABLE [Persons] CHECK CONSTRAINT [FK_Persons_Categories]
GO
Теперь у вас есть две таблицы :)
Эти сценарии выполняются уплотнительные n Microsoft SQL Server.
PS: Лучшая практика, чтобы сделать еще одну таблицу для нескольких адресов и нескольких телефонов;)
Чтобы получить данные с помощью SELECT, вы можете сделать:
SELECT FirstName, LastName, Description AS Category
FROM Persons INNER JOIN
Categories ON Categories.Id = Persons.IdCategory
Если вы используете номер для идентификаторы, измените тип данных IdCategory в NUMBER. После этого StoredProcedure может быть как:
CREATE PROCEDURE [AddPerson]
(
@Category varchar(50),
@FirstName varchar(50),
@LastName varchar(50),
@FirstAddress varchar(250) = NULL,
@SecondAddress varchar(250) = NULL,
@ThirdAddress varchar(250) = NULL,
@HomePhone varchar(50) = NULL,
@MobilePhone varchar(50) = NULL,
@Comment varchar(500) = NULL
)
AS BEGIN
Declare @idCategory NUMBER
Set @idCategory = SELECT Id FROM Categories WHERE Description = Category
INSERT INTO Persons ([IdCategory], [FirstName], [LastName],
[FirstAddress],
[SecondAddress],
[ThirdAddress],
[HomePhone],
[MobilePhone],
[Modified],
[Comment])
VALUES (@idCategory,
@FirstName,
@LastName,
@FirstAddress,
@SecondAddress,
@ThirdAddress,
@HomePhone,
GETDATE(),
@MobilePhone,
@Comment)
END
GO
Я извиняюсь, если этот код содержит некоторые ошибки, но я написал его с помощью блокнота :)
Из того, что я могу собрать это вам нужно создать таблицу базы данных с теми полями, которые будут заполнены данными из сценария. –