設計図: 言語情報

DESIGN


■ TABLE 

LanguageGroup

言語情報系を保存するテーブルです。

 

テーブル設計

FIELD TYPE KEY NULL DEFAULT NOTE
LangGroupID key PRIMARY -   主キー
Language varchar/64   -   プログラミング言語名
CompanyID longkey FOREIGN OK   関係会社 ID
RegistDate datetime   - GETDATE() 登録日

 

外部キー

FIELD REFERENCE NOTE
CompanyID CompanyInformation.CompanyID  

 

トリガ

同一名称のものが登録されるのを阻止します。

CREATE TRIGGER [tr_LanguageGroupCheck]
ON dbo.LanguageGroup
FOR INSERT, UPDATE
NOT FOR REPLICATION

AS

-- 名前が更新される場合のみを対象とする。
IF UPDATE([Language])
BEGIN
IF
(
SELECT count(*) FROM LanguageGroup
WHERE [Language] IN (SELECT [Language] FROM INSERTED)
) > 1
BEGIN
RAISERROR('同一の Language が既に存在しています。', 16, 1)
ROLLBACK TRAN
END
END

RETURN

■ VIEW

ViewLanguageListing

言語一覧をリストアップするためのビューです。

 

ビュー設計

FIELD ORG-TABLE ORG-FIELD NOTE
LangGroupID LanguageGroup    
Language LanguageGroup    
CompanyID CompanyInformation    
CompanyName CompanyInformation Name  
RegistDate LanguageGroup    

 

実装

SELECT dbo.LanguageGroup.LangGroupID, dbo.LanguageGroup.Language, 
dbo.CompanyInformation.CompanyID, 
dbo.CompanyInformation.Name AS CompanyName, 
dbo.LanguageGroup.RegistDate
FROM dbo.LanguageGroup LEFT OUTER JOIN
dbo.CompanyInformation ON 
dbo.LanguageGroup.CompanyID = dbo.CompanyInformation.CompanyID