MySQL Workbench 外部キーを好きな名前にする

MySQL
MySQL Workbench

MySQL Workbenchを使い始めたばかりの初心者です。
目的は、ER図をきれいに書きたい!!ドキュメントを自動的に書きたい!!これにつきます。

さて、ER図を書いている間に、1:1 とか、1:n とか、アソシエーションを作りますと、外部キーがデフォルトでテーブル名+テーブル名+idとかの勝手な外部キーの名前にされちゃいますよね。
便利な時はいいんですが、私はCakePHPで使いたかったので、この命名だと困るんです。

例えば、図のように、

mysql_workbench2.png

出荷(deliveries)と納品書(delivery_slips)が、出荷:納品書= 1:n だとすると、MySQL WorkbenchのER図作成機能でピッピッと1:nにすると、アソシエーションが勝手に作られて、外部キーの名前が

 deliveries_id

になっちゃいます。
それは困っちゃうのが、CakePHPの命名規約でして、CakePHPだと

 delivery_id

じゃないとなんですね。
(確か、CakePHP内で命名規約を外れたイレギュラーのアソシエーションも作れた記憶がありますが、今回テーブル数が多すぎるので、それはよくない)

そんな場合は、上の図の赤丸のところをクリックして、アソシエーションを作ると、自分の指定した外部キーでアソシエーションが作れます。

緑にピカーと光るのも、オサレですね!!o(>▽<)o MySQL Workbenchはまだまだ使いたてなので、もっとよい方法があれば、教えてください。┌o ペコッ ちなみに、デフォルトの外部キー名を変更したい場合は、 Edit→Preferences→Modeling→Defaults のForeign Key…とあるところのColumn Nameなどを変更すれば変えられます。

MySQL Update文でLEFT JOINする

MySQL

MySQL Update文でLEFT JOINする

Update文の中で、LEFT JOINし、特定の条件に合致するデータだけ更新する方法です。
examinationsテーブルとcsv_examinationsテーブルをJOINして、Updateします。

 UPDATE 
   examinations 
 LEFT JOIN
   csv_examinations
 ON
   csv_examinations.order_id = examinations.order_id
 SET
   examinations.examination_date = csv_examinations.examination_date, 
 WHERE
   csv_examinations.status = 'U'

SELECT文などと、ちょっと順番が違うので、「おや」と思ってしまいますよね。
INNER JOINももちろんできるようです。

MySQL NULLを検索

MySQL

MySQLでNULLの値を検索する

NULLの値を検索したい場合、たとえば次のようにすればいかにもできそうですが
mysql> SELECT * FROM my_table WHERE phone = NULL;
これは、実際にNULLの値が入っていても、空の値を返します。
なぜなら、

 phone = NULL

はいつでもFalseだからです。

次のように、IS NULLを利用しましょう。

 mysql> SELECT * FROM my_table WHERE phone IS NULL;