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つの機能が用意されています。データベーススキーマの新規作成と既存データベースからスキーマのインポートを行って編集する機能です。どちらの場合でもC#やVisual Basicの新しいプロジェクトを作成するのと同じ要領で、新しいデータベースプロジェクトを作成します。

 新規作成か既存スキーマのインポートかによって、プロジェクトのフォルダ構造に多少の違いはあるものの、おおむね図2のようなプロジェクトが生成されます(図2はSQL Server 2005のサンプルデータベースであるAdventureWorksデータベースをインポートしたものです)。

図2 データベースプロジェクトのプロジェクト構造
図2 データベースプロジェクトのプロジェクト構造

 このデータベースプロジェクトを利用して、データベースそのものやテーブル、ビュー、ストアドプロシージャなどをはじめ、データベースに関するほぼすべてのものを作成、編集することができます。

 単純にDDLを記述するだけであれば、Visual Studio 2005 Professional Editionなどに付属のデータベースプロジェクトを利用しても可能です。実際、VSDPにはDDLを定義するためのさまざまな雛型(VSでClassを作成すると生成されるクラスファイルの雛型のようなもの)は用意されているものの、依然としてインテリセンスを利用したSQL文の記述ができないなど一見違いが見当たらないと感じられる点もあります。

 しかし、VSDPでは次の図3に示すような定義済みDDLをスキーマビューで確認するという機能があります。VSDPを利用しない場合でも、Visual Studioにはサーバエクスプローラウィンドウが付属しています。このウィンドウで接続文字列を定義して、実在するデータベースに接続することによってテーブルや列名、ストアドプロシージャやそのパラメータなどを確認することができます(図4)。

図3 VSDPのスキーマビュー
図3 VSDPのスキーマビュー
図4 VSのサーバエクスプローラ
図4 VSのサーバエクスプローラ

 両者を比較してみると、図3のスキーマビューではそのウィンドウ内で、主キーや制約としてどんなものが設定されているかを確認することができます。一方、図4のサーバエクスプローラでは、列名のみの情報で主キーやインデックスがどうなっているのかを判断することができません(サーバエクスプローラでテーブルを右クリックして[テーブル定義を開く]を選択し、表示された画面では主キーを確認することはできます)。

 また、図3、 図4の見た目からは分かりませんが、スキーマビューは現在開発中のデータベースプロジェクトに含まれるDDLを読み込んで表示されているため、スキーマビューを見るためにSQL Serverが必要になることはありません。逆にサーバエクスプローラは実際のデータベースに接続しているため、格納されているデータを確認したり編集したりすることができます。

 なお、これは直接VSDPとは関係ありません(ですが、VSDPの説明でスキーマのバージョン管理が可能という場合、このことを指していることがほとんどです)が、作成したプロジェクトファイルはVisual Studio 2005 Team Foundation ServerやVisual SourceSafeなどの構成管理ツールを利用してバージョン管理することも可能です。

DDL
 DDL(Data Definition Language)とは、SQLのうち、データベースやテーブルなどを定義する際に利用するもののことを指す。

データジェネレータによるデータの生成

 データジェネレータとは、VSDPに用意されたデータベースのスキーマに合わせてさまざまなデータを自動的に生成できる機能です。主に作成したスキーマのテストを行いたいときに利用することができます。

 この機能を利用すると、作成したDDLからテーブルやリレーションの情報を読み取り、標準では列の型に合わせて自動的にランダムなデータを生成します。図5はデータジェネレータを利用したデータ生成計画を新規に作成してデータ生成のプレビューを確認しているところです。

図5 データジェネレータによるデータの生成
図5 データジェネレータによるデータの生成

 図5を見ると想像がつくかもしれませんが、データジェネレータはテーブルのリレーションを判断し、外部キーをデータとして組み込める便利な機能を持っています。一方で、文字列(char型やnvarchar型)などにはまったく意味のないデータが並んでしまっています。このようにデータジェネレータはデフォルト設定のままではランダムで意味のないデータを生成してしまいます。

 そこで、データジェネレータの変更やデータジェネレータのプロパティ設定を行う必要があります。例えばInteger型のデータジェネレータでは、最小値、最大値を設定することができ、String型のジェネレータでは文字列長の最小値、最大値を設定することができます。しかしこれらの設定は、データ出力を行いたいすべての列に、それぞれ設定していく必要があるため、量が多い場合にはそれなりの時間が必要になることは注意してください。

 ジェネレータは他にも正規表現ジェネレータやデータバインドジェネレータなど任意の出力を設定可能なものが用意されています。正規表現ジェネレータでは、正規表現式を用いて、出力される内容をある程度制限することができます。データバインドジェネレータでは、SQL ServerやAccess、Excelなどにあらかじめ用意しておいた情報を代入するという形でデータ出力を行うことができます。業務的に整合性をもったデータを利用してスキーマの検証を行いたい、ストアドプロシージャのテストを行いたいといった場合にはデータバインドジェネレータを利用するとよいと思います。

次のページ
データベースの比較

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

  • 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング