この状況を想像してください。開発チームがプログラムに取り組んでいます。 この場合、アプリケーションのソースコードはどこにも保存されません。 特別な逆コンパイラーを使用する各プログラマーは、必要なコードをバイナリーからアンロードし、それを処理してから再構築し、さらに開発するために同僚に提供します。
これは正常な状況だと思いますか? 私はそうは思いません。
しかし、何らかの理由で、このアプローチはデータベースアプリケーションの開発時によく使用されます。
オブジェクトは、データベース内で直接作成および変更されます。 ほとんどの専用IDEには、このための「便利な」ツールが多数用意されています。ナビゲーションツリーを使用して目的のオブジェクトを見つけたり、数回クリックするだけで変更したりできます。 同時に、ソースコードについて考える人はほとんどいません。バージョンを作成するとき、現在のデータベースのコードと本番ベースコードに基づいて差分スクリプトを生成するユーティリティがよく使用されます(たとえば、alter(テーブルなど)さまざまな方法でフォームを作成しますが、それはすべて特定のケース、変更のロジックなどに依存します。
データベースのソースコードは、実際には存在せず、人間が知覚するのが難しく、視覚開発ツールに完全に依存している一種のマシンコードであると考えられています。 プログラマは自分のDBMSの機能ではなく、特定のIDEの機能を使用します。これは、美しくて(初めてのように)便利な中間層です。 同時に、DBMS自体ではなくIDEを学習する必要があります。
実際に書かれたコード(検証、企業標準でフォーマット、コメントでフォーマット)を使用してデータベースオブジェクトを作成した後、このコードはどこにも保存されず、失われ、代わりにマシンが収集したものを取得することを覚えておく価値があります( IDE、特別なユーティリティまたはライブラリ)、データベースデータディクショナリに基づきます。 同時に、オブジェクトの変更履歴は失われます(誰が、いつ、なぜ、このオブジェクトまたはそのオブジェクトを作成/削除/変更したかを知ることができなくなります)、共同開発中などに競合が発生する可能性があります。
これについては、ソースコード管理の章のPLSQL Starter Framework用に開発されたPLSQL標準で読むことができます。
データベースに保存されているPL / SQLを変更しないでください。 代わりにソースコードファイルから作業します。 はい、データベース内のコンパイル済みコードを変更することは技術的には可能ですが、本当に悪い考えです。 これは、JavaバイトコードまたはCオブジェクトファイルの変更といくつかの点で比較できます 。「データモデルとDDL」の章で:
ほとんどのDDLは依然として手動で作成されます。 ソースコードと同様に 、コメントを付けて読みやすくします 。最後に、Oracleで単純なテーブルを作成するためのコードと、さまざまなユーティリティを使用してデータベースからアンロードした後のテーブルから得られるものを示します。
テーブル作成ソースコード:
-- This is test_table
CREATE TABLE test_table (
id NUMBER(38), -- PK
value NUMBER(10,2), -- main value
width NUMBER(5,0) -- main width value
);
DBMS_METADATA:
CREATE TABLE "OBJECTMAN"."TEST_TABLE"
( "ID" NUMBER(38,0),
"VALUE" NUMBER(10,2),
"WIDTH" NUMBER(5,0)
)
トラ:
CREATE TABLE objectman.test_table
(
id NUMBER(38)
, value NUMBER(10,2)
, width NUMBER(5)
)
TOAD Eclpiseプラグイン:
create table test_table
(
id number(38),
value number(10,2),
width number(5)
)
ご覧のとおり、気にしないで、寄せ集めは完了です。
もちろん、これは、最新のビジュアルツールを完全に放棄し、コンソールエディターで作業する必要があるという意味ではありません。 最も重要なことは、データベースアプリケーションのソースコードを操作し、自分で制御し、マシンを放棄しないことです。 データベースアプリケーションのソースコードはJavaまたはC ++アプリケーションコードより悪くはなく、同じ処理が必要です:フォーマット、コメント、バージョン管理など。
いくつかの推奨事項:
1.すべてのデータベースコード(DML、DDL、DCL、TCLなど)はリポジトリに格納する必要があります(1つのオブジェクト= 1つのファイル)。
2.最初の段落に基づいて、リポジトリからソースを使用して、使用可能な「ゼロから」「クリーン」なベースを収集できるようにする必要があります(データベースダンプを作成したり、不要な(テスト)データをカットする必要はありません)
3.ファイルからデータベースオブジェクトのコードを編集およびコンパイルする必要があります(つまり、IDEのデータベースオブジェクトのナビゲータの代わりに、リポジトリ内のプロジェクトファイルナビゲータが関連するようになります-ファイルを見つけ、編集用に開き、データベースにロールします)。