linuxBean14.04(67)サンプルデータベースsakila databaseのインストール

ラベル: ,

前の関連記事:linuxBean14.04(66)サンプルデータベースemployee dataのER図を作成するまで


sakila databaseはDVDレンタルショップのデータベースの例です。MySQL Workbench6.3をインストールするとすでにsakilaデータベースのモデルが登録されています。このサンプルデータベースについてモデルとMySQL5.6サーバのデータの同期をとってみます。

sakila databaseのダウンロード


employee dataの例と同様にしてまずはMySQL5.6サーバにsakila databaseをインストールします。

MySQL :: MySQL Documentation: Other MySQL Documentationからsakila databaseのGzipをダウンロードしました。

ファイルマネージャでダウンロードしたsakila-db.tar.gzを右クリック→ここでファイルを展開。


解凍してできたsakila-dbフォルダに3つのファイルが入っています。

sakila.mwbファイルはMySQL WorkbenchのモデルファイルになりますがこれをMySQL Workbenchで開こうとするとダイアログがでてきます。


インデックスに外部キーと同じ名前が使われているのでインデックスの名前を修正するか?、と問われています。

MySQL5.5以降はインデックスと外部キーに同じ名前を使うことは許されなくなったそうです。


とりあえずIgnoreを選択してERR DiagramタブのCatalogでテーブルの内容をみてみると、外部キーの名前はすべてfk_から始まっているのに対してインデックスの中にfk_から始まっているものがあります。


「Rename」で開きなおすとfk_film_actor_actorがfk_film_actor_actor_idxと改名されていました。

他のテーブルのfk_から始まる名前のインデックスも同様に改名されていました。

MySQL Workbench6.3に初めからついているsakila_fullのモデルは既に同様に改名済になっています。

このsakila_full.mwbは/usr/local/share/mysql-workbench/extrasにあってパーミッションを変更しないと編集できないのでダウンロードしたsakila.mwbを「Rename」で開いて使うことにします。


sakila.mwbと紛らわしいのでsakila_full.mwbはModelのリストから削除しておきます。

MySQL5.6サーバにスキーマとデータをインストールする



MySQL Workbench6.3でMySQL5.6サーバに接続します。(接続アイコンについてはlinuxBean14.04(65)MySQL WorkbenchでMySQLユーザーを追加で作成。)

左の枠のMANAGEMENTにあるData Import/Restoreをクリックします。


sakila-schema.sqlをしていしてStart Import。


SCHEMASの更新ボタンをクリックするとsakilaスキーマが作成されてテーブルやビューやルーチンがMySQL5.6サーバに作成されていることがわかります。


まだテーブル内容は空ですので今度はデータを取り込みます。


今度はsakila-data.sqlをインポートします。


テーブルにデータが入ったことがわかります。

モデルとスキーマを同期してみる


MySQL Workbench6.3のmwbファイルのモデルとMySQL5.6サーバのスキーマは一体のものではなく、モデルを開いてEER DiagramタブのメニューでDDL(Data Definition Language)を使ってモデルとスキーマを同期させるという仕組みになっています。

Reverse Engineer

MySQL :: MySQL Workbench :: 9.4.2.2 Reverse Engineering a Live Database

リバースエンジニアではスキーマからモデルを起こします。

Forward Engineer

MySQL :: MySQL Workbench :: 9.4.1.2 Forward Engineering to a Live Server

フォワードエンジニアではモデルからスキーマを起こします。

Synchronize Model

MySQL :: MySQL Workbench :: 9.5.1 Database Synchronization

モデル、スキーマを一致させます。

今回はモデルもスキーマもすでに存在しているのでSynchronize Modelを使います。

EER DiagramタブのメニューからDatabase→Synchronize Model。


MySQL5.6への接続設定ですのでそのまま「Next」。


同期に際してのオプションが選択できます。

今回はデフォルトのまま何もチェックせず「Next」。


サーバと接続してスキーマ一覧の取得に成功しました。「Next」。


MySQL Workbench6.3で開いているモデルとそれに対応するMySQL5.6サーバにあるスキーマが表示されます。

sakilaにチェックがついていることを確認して「Next」。


Model SchemaとRDBMS Shchemaのどっちから取得したのかよくわかりませんが、たぶんRDBMS Schemaから取得成功ということでしょう。「Next」。


左側モデル、右側がサーバにあるスキーマになります。

Updateの矢印はどちらの状態をどちらに適用するのかを示しています。

モデル側のN/Aは存在しないことを表し、上図ではサーバにあるスキーマからpayment_dateというトリガー(20.3 トリガーの使用)が削除されることになります。

Updateにある矢印をダブリックするとUpdate Model→Ignore→Update Sourceの順に矢印が変化します。

どちらも自分で作ったものではないのでModelかSourceのどちらをUpdateすればよいのか判断に迷いますね。

とりあえず今回は削除するものはないようにModelの方をUpdateすることにしました。


この3箇所の矢印の向きを逆にしました。「Next」。


自動生成されたSQL(DDL)が確認できます。

「Execute」でSQLが実行されます。

これで同期完了です。


モデルのpaymentテーブルをみてみるとTriggersが追加されていることがわかります。


アップデートされたモデルの保存はSave Model to Current Fileアイコンで行います。

同期させたあとMySQL :: Sakila Sample Database :: 6 Usage Examplesの通りSQLを実行してみても同様の結果が得られました。

参考にしたサイト


MySQL :: MySQL Documentation: Other MySQL Documentation
サンプルデータベースのダウンロードサイト。

MySQL :: MySQL Workbench
MySQL Workbenchの公式マニュアル。

SQLの基本とRDBMSのアーキテクチャ - Part1 SQLの基本を理解しよう:ITpro
SQLはデータ定義言語DDL、データ操作言語DML、データ制御DCLの3つに分類されるそうです。

MySQL :: Sakila Sample Database
Sakilaサンプルデータベースのマニュアル。

次の関連記事:linuxBean14.04(68)mysql_config_editorで認証情報を難読化

PR

0 件のコメント:

コメントを投稿