AccessとMySQL(とUbuntu)
その3
ここでAccessでいうリレーションの設定を。
MySQLだとRE図と書いてあるところがたくさんあるみたいです。
+ボタンを押すと新規にリレーションを設定しながら同時にテーブルを作れるみたいなのですが、ここでは既存のテーブルを元に作ってみます。
「>」ボタンを押してCreate EER Model from Databaseを選択します。
そのままNextボタンを押してパスワード入力画面が出てきたら入力します。
どれを使うか聞いてきますのでチェックを入れて次
進めていくとAccessのリレーション設定画面によく似たものが出てきます。
分かりやすいように2つのテーブルだけ表示してみました。
KDテーブルっているのは患者データテーブル、SHテーブルは処方箋データテーブルです。
この6つのアイコンでリレーションの設定をするみたいです。
1対1
1対多
多対多
はなんとなくわかると思うのですが、上の2つが非依存、次の二つが依存みたいです。
この2つのテーブルの場合、患者データ無くしては処方箋のデータはあり得ません。つまり依存してます。
また、Accessではこの二つのテーブルに連鎖削除を設定していました。
患者データをもし削除すればその患者に関する処方箋のデータも同時に削除されるということです。
これをMySQL Workbenchで設定する場合、
左の順番でクリックすると
SHテーブルにkd_KIDというフィールドが追加され、線でつながります。
ですが、リレーションを設定したいフィールドはすでに作成してあります。
リレーションを張り直したい場合、画面下
Foreign Keysタブを選択して
チェックを入れ替えてあげればいいみたいです。
追加されたフィールドは必要ないので後で削除しておきましょう。
ついでに連鎖更新と連鎖削除の設定をしたい場合は、さらに右にあるこの部分をCASCADEに変更すればいいようです。
shテーブルのKIDフィールドに赤い鍵マークが移動します。
リレーションを消したい場合は右クリックしてDeleteを選択すればいいのですが、続けて表示されるメッセージボックスはKeepを選択しましょう。
Deleteを選択すると1対多リレーションを結んだ多側のフィールドが削除されてしまいます。
リレーションの設定がこれでよければ設定を反映させる必要があります。
メニューからForward Engineerを選択しましょう。
正直、ここまで出来たらあとは今まで通りAccessで好きなプログラムをつくるだけでした。はやりのWebアプリにしたいなら利用するソフトも違ってくるのでまた別の話ですし、何でもかんでもWebがいいってわけでもないですしね。
使いやすさを考えてもブラウザで何かするよりも今のままの方がいいのかな。と思います。