mysql:14338
From: 秋山満邦 <秋山満邦 <manpou@xxxxxxxxxx>>
Date: Sun, 13 Jan 2008 10:36:13 +0900
Subject: [mysql 14338] Re: 【Q】関連するテーブルは異なるデータベース上にあっても良いのでしょうか?
こんにちは、Akiyamaといいます。 日野さん、伊東さん、広津さん、ありがとうございます。 説明不足でご迷惑おかけしました。 いきさつは、 同じデータベースだからやり方は MS-ACCESS と変わらないだろうと思い、 勉強を兼ねて業務日報を管理するデータベース(daily_report)を作りました。 取りあえずということでこの中に社員テーブルを作っています。 後日、既存のMS-ACCESSで作った社員データベースを移行させるときに移すつもりでした。 で、その作業に取りかかろうとして、関連するテーブルを別々のデータベースにしたとき、 これまでMS-ACCESSでやれていたことがやれる?という疑問にぶつかりました。 参考書やWebやMLを探しても、 異なるデータベース間のやりとりに関する例は参照以外は見つけることができませんでした。 それで、もしかしたら出来ないんだろうかと思った次第です。 駄目であればやろうとしていたことを変えないといけませんので。 やろうとしていたのは(機能的に良いか悪いかは別として)、 多数のデータベースを作った場合、 カレントデータベースを毎回意識するのは嫌ですから、 ダミーの空の(空でなくても良い)カレントのデータベースを作り、 そこから他のデータベースを操作する。 ということです。 やれるかやれないか試しにやってみました。 次の3つのデータベースを作りました。 test:ダミーのカレントデータベース・・もともとあった。 shouhin:商品のデータベース kakaku:価格のデータベース testデータベースをカレントデータベースにして、 他のデータベースのテーブル作成、レコード挿入、削除、参照をやってみました。 結果としては、やれましたが、他所でこんな参考例を見たことありませんので、 もしかしたらとんでもないことやってる?のかもしれません。 妥当なのかそうでないのかが判りませんのでご指摘ください。 # /usr/bin/mysql --default-character-set=utf8 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 25 to server version: 5.0.22 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> create database shouhin; Query OK, 1 row affected (0.01 sec) mysql> create database kakaku; Query OK, 1 row affected (0.00 sec) mysql> use shouhin; Database changed mysql> create table tb_shouhin (name char(100) , kakaku_no int(11)); Query OK, 0 rows affected (0.00 sec) mysql> use kakaku; Database changed mysql> create table tb_kakaku (kakaku_no int(11) , kakaku int(11)); Query OK, 0 rows affected (0.00 sec) mysql> use test; ・・・・以降はtestデータベースがカレントデータベースに Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> insert into shouhin.tb_shouhin values ('mikan' , 1), ('ringo' , 2), ('kaki' , 3); Query OK, 3 rows affected (0.01 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from shouhin.tb_shouhin; +-------+-----------+ | name | kakaku_no | +-------+-----------+ | mikan | 1 | | ringo | 2 | | kaki | 3 | +-------+-----------+ 3 rows in set (0.00 sec) mysql> insert into kakaku.tb_kakaku values (1 , 100), (2 , 200), (3 , 150); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from kakaku.tb_kakaku; +-----------+--------+ | kakaku_no | kakaku | +-----------+--------+ | 1 | 100 | | 2 | 200 | | 3 | 150 | +-----------+--------+ 3 rows in set (0.00 sec) mysql> select name , kakaku from shouhin.tb_shouhin , kakaku.tb_kakaku where shouhin.tb_shouhin.kakaku_no = kakaku.tb_kakaku.kakaku_no; +-------+--------+ | name | kakaku | +-------+--------+ | mikan | 100 | | ringo | 200 | | kaki | 150 | +-------+--------+ 3 rows in set (0.01 sec) mysql> insert into shouhin.tb_shouhin values ('budou' , 2), ('kuri' , 1), ('banana' , 3); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> select name , kakaku from shouhin.tb_shouhin , kakaku.tb_kakaku where shouhin.tb_shouhin.kakaku_no = kakaku.tb_kakaku.kakaku_no; +--------+--------+ | name | kakaku | +--------+--------+ | mikan | 100 | | ringo | 200 | | kaki | 150 | | budou | 200 | | kuri | 100 | | banana | 150 | +--------+--------+ 6 rows in set (0.00 sec) mysql> insert into shouhin.tb_shouhin values ('nasi' , 4), ('biwa' , 1), ('uri' , 5);Query OK, 3 rows affected (0.01 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> insert into kakaku.tb_kakaku values (4 , 180), (5 , 130); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> select name , kakaku from shouhin.tb_shouhin , kakaku.tb_kakaku where shouhin.tb_shouhin.kakaku_no = kakaku.tb_kakaku.kakaku_no; +--------+--------+ | name | kakaku | +--------+--------+ | mikan | 100 | | ringo | 200 | | kaki | 150 | | budou | 200 | | kuri | 100 | | banana | 150 | | nasi | 180 | | biwa | 100 | | uri | 130 | +--------+--------+ 9 rows in set (0.00 sec) mysql> update kakaku.tb_kakaku set kakaku=250 where kakaku_no=2; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from kakaku.tb_kakaku; +-----------+--------+ | kakaku_no | kakaku | +-----------+--------+ | 1 | 100 | | 2 | 250 | | 3 | 150 | | 4 | 180 | | 5 | 130 | +-----------+--------+ 5 rows in set (0.00 sec) mysql> delete from shouhin.tb_shouhin where name='mikan'; Query OK, 1 row affected (0.00 sec) mysql> select name , kakaku from shouhin.tb_shouhin , kakaku.tb_kakaku where shouhin.tb_shouhin.kakaku_no = kakaku.tb_kakaku.kakaku_no; +--------+--------+ | name | kakaku | +--------+--------+ | ringo | 250 | | kaki | 150 | | budou | 250 | | kuri | 100 | | banana | 150 | | nasi | 180 | | biwa | 100 | | uri | 130 | +--------+--------+ 8 rows in set (0.00 sec) mysql> create table shouhin.tb_shouhin2 (name char(100) , kakaku_no int(11)); Query OK, 0 rows affected (0.00 sec) mysql> insert into shouhin.tb_shouhin2 values ('tomato' , 4), ('nasu' , 1), ('kyuri' , 5); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> select name , kakaku from shouhin.tb_shouhin2 , kakaku.tb_kakaku where shouhin.tb_shouhin2.kakaku_no = kakaku.tb_kakaku.kakaku_no; +--------+--------+ | name | kakaku | +--------+--------+ | nasu | 100 | | tomato | 180 | | kyuri | 130 | +--------+--------+ 3 rows in set (0.00 sec) mysql> select database(); +------------+ | database() | +------------+ | test | +------------+ 1 row in set (0.01 sec) mysql> \q Bye # 以上が、結果です。 -- _____σ(^ ^)__m_a_n_p_o_u______ http://www1.bbiq.jp/manpou
14333 2008-01-11 22:36 [秋山満邦 <manpou@xxx] 【Q】関連するテーブルは異なるデータベース上にあっても良いのでしょうか? 14334 2008-01-12 13:30 ┣["日野洋一郎" <hino@x] 14335 2008-01-12 13:48 ┃┗["yusuke ito" <ito.ys] 14337 2008-01-12 18:35 ┃ ┗["日野洋一郎" <hino@x] 14336 2008-01-12 16:23 ┣["T.Hirotsu" <hirotsu] -> 14338 2008-01-13 10:36 ┗[秋山満邦 <manpou@xxx] 14339 2008-01-13 19:49 ┗["T.Hirotsu" <hirotsu] 14341 2008-01-14 00:50 ┗[秋山満邦 <manpou@xxx]