OBERは複数データベースの設計が可能
こんにちは、皆さん頑張って設計していますか?
SI Object Browser ER(以下OBER)は複数のデータベースに対応しており、異なるデータベースであっても同じような操作感で設計できるのが特徴です。採用されたデータベースによって操作性が変わらないのは大きなメリットと言えます。しかし、操作は変わらなくても各データベース固有の機能はやはり存在します。
OBERではそのあたりはどう対応しているのでしょうか。今回はMySQLの固有機能についてご紹介していきましょう。
MySQLでデータベース設計 基本
では、最初は簡単なところで、区切り文字と囲み引用符からお話しします。以前の記事「データベース移行心得」でもご紹介しましたが、SQLを連続実行するときの「区切り文字」や、大文字小文字の区別等に使用する「囲み引用符」はデータベースごとに違います。MySQLでは区切り文字は「;」、囲み引用符は「`」を使用します。これらはメニューバー「モデル」→「モデルのプロパティ」→「データベース」タブにある、「データベースタイプ」にMySQL/Amazon Auroraを指定していれば、OBERが自動で設定してくれるので特に意識する必要はありませんが、おさらいとして再掲しておきます。
|
Oracle |
SQL Server |
PostgreSQL |
MySQL |
囲み引用符 |
”Test” |
[Test] |
”Test” |
`Test` |
区切り文字 |
/ |
go |
/ |
; |
DBごとの囲み引用符と区切り文字
モデルのプロパティ
MySQLでデータベース設計 AUTO INCREMENT
基本のお話が終わったところで、さっそくMySQL固有機能と、OBERでの使い方を説明していきます。最初は「AUTO INCREMENT」です。こちらは、整数型のカラムに自動で連番をふってくれる機能です。
設定しておくと、新しい行が追加された場合にその項目に任意のデータを指定しなくても自動で設定してくれるようになります。OBERでの設定方法も簡単です。エンティティエディタでINT型などの整数データ型を設定しているカラムは、デフォルト値列でAUTO_INCREMENTが選べるようになるので、選んで設定するだけです。
AUTO INCREMENTの設定
CREATE文の該当列にAUTO_CREMENTが付加され、フォワードエンジニアリングで実行することができます。
作成されたCREATE文
MySQLでデータベース設計 ENUM型、SET型
MySQLはCHECK制約がありません。(Ver.5.7現在)
※正確には記述はできますが評価されず無視されるようです。
トリガーを作成してCHECK制約の代わりをさせたり、Ver.5.7であれば生成カラム機能で代用したりしますが、このENUM型,SET型もその候補の一つとなります。それぞれデータ型として性別列に「 ENUM(‘男’,’女’)」、好きなスポーツ列に「SET(‘野球’,’サッカー’,’バスケット’)」のように定義します。
こうすることによって指定した値で入力チェックがかかるようになります。このデータ型は以下のような特徴があります。
ENUM・・・列挙した文字列から1つを選択する。ラジオボタン風の選択方式。
SET・・・列挙した文字列から選択する。チェックボックス風の選択方式。選択値は連結して格納できる。
・・・まぁ、これ以上の細かい仕様については皆さんそれぞれお調べいただくとして、こちらもOBERで使用可能です。エンティティでエディタを展開し、ほかのデータ型を選択するようにENUMを設定します。するとMySQLでは使用しない制約欄にデフォルト値として「(('Y','N'))」が自動で設定されます。
データ型でENUMを選ぶ
あとは、入力許可する文字列に書き換えていけば完了です。
作成されたCREATE文
CREATE文を確認します。SETの場合も全く同じ動作ですので、シチュエーションに応じて使い分けましょう。 [RELATED_POSTS]
MySQLでデータベース設計 ストレージエンジン
最後は、ストレージエンジンの設定です。ストレージエンジンとは、データベースの機能のうちデータの書き込み・読み込みを行う部分です。MySQLではInnoDBやMyISAMなどが有名ですが、OBERではこちらもGUIによる操作一つで設定することができます。エンティティエディタを開き、オプションタブで設定します。
ストレージエンジンの設定
MyISAMはトランザクションや行レベルロックをサポートしていない、InnoDBはしているが速度が劣る、Memoryはメモリ上にデータを格納する、などそれぞれ特徴がありますので、必要なものを選択しましょう。
作成されたCREATE文
MySQLでデータベース設計 まとめ
いかがでしたか。今回はMySQLでのみ使用可能な機能をご紹介いたしましたが、OracleのInMemory機能やSQLServerのマルチDB設計など、ほかのデータベースモードにも固有機能は存在します。もちろん全データベース共通機能だけでも十分に設計は可能ですが、固有の機能の中にも便利なものはたくさんあります。せっかくですからこれらを有効に利用して一歩進んだデータベース設計を目指していきましょう。
- カテゴリ:
- キーワード: