3

初心者の頃のコードの一部を再訪したところ、SQL テーブルの列名の一部が非常に曖昧で、身がすくむようなことがわかりました。

先に進んで名前を変更すると、コード内のすべてのマッピングを修正するために必要な時間と労力は、現時点では正当化できないようです。

DBに挿入するときにエイリアスを提供できるかどうか疑問に思っていましたか?

次のようにエイリアスを使用できるのでお願いしますSELECT

SELECT users.id, username, number AS order_number FROM users INNER JOIN orders ON users.id = orders.user_id;

または、これを達成する方法について他の提案はありますか?

4

2 に答える 2

3

テーブルをビューでラップしてから、ビューに挿入できます。

create view view_nice_column_names 
as
SELECT bad_name_1 as nice_name_1, bad_name_2_as nice_name_2 FROM blabla
GO

INSERT INTO view_nice_column_names (nice_name_1, nice_name_2) VALUES ( ...)
于 2013-07-27T03:48:20.097 に答える
3

データベースのリファクタリングは間違いなく大規模でリスクのあるアクティビティですが、リスクを軽減するためのヒントをいくつか紹介します。以下は、さまざまな長所と短所を含むいくつかの提案です(私が見ているように)、それらが役立つことを願っています.

コード

プログラミング言語、快適さ、時間枠に応じて、インライン ダイレクト SQL を Hibernate / NHibernate などの RDBMS に依存しないオブジェクト リレーショナル マッパーに置き換えることができます。

長所

  • 将来のデータベース リファクタリングのための抽象化を提供します。
  • 改善と再利用性を提供する場合があります。
  • SQL インジェクション攻撃を減らします。

短所

  • コード ベースの再配線には多くの労力とリスクが伴いますが、これは断片的なアプローチで行うことができます。
  • すべてのタイプのアプリケーション/サービス (EG、レポート) に適しているわけではありません。

ストアド プロシージャ

RDBMS によっては、ストアド プロシージャを使用して、基になるデータとスキーマに抽象化と追加のセキュリティを提供できます。

長所

  • 維持するコードが増えました。
  • 簡単にテストできませんが、RDBMS によっては、SP カバレッジを含む必要があるデータベース テスト フレームワークがたくさんあります。
  • ストアド プロシージャで動的 SQL を構築していないと仮定すると、データ セキュリティが向上し、SQL インジェクション攻撃のリスクが軽減されます。

短所

  • データ アクセスをドメイン/ビジネス ロジックと絡み合わせるために悪用される可能性があります。
  • ストアド プロシージャを使用するには、コード ベースを更新する必要があります。

ビュー

既存のテーブルの名前を変更UsersOrders、ビューを使用して列名の抽象化を提供できます。

長所

  • 選択ステートメントの抽象化を提供し、列のエイリアシングを提供します。
  • 迅速かつ比較的簡単に実行できます。
  • スキーマ バインド/インデックス ビューが使用されている場合、改善される可能性があります。

短所

  • select ステートメントに限定されます。
  • 開発するのが混乱する可能性があります。
  • SQL インジェクション攻撃に対するセキュリティを損なうことはありません。
  • 維持するコードが増えました。

ファサード テーブル ビューの提案と組み合わせて、列の命名とセキュリティ アクセスを変更したファサード テーブルを作成できます。データがファサード テーブルに挿入されると、トリガーを抽象化メカニズムとして使用して、古いテーブルにデータを入力します。

長所

  • データを挿入するための抽象化を提供できます。

短所

  • おそらく、抽象化を提供するための最も危険なオプションです。
  • 挿入ステートメントにのみ適しています。
  • ダイレクト インライン SQL を使用すると、インジェクション攻撃の影響を受けやすくなります。
  • お使いのデータ型ではトリガーがサポートされていない可能性があります。
  • 維持するコードが増えました。
  • トリガーはデバッグが難しく、「隠されている」という性質のために好まれないことがよくあります。
于 2013-07-27T03:44:07.727 に答える