. 3 , (Code, CodeKey CodeValue), , , ? - .
:
CREATE TABLE [dbo].[Code](
[CodeType] [int] NOT NULL,
[Code] [int] NOT NULL,
[CodeDescription] [nvarchar](40) NOT NULL,
[CodeAbreviation] [nvarchar](10) NULL,
[DateEffective] [datetime] NULL,
[DateExpired] [datetime] NULL,
CONSTRAINT [PK_Code] PRIMARY KEY CLUSTERED
(
[CodeType] ASC,
[Code] ASC
)
GO
CodeType = 0, Code = 0, CodeType. CodeType CodeType = 0 Code> = 1. , :
SELECT CodeType, Code, Description FROM Code
Results:
CodeType Code Description
-------- ---- -----------
0 0 Type
0 1 Gender
0 2 Hair Color
1 1 Male
1 2 Female
2 1 Blonde
2 2 Brunette
2 3 Redhead
Code , , CodeType:
ALTER TABLE [dbo].[Code] WITH CHECK ADD CONSTRAINT [CK_Code_CodeType]
CHECK (([dbo].[IsValidCodeType]([CodeType])=(1)))
GO
IsValidCodeType :
CREATE FUNCTION [dbo].[IsValidCodeType]
(
@Code INT
)
RETURNS BIT
AS
BEGIN
DECLARE @Result BIT
IF EXISTS(SELECT * FROM dbo.Code WHERE CodeType = 0 AND Code = @Code)
SET @Result = 1
ELSE
SET @Result = 0
RETURN @Result
END
GO
, , , , . .
Person, . ( Gender), Code:
CREATE TABLE [dbo].[Person](
[PersonID] [int] IDENTITY(1,1) NOT NULL,
[LastName] [nvarchar](40) NULL,
[FirstName] [nvarchar](40) NULL,
[GenderCode] [int] NULL,
CONSTRAINT [PK_Person] PRIMARY KEY CLUSTERED ([PersonID] ASC)
GO
ALTER TABLE [dbo].[Person] WITH CHECK ADD CONSTRAINT [CK_Person_GenderCode]
CHECK (([dbo].[IsValidCode]('Gender',[Gendercode])=(1)))
GO
IsValidCode :
CREATE FUNCTION [dbo].[IsValidCode]
(
@CodeTypeDescription NVARCHAR(40),
@Code INT
)
RETURNS BIT
AS
BEGIN
DECLARE @CodeType INT
DECLARE @Result BIT
SELECT @CodeType = Code
FROM dbo.Code
WHERE CodeType = 0 AND CodeDescription = @CodeTypeDescription
IF (@CodeType IS NULL)
BEGIN
SET @Result = 0
END
ELSE
BEGiN
IF EXISTS(SELECT * FROM dbo.Code WHERE CodeType = @CodeType AND Code = @Code)
SET @Result = 1
ELSE
SET @Result = 0
END
RETURN @Result
END
GO
, . Person:
SELECT PersonID,
LastName,
FirstName,
GetCodeDescription('Gender',GenderCode) AS Gender
FROM Person
. , .