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

 2018.04.12  株式会社システムインテグレータ

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ごとの囲み引用符と区切り文字

1

モデルのプロパティ

MySQLでデータベース設計 AUTO INCREMENT

基本のお話が終わったところで、さっそくMySQL固有機能と、OBERでの使い方を説明していきます。最初は「AUTO INCREMENT」です。こちらは、整数型のカラムに自動で連番をふってくれる機能です。

設定しておくと、新しい行が追加された場合にその項目に任意のデータを指定しなくても自動で設定してくれるようになります。OBERでの設定方法も簡単です。エンティティエディタでINT型などの整数データ型を設定しているカラムは、デフォルト値列でAUTO_INCREMENTが選べるようになるので、選んで設定するだけです。

2

AUTO INCREMENTの設定

データベース設計・移行に関するお役立ち資料

 CREATE文の該当列にAUTO_CREMENTが付加され、フォワードエンジニアリングで実行することができます。

3

作成された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'))」が自動で設定されます。

4

データ型でENUMを選ぶ

あとは、入力許可する文字列に書き換えていけば完了です。

5

作成されたCREATE

CREATE文を確認します。SETの場合も全く同じ動作ですので、シチュエーションに応じて使い分けましょう。 [RELATED_POSTS]

MySQLでデータベース設計 ストレージエンジン

最後は、ストレージエンジンの設定です。ストレージエンジンとは、データベースの機能のうちデータの書き込み・読み込みを行う部分です。MySQLではInnoDBMyISAMなどが有名ですが、OBERではこちらもGUIによる操作一つで設定することができます。エンティティエディタを開き、オプションタブで設定します。

6

ストレージエンジンの設定

MyISAMはトランザクションや行レベルロックをサポートしていない、InnoDBはしているが速度が劣る、Memoryはメモリ上にデータを格納する、などそれぞれ特徴がありますので、必要なものを選択しましょう。

7

作成されたCREATE

 


MySQLでデータベース設計 まとめ

いかがでしたか。今回はMSQLでのみ使用可能な機能をご紹介いたしましたが、OracleInMemory機能やSQLServerのマルチDB設計など、ほかのデータベースモードにも固有機能は存在します。もちろん全データベース共通機能だけでも十分に設計は可能ですが、固有の機能の中にも便利なものはたくさんあります。せっかくですからこれらを有効に利用して一歩進んだデータベース設計を目指していきましょう。

SI Object Browser ER ガイドブック

RECENT POST「OBERをトコトン極める」の最新記事


この記事が気に入ったらいいねしよう!