2

私は最近、新しい会社でレポート アナリストとして働き始めました。私たちの制作レポートのドキュメントはなく ( http://snipt.org/AnLの例を参照)、レポートのほとんどを書いた人はどんな提案にも敵意を持っています。私にはソフトウェア開発の経験があり、部門マネージャーから SQL の標準を提案するように依頼されたので、StackOverFlow コミュニティからアイデアを募集しています。

すべてのレポートには、レポートが提供するはずの情報と、プロセスを管理するのにどのように役立つかを正確に説明する物語が必要だと思います. これには、いくつかのプロセス ドキュメント (請求プロセスのしくみなど) が必要ですが、これもありません。データベースのクエリ戦略が明らかでない場合は、クエリがデータを取得するために使用する戦略を説明するステートメントが必要だと思います。最終的には、レポートを新しい従業員に引き継ぎ、レポートを実行、維持、および変更するために必要なものを手に入れることができるように、十分な数が必要です。

次に、SQL コーディング標準の問題があります。コメント ヘッダーには何を含める必要がありますか (作成者、日付、変更履歴...?)、明確性を向上させるために構造化されたインデントを使用します。コード レビューと文書化されたテストを使用して、これらの変更を管理する必要がありますか?

4

3 に答える 3

4

ヘッダーを使用するのではなく、データベース スキーマとすべてのストアド プロシージャ、ビュー、UDF などをソース管理してみませんか?

そうすれば、メタデータを手動で維持する必要がなくなります。更新を忘れると、時間の経過とともに整合性が失われることは避けられません。

http://msdn.microsoft.com/en-us/library/ms173550(v=sql.105).aspx

于 2013-06-08T17:47:56.057 に答える
0

問題を解決するためのソフトウェア (たとえば TFS) が存在する状況にあることは珍しくありませんが、何らかの理由でそれを環境内で使用することはできません。ソース コード管理ソフトウェアを悪用する方法があります。たとえば、不正な開発者が「自分の」サンドボックスからすべてのレポートを実行し始めるとします。また、バージョン管理ソフトウェアがすべての問題を解決するわけではありません。たとえば、コード内のコメントや命名規則については何も言うことはありません。

データベース ソフトウェアのメンテナンスを支援するための「標準」を次に示します。

バージョン管理ソフトウェアが許可されていない場合、変更履歴を説明するコメント ブロックがあります。次のようになります。

/*
 * GSL 2013-06-08   Modified foo at Jean's request
 * GSL 2013-06-01   Created
 */

これは、ビュー、ストアド プロシージャ、およびユーザー定義関数に適用されます。コメントなしで変更に気付いた場合は、「メールまたは直接会う」アプローチを使用して、遵守を甘やかします.

以下はバージョン管理には関係ありません。

命名規則: 異なる表にある同じものは、常に同じ名前になります。主キーも。一般に、複数形でテーブルに名前を付けてから、「s」を削除し、主キーの「id」を追加します。

列の規則: ほとんどすべてのテーブルには、主キー (テーブル名に「id」が追加された単数形)CreatedAtCreatedBy列があります。後者は、「最後に行われたことは何ですか?」という質問に答えます。と「誰がダニット?」

列のプレフィックス: ソース列がデータベースの外部から取得されたテーブルの場合、プレフィックスを使用してそれらがどこから来たのかを示します。jl_telephonenumberジェーンのリストにあるものの電話番号のようなものです。

エラーの検出: ストアド プロシージャをtry/catchブロックでラップし、ローカルでエラーを処理しようとします。通常、ストアド プロシージャは変数statusErrMsg出力変数を受け取るので、ステータス情報を呼び出し元に返すことができます。そして、発信者は常にステータスをチェックします。

インデント: これは宗教的なものであり、私には宗教があります。私が使用している非常に特殊なインデント スタイルで本を書いたことには、一定の利点があります。私は、特定のスタイルをすべての人に課すことはできないことを十分に知っています。ただし、コードは明確で、サブクエリ ブロックを互いに明確に区別できる必要があります。

テーブルの別名: 、、、、、、。a_ エイリアスは、問題のテーブルの省略形である必要があります。bcxyz

最後に (今のところ)、コードの正確性を本当に保証したい場合は、コード レビューを開始する必要があります。これは、週に 1 回 60 分の会議で、1 つのレポートを調べて、レポートのコーディングの側面について話し合うことになります。おそらく、そのようなレビューは、既存のレポートの欠陥を指摘することにより、非常に価値があることが証明されるでしょう.

于 2013-06-08T18:32:08.513 に答える
0

渡されたクエリをよく見ましたが、ほぼ「うわー!」としか言えません。あなたは確かにあなたのためにあなたの仕事を切り取っています。

このような、コメントがほとんどまたはまったくないプロシージャ、コードにインラインで埋め込まれた定数、すべて大文字、およびサブセレクトのサブセレクトを維持するのは悪夢です。これを書いた人は誰でも、そこに深刻な雇用保証を持っていると思います.

ヘッダー ブロックに関するあなたの提案は良いです。私は次の要素が好きです。原作者; 元の日付; 目的; 予想される入力; 予想される出力; および次を含む完全な変更履歴: 作成者; 変更日; 変更の目的。

これらは絶対にバージョン管理する必要があります。最新のソース管理システムの出現により、これは問題になりません。

その他の必須事項は、必要に応じて説明的なコメントを付けたり、コードをインデントしたりすることです。自動的にインデントする優れたエディタはたくさんあるので、そうしない理由はありません。

コードレビューと文書化されたテストについて言及しています。これらも優れたプラクティスですが、効果を発揮するには、建設的な批判に対してオープンなスタッフが必要です。

積極的に取り組んでいただき、ありがとうございます。ここから上り坂のような気がします!

于 2013-06-08T17:54:02.497 に答える