設計図: リファレンス
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