OBERをトコトン極める

固有の機能アリマス データベース設計 SQL Server編

  • 2018.06.13
  • 株式会社システムインテグレータ
固有の機能アリマス データベース設計 SQL Server編

今度はSQL Server

こんにちは、皆さん頑張って設計していますか?

SI Object Browser ER(以下OBER)は複数のデータベースに対応しており、前回はMySQLで設計をする場合の固有機能についてご紹介しました。今回はSQL Serverがお題です。前回のまとめで触れた機能(マルチDB)の他に、はたしてOBERではどのようなものが使用できるのでしょうか。

SQL Serverでデータベース設計 基本

では、前回同様、区切り文字と囲み引用符の違いから。SQL Serverでは区切り文字は「go」、囲み引用符は「[」と「]」で囲む形になります。前回のMySQLもそうでしたが、メニューバー「モデル」「モデルのプロパティ」「データベース」タブにある、「データベースタイプ」にSQL Serverを選択しておくと自動で設定してくれます。

 

Oracle

SQL Server

PostgreSQL

MySQL

囲み引用符

”Test”

[Test]

”Test”

`Test`

区切り文字

/

go

/

;

DBごとの囲み引用符と区切り文字

ers1

モデルのプロパティ

SQL Serverでデータベース設計 IDENTITY

では早速機能の説明に入りましょう。最初は「IDENTITY」です。こちらは、数値型のカラムに自動で連番をふってくれる機能です・・・と、なんだかデジャヴ感がありますが、前回ご紹介したMySQLの「AUTO INCREMENT」とよく似た動きをします。構文的には IDENTITY(<初期値>,<増分値>) と記述でき、初回に投入される数値と、それがいくつずつ増えていくかを指定することができます。

OBERでの設定方法もAUTO INCREMENTと同じで、データ型に数値系が指定されていれば、デフォルト値列でIDENTITYを選択することができます。同じような機能なので、同じ操作で設定できてわかりやすいですね。

ers2

IDENTITYの設定

CREATE文の該当列にIDENTITY(1,1)の記述がされています。初期値が1で、その後1ずつ値が増加して行く、といった感じです。
 ers3

作成されたCREATE
 

SQL Serverでデータベース設計 VARCHAR(MAX)NVARCHAR(MAX)

SQL Serverの代表的な文字データ型にはCHARVARCHARNCHARNVARCHARがあり、「VARCHAR(30)」のようにデータ型に続いて格納できるサイズを指定します。通常1~8000(N系は1~4000)の数値を指定します。各RDBMSで指定できる数値の最大はそれぞれですが、SQL Serverはそれに加えて可変長データ型のVARCHARNVARCHARに「MAX」という文字を指定することができます。

MAXを指定した場合、最大サイズが2GBとなり、非常に沢山の文字を格納する事ができるようになります。格納サイズがレコードによってまちまちで、場合によっては8000バイト(4000文字)を超える可能性がある場合の使用を想定しています。

OBERでもMAX指定が可能です。エンティティエディタのデータ型の一覧でそのまま選択できます。

とても簡単ですね。

ers4

データ型の一覧上で選択可能

ers5

作成されたCREATE

SQL Serverでデータベース設計 マルチDB機能

最後は、マルチDB機能のご紹介です。SQL Serverを普段から使用している方はご存知かと思いますが、SQL Serverはひとつのインスタンス内に複数のデータベースを持つことができ、「SELECT  * FROM <データベース名>.<スキーマ名>.<テーブル名>」のようにフルネームで指定するだけで、異なるデータベース間のデータ参照なども簡単に行なえます。このように複数のデータベースをまたいだ設計を容易にできるのがSQL Serverの特徴でもあります。OBERでもこの特徴に対応するために、冒頭のマルチDB機能を使用します。

使用するためには、まずモデルのプロパティのデータベースタブで、「マルチDB」を選択します。
※この項目はデータベースタイプにSQL Serverを指定した場合のみ選択可能です。

ers6

マルチDBを選択

すると、メニューバー → モデル → DBマッピングリスト が選択できるようになり、マッピングリスト画面に遷移できます。

(ツールバー上にも アイコンから移動可能)

ここで、このER図に登場するデータベースを定義します。ここではモデル上の名称となるDBマッピング名称、モデル上で便利な背景色、実際のデータベース名を設定します。

ers7

定義画面

ers8

リスト画面
 

作成した情報は、各オブジェクトで定義可能です。下記画面はエンティティエディタですが、プロシージャやファンクションにも情報を付加することができます。

ers9

マッピング情報を付加

マッピング情報が付加されたエンティティは、モデル上で名称部分が設定した背景色に変更されます。データベースをまたいだER図を作成した場合でも、どのデータベースに所属するエンティティなのかひと目で分かります。また、エンティティリスト上にもマッピング情報が出力されるようになります。

ers10

名称の背景色で視認可能 

 ers11

エンティティリストの状態

 
なお、このDBマッピング機能は現状ER図上だけの情報となり、フォワードエンジニアリング、リバースエンジニアリングなどの直接的なDB連携には対応しておりませんが、皆様のご要望の大きさによっては追加機能として実装されるかもしれません・・・

まずはモデリング上の機能としてご利用いただき、使い勝手などご意見・感想などいただけると嬉しいです。

SQL Serverでデータベース設計 まとめ 

いかがでしたか。今回はSQL Serverの固有機能をご紹介いたしました。これらを駆使してより良いデータベース設計をしていただければ幸いです。ご要望があればOracleなど他のDBについても続けて解説していきたいと思いますので、ご意見・ご感想お待ちしております。 

SI Object Browser ER ガイドブック

SI Object Browser 製品カタログ