SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Visual Studio 2005 Team Systemを使ってみよう

Visual Studio 2005 Team Edition for Database Professionalで行うDB開発

Visual Studio 2005 Team Systemを使ってみよう - 第5回


  • X ポスト
  • このエントリーをはてなブックマークに追加

データベースの比較

 データベースの比較には大きく分けて2つの機能が用意されています。データベーススキーマの比較を行う機能と、データそのものの比較を行う機能です。また、スキーマやデータの比較を行うだけではなく、比較後に必要に応じてターゲットデータベースを更新することも可能です。これらの機能を利用することで、本番データベースとテスト用データベースのスキーマやデータの比較、本番データベースと開発中のデータベースプロジェクトのスキーマの比較を行い、修正を行うことができます。では、2つの比較機能について見ていきたいと思います。

データベーススキーマの比較

 データベーススキーマの比較機能を利用して、例えば本番用データベースとテスト用データベースのスキーマを比較し、修正を行います。この機能は、比較元、比較先として以下の3種類のパターンを利用することができます。ここで比較元とは現在開発中または最新のもので、比較先とは以前の情報のものを指します。

  • ソースデータベースとターゲットデータベースの比較
  • ソースデータベースプロジェクトとターゲットデータベースの比較
  • ソースデータベースプロジェクトとターゲットデータプロジェクトの比較

 このように、実在のデータベースとVSDPで作成しているデータベースプロジェクトの組み合わせで比較を行うことができます。VSDPの仕組みとしては、ソースデータベースとターゲットデータベースプロジェクトの比較も可能で、2×2パターンの比較が可能ですが、比較元、比較先の意味合いを考えると現実的にはあまり意味のない選択肢だと思います。

 さて、比較元、比較先を決定してスキーマの比較を実行すると次の図6のような画面になります。

図6 データベーススキーマの比較
図6 データベーススキーマの比較

 画面の上部には、比較先との状態の違いなどが表示されます。ここで状態列は以下の4種類の値をとります。

  • 等しい
    • ソースオブジェクトとターゲットオブジェクトの構造が同じ
  • 異なります
    • ソースオブジェクトとターゲットオブジェクトの構造が異なる
  • 見つかりません
    • ターゲットに存在するオブジェクトがソースに存在していない
  • 新規
    • ソースに存在するオブジェクトがターゲットに存在していない

 この状態に合わせて、VSDPはターゲットを更新するための準備を行っています。それが、更新アクション列に設定されている内容です。状態が「等しい」場合には何もする必要がないのでスキップ、異なる場合には更新などで以下の表2に示す設定を行うことができます。

表2 更新アクションの設定内容
状態 更新アクション 既定値の説明
等しい スキップ 等しいオブジェクトの場合の既定のアクション
異なります 更新、スキップ ソースオブジェクトの内容でターゲットオブジェクトの内容を変更する
見つかりません ドロップ、スキップ ターゲットオブジェクトを削除する
新規 作成、スキップ ターゲットオブジェクトを作成する

 デフォルトでは表2の更新アクションにある太字部分が設定されていますが、それぞれ必要に応じて変更します。実際にどういったアクションに設定するかは図5の画面下側に表示されているオブジェクトの定義から相違点を確認することで行います。設定が終了したら、メニューにある[更新の書き込み]を実行することでソースの情報でターゲットを更新することができます。

データそのものの比較

 データの比較機能を利用して、例えば日付の異なる2つのデータベースのデータを比較し、データがどのように変更されたか確認することができます。この機能は、比較元、比較先として以下の1種類のみを利用することができます。比較元、比較先はデータベーススキーマの比較のときと同様に、比較元とは現在開発中または最新のもので、比較先とは以前の情報のものを指します。

  • ソースデータベースとターゲットデータベースの比較

 データの比較がこの1種類のみなのは、データベースプロジェクトはスキーマ情報のみを保持し、データを持っていないためです。さらにデータの比較を行う場合には、双方のデータベースが共通していくつかの条件を満たしている必要があります。

  • テーブルおよびビューは、名前、所有者、スキーマが一致していること
  • テーブルは、主キー、一意のインデックス、一意の制約が一致していること
  • ビューは、一意のクラスタ化インデックスが一致していること

 単純には、データの比較機能はまったく同じスキーマをもった2つのデータベースのデータの差異を比較するといった感じです。実際にデータを比較すると次の図7のような画面になります。

図7 データベースデータの比較
図7 データベースデータの比較

 画面の上部には比較したテーブルごとにテーブル内に含まれるレコードの比較結果を以下の4種類で表現しています。

  • 異なるレコード
    • ソースとターゲットで差異のあるレコード数
  • ソースのみ
    • ソースには存在するが、ターゲットには存在しないレコード数
  • ターゲットのみ
    • ターゲットには存在するが、ソースには存在しないレコード数
  • 同一のレコード
    • ソースとターゲットで同一のレコード数

 画面の下部には4種類それぞれの実際のデータが表示されています。ここで実際のデータを確認することで異なっているデータがどれなのかを詳しく確認することができます。確認した結果、ソースデータベースのデータで、ターゲットデータベースのデータを更新したい場合には、メニューの[更新の書き込み]を行うことでその作業を実行することができます。

次のページ
単体テストによるデータベースの検証

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Visual Studio 2005 Team Systemを使ってみよう連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト りばてぃ/FUJIKO/ナオキ(リバティ, フジコ, ナオキ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1724 2008/09/04 12:58

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング