設計図: リファレンス

DESIGN


■ TABLE

ReferenceIndex

リファレンスマニュアルの目次を記録します。

 

テーブル設計

FIELD TYPE KEY NULL DEFAULT NOTE
ReferenceID key PRIMARY - AUTO 主キー
Title nvarchar/64   -   リファレンスマニュアル名
LangGroupID key FOREIGN -   言語の種別 ID
Public bit   - 0 公開系(一般情報)か
Note nvarchar/200   OK   備考/詳細情報

 

外部キー

FIELD REFERENCE NOTE
LangGroupID LanguageGroup.LangGroupID  

 

ReferenceObject

リファレンスマニュアル内のオブジェクト情報です。

 

テーブル設計

FIELD TYPE KEY NULL DEFAULT NOTE
ObjectID key PRIMARY -   主キー
ReferenceID key PRIMARY -   所属するリファレンス ID
Name nvarchar/48   -   オブジェクト名
RegistDate datetime   - GETDATE() 登録日
LastUpdate datetime   -   最終更新日
Version nvarchar/16   -   オブジェクトのバージョン
Note nvarchar/200   OK   備考/詳細情報

 

外部キー

FIELD REFERENCE NOTE
ReferenceID ReferenceIndex.ReferenceID  

 

ReferenceObjectHistory

リファレンス内のオブジェクト更新履歴情報です。

 

テーブル設計

FIELD TYPE KEY NULL DEFAULT NOTE
HistoryID longkey PRIMARY - AUTO 主キー
ObjectID key FOREIGN -   所属するオブジェクト ID
ReferenceID key FOREIGN -   所属するリファレンス ID
RegistDate datetime   - GETDATE() 登録日
Memo nvarchar/600   -   登録の内容

 

外部キー

FIELD REFERENCE NOTE
ObjectID ReferenceObject.ObjectID  
ReferenceID ReferenceIndex.ReferenceID  

 

ReferenceObjectDependency

リファレンス内のオブジェクト依存関係情報です。

 

テーブル設計

FIELD TYPE KEY NULL DEFAULT NOTE
DependID longkey PRIMARY - AUTO 主キー
ObjectID key FOREIGN -   所属するオブジェクト ID
ReferenceID key FOREIGN -   所属するリファレンス ID
DependObjectName nvarchar/48   -   依存オブジェクト名
DependTypeID shortkey FOREIGN -   依存の種別 ID
Note nvarchar/200   OK   備考/詳細情報
RegistDate datetime   - GETDATE() 登録日

 

外部キー

FIELD REFERENCE NOTE
ObjectID ReferenceObject.ObjectID  
ReferenceID ReferenceIndex.ReferenceID  
DependTypeID ReferenceObjectDependType.TypeID  

 

ReferenceObjectDependType

オブジェクトの依存の仕方の情報です。”継承”、”利用” のような感じのデータが格納されます。

テーブル設計

FIELD TYPE KEY NULL DEFAULT NOTE
TypeID shortkey PRIMARY -   主キー
Name nvarchar/16   -   依存の仕方
Note nvarchar/100   OK   備考

 

ReferenceElement

リファレンスマニュアル内のオブジェクトに所属する要素の内容です。

 

テーブル設計

FIELD TYPE KEY NULL DEFAULT NOTE
ElementID key PRIMARY -   主キー
ObjectID key PRIMARY -   所属するオブジェクト ID
ReferenceID key PRIMARY -   所属するリファレンス ID
RegistDate datetime   - GETDATE() 登録日
Name varchar/32   -   要素の名前
TypeID shortkey FOREIGN -   要素種別 ID
UsageID shortkey FOREIGN -   使用用途 ID
Usage nvarchar/400   -   使用用途
ImplementVersion varchar/16   -   実装バージョン情報
ImplementMemo nvarchar/100   OK   実装時のメモ/補足
DataType varchar/32   -   要素の型
DefaultValue varchar/128   OK   要素の初期値

 

外部キー

FIELD REFERENCE NOTE
ObjectID ReferenceObject.ObjectID  
ReferenceID ReferenceIndex.ReferenceID  
TypeID ReferenceElementTypeID.TypeID  
UsageID ReferenceElementUsageID.UsageID  

 

ReferenceElementTypeID

要素の種類を決める情報です。”メソッド”、”プロパティ” といった情報が格納されています。

テーブル設計

FIELD TYPE KEY NULL DEFAULT NOTE
TypeID shortkey PRIMARY -   主キー
Name nvarchar/16   -   種別名
Note nvarchar/100   OK   備考

 

ReferenceElementUsageID

要素の使用用途を決める情報です。有効範囲などをあらわし、C++ でいうところの public / private / protected のようなものをあらわします。

テーブル設計

FIELD TYPE KEY NULL DEFAULT NOTE
TypeID shortkey PRIMARY -   主キー
Name nvarchar/16   -   使用用途名
Note nvarchar/100   OK   備考

 

ReferenceElementParamsInformation

各要素の引数情報を記録します。この中には戻り値の情報も含まれます。

 

テーブル設計

FIELD TYPE KEY NULL DEFAULT NOTE
ParamID longkey PRIMARY - AUTO 主キー
ElementID key FOREIGN -   所属する要素 ID
ObjectID key FOREIGN -   所属するオブジェクト ID
ReferenceID key FOREIGN -   所属するリファレンス ID
forResult bit   - 0 戻り値として使用するか
Name varchar/32   -   引数名 (必須)
DataType varchar/32   -   引数のデータ型 ID
DefaultValue varchar/128   OK   引数の初期値
Note nvarchar/100   OK   補足内容
ParamOrder tinyint   OK   引数の序列 (昇順)

 

外部キー

FIELD REFERENCE NOTE
ElementID ReferenceElement.ElementID  
ObjectID ReferenceObject.ObjectID  
ReferenceID ReferenceIndex.ReferenceID  

 

■ VIEW

ViewReferenceIndex

一覧表示用のリファレンスマニュアルインデックスです。

 

ビュー設計

FIELD ORG-TABLE ORG-FIELD NOTE
ReferenceID ReferenceIndex    
Title ReferenceIndex    
LangGroupID ReferenceIndex    
Language LanguageGroup    
Public ReferenceIndex    
Note ReferenceIndex    

 

実装

SELECT ReferenceIndex.ReferenceID, ReferenceIndex.Title, ReferenceIndex.LangGroupID, 
LanguageGroup.Language, ReferenceIndex.[Public], ReferenceIndex.Note
FROM dbo.ReferenceIndex INNER JOIN
dbo.LanguageGroup ON 
dbo.ReferenceIndex.LangGroupID = dbo.LanguageGroup.LangGroupID

 

ViewPublicReferenceIndex

公開可能な一覧表示用のリファレンスマニュアルインデックスです。

 

ビュー設計

FIELD ORG-TABLE ORG-FIELD NOTE
ReferenceID ViewReferenceIndex    
Title ViewReferenceIndex    
LangGroupID ViewReferenceIndex    
Language ViewReferenceIndex    
Note ViewReferenceIndex    

 

実装

SELECT ReferenceID, Title, LangGroupID, Language, Note
FROM dbo.ViewReferenceIndex
WHERE ([Public] = 1)

 

ViewReferenceElementIndex

一覧表示用のリファレンスマニュアルの要素データです。

 

ビュー設計

FIELD ORG-TABLE ORG-FIELD NOTE
ElementID ReferenceElement    
ObjectID ReferenceElement    
ReferenceID ReferenceElement    
RegistDate ReferenceElement    
ElementName ReferenceElement Name  
TypeID ReferenceElementTypeID     
TypeName ReferenceElementTypeID Name  
UsageID ReferenceElementUsageID    
UsageName ReferenceElementUsageID Name  
ImplementVersion ReferenceElement    
ImplementMemo ReferenceElement    
ResultCount ViewReferenceElementCountForResult ParamCount 戻り値の個数
ParamCount ViewReferenceElementCountForParam   引数の個数
DataType ReferenceElement    
Usage ReferenceElement    
DefaultVaule ReferenceElement    

 

実装

SELECT dbo.ReferenceElement.ElementID, dbo.ReferenceElement.ObjectID, 
dbo.ReferenceElement.ReferenceID, dbo.ReferenceElement.RegistDate, 
dbo.ReferenceElement.Name AS ElementName, dbo.ReferenceElementTypeID.TypeID, 
dbo.ReferenceElementTypeID.Name AS TypeName, 
dbo.ReferenceElementUsageID.UsageID, 
dbo.ReferenceElementUsageID.Name AS UsageName, 
dbo.ReferenceElement.ImplementVersion, dbo.ReferenceElement.ImplementMemo, 
dbo.ViewReferenceElementCountForResult.ParamCount AS ResultCount, 
dbo.ViewReferenceElementCountForParam.ParamCount, 
dbo.ReferenceElement.DataType, dbo.ReferenceElement.Usage, 
dbo.ReferenceElement.DefaultValue
FROM dbo.ReferenceElement LEFT OUTER JOIN
dbo.ReferenceElementUsageID ON 
dbo.ReferenceElement.UsageID = dbo.ReferenceElementUsageID.UsageID LEFT OUTER
JOIN
dbo.ReferenceElementTypeID ON 
dbo.ReferenceElement.TypeID = dbo.ReferenceElementTypeID.TypeID LEFT OUTER JOIN
dbo.ViewReferenceElementCountForResult ON 
dbo.ReferenceElement.ElementID = dbo.ViewReferenceElementCountForResult.ElementID
AND 
dbo.ReferenceElement.ObjectID = dbo.ViewReferenceElementCountForResult.ObjectID LEFT
OUTER JOIN
dbo.ViewReferenceElementCountForParam ON 
dbo.ReferenceElement.ElementID = dbo.ViewReferenceElementCountForParam.ElementID
AND 
dbo.ReferenceElement.ObjectID = dbo.ViewReferenceElementCountForParam.ObjectID

 

ViewReferenceElement

リファレンスマニュアルの一覧表示用データです。

 

ビュー設計

FIELD ORG-TABLE ORG-FIELD NOTE
ElementID ReferenceElement    
ObjectID ReferenceElement    
ReferenceID ReferenceElement    
RegistDate ReferenceElement    
Title ReferenceIndex    
ObjectName ReferenceObject Name  
Name ReferenceElement    
TypeID ReferenceElement    
TypeName ReferenceElementTypeID Name  
UsageID ReferenceElement    
UsageName ReferenceElementUsageID Name  
Usage ReferenceElement ParamCount  
ImplementVersion ReferenceElement    
ImplementMemo ReferenceElement    
DataType ReferenceElement    
DefaultValue ReferenceElement    

 

実装

SELECT dbo.ReferenceElement.ElementID, dbo.ReferenceElement.ObjectID, 
dbo.ReferenceElement.ReferenceID, dbo.ReferenceElement.RegistDate, 
dbo.ReferenceIndex.Title, dbo.ReferenceObject.Name AS ObjectName, 
dbo.ReferenceElement.Name, dbo.ReferenceElement.TypeID, 
dbo.ReferenceElementTypeID.Name AS TypeName, dbo.ReferenceElement.UsageID, 
dbo.ReferenceElementUsageID.Name AS UsageName, dbo.ReferenceElement.Usage, 
dbo.ReferenceElement.ImplementVersion, dbo.ReferenceElement.ImplementMemo, 
dbo.ReferenceElement.DataType, dbo.ReferenceElement.DefaultValue
FROM dbo.ReferenceElement INNER JOIN
dbo.ReferenceObject ON 
dbo.ReferenceElement.ObjectID = dbo.ReferenceObject.ObjectID AND 
dbo.ReferenceElement.ReferenceID = dbo.ReferenceObject.ReferenceID INNER JOIN
dbo.ReferenceIndex ON 
dbo.ReferenceObject.ReferenceID = dbo.ReferenceIndex.ReferenceID LEFT OUTER JOIN
dbo.ReferenceElementUsageID ON 
dbo.ReferenceElement.UsageID = dbo.ReferenceElementUsageID.UsageID LEFT OUTER
JOIN
dbo.ReferenceElementTypeID ON 
dbo.ReferenceElement.TypeID = dbo.ReferenceElementTypeID.TypeID

 

ViewReferenceObject

一覧表示用のオブジェクトデータです。

 

ビュー設計

FIELD ORG-TABLE ORG-FIELD NOTE
ObjectID ReferenceObject    
ReferenceID ReferenceObject    
Title ReferenceIndex    
Name ReferenceObject    
RegistDate ReferenceObject    
LastUpdate ReferenceObject    
Version ReferenceObject    
Note ReferenceObject    

 

実装

SELECT ReferenceObject.ObjectID, ReferenceObject.ReferenceID, ReferenceIndex.Title, 
ReferenceObject.Name, ReferenceObject.RegistDate, ReferenceObject.LastUpdate, 
ReferenceObject.Version, ReferenceObject.Note
FROM dbo.ReferenceObject INNER JOIN
dbo.ReferenceIndex ON 
dbo.ReferenceObject.ReferenceID = dbo.ReferenceIndex.ReferenceID

 

ViewReferenceElementCountForParam

要素が保持している引数の数を集計します。

 

ビュー設計

FIELD ORG-TABLE ORG-FIELD NOTE
ElementID ReferenceElementParamsInformation    
ObjectID ReferenceElementParamsInformation    
ReferenceID ReferenceElementParamsInformation    
ParamCount ReferenceElementParamsInformation COUNT(ParamID) 引数の総数

 

実装

SELECT ElementID, ObjectID, ReferenceID, COUNT(ParamID) AS ParamCount
FROM dbo.ReferenceElementParamsInformation
WHERE (forResult = 0)
GROUP BY ElementID, ObjectID, ReferenceID

 

ViewReferenceElementCountForResult

要素が保持している戻り値の数を集計します。

 

ビュー設計

FIELD ORG-TABLE ORG-FIELD NOTE
ElementID ReferenceElementParamsInformation    
ObjectID ReferenceElementParamsInformation    
ReferenceID ReferenceElementParamsInformation    
ParamCount ReferenceElementParamsInformation COUNT(ParamID) 戻り値の総数

 

実装

SELECT ElementID, ObjectID, ReferenceID, COUNT(ParamID) AS ParamCount
FROM dbo.ReferenceElementParamsInformation
WHERE (forResult = 1)
GROUP BY ElementID, ObjectID, ReferenceID

 

■ STORED PROCEDURE

sp_ReferenceElementParamsOrderNormalize

要素を追加する際に、順番の並び替えをするために使用する関数です。

引数

PARAM TYPE DEFAULT NOTE
@ReferenceID key   対象のリファレンス ID
@ObjectID key   対象のオブジェクト ID
@ElementID key   対象の要素 ID
@forResult bit   対象の要素が戻り値であるか
@ReserveParamID key NULL 並び替えを適用しない要素 ID
@ReserveParamOrder tinyint NULL 次に挿入される要素の順位

 

戻り値

PARAM TYPE NOTE
ParamOrder tinyint 次に使用するべき要素の順位番号

 

実装

CREATE PROCEDURE [sp_ReferenceElementParamsOrderNormalize]

@ReferenceID [KEY],
@ObjectID [KEY],
@ElementID [KEY],
@forResult BIT,
@ReserveParamID [KEY] = NULL,
@ReserveParamOrder TINYINT = NULL

AS

SET NOCOUNT ON

DECLARE @Result TINYINT -- 返却用の Order 値
DECLARE @tinyint TINYINT


IF @ReserveParamID IS NOT NULL

BEGIN
-- 自身を含めた後ろを詰める
SELECT @tinyint = ParamOrder
FROM ReferenceElementParamsInformation
WHERE ParamID = @ReserveParamID

UPDATE ReferenceElementParamsInformation
SET ParamOrder = ParamOrder - 1
WHERE ParamOrder >= @tinyint
AND ReferenceID = @ReferenceID
AND ObjectID = @ObjectID
AND ElementID = @ElementID
AND forResult = @forResult
END


-- 正規化

IF @ReserveParamOrder IS NULL

BEGIN
-- 最後尾の取得
SELECT @Result = MAX(ParamOrder + 1)
FROM ReferenceElementParamsInformation
WHERE ReferenceID = @ReferenceID
AND ObjectID = @ObjectID AND ElementID = @ElementID
AND forResult = @forResult
END

ELSE
BEGIN
-- ナンバリングの増加
UPDATE ReferenceElementParamsInformation
SET ParamOrder = ParamOrder + 1
WHERE ParamOrder >= @ReserveParamOrder
AND ReferenceID = @ReferenceID
AND ObjectID = @ObjectID
AND ElementID = @ElementID
AND forResult = @forResult

SET @Result = @ReserveParamOrder
END


-- 使用すべき ParamOrder の返却
IF @Result IS NULL

SELECT 1 AS ParamOrder
ELSE

SELECT @Result AS ParamOrder