OpenOffice で MySQL に接続してテーブル間にリレーションを張っても「目に見えない」。
リレーションの定義を SQL 文で書きたいけど、書き方を知らない。
しかたないので手間をかけて調べる。
- MySQL Administrator でバックアップファイルをとる。
SQL文のファイルができる。
- MySQL Workbench でインポートだリバースエンジニアリングだして SQL 文を読み込む。
- 読み込んだデータベースを図にしていじる。
1:nのリレーションを作って、勝手にできた外部キーを編集したり削除したり。(追記)
- 編集結果をエクスポートして SQL 文をつくる。
で、その結果をじっくり眺めながらお勉強をする。
--
-- Definition of table `g_category`
--
DROP TABLE IF EXISTS `g_category`;
CREATE TABLE IF NOT EXISTS `bee`.`g_category` (
`CODE` VARCHAR(4) NOT NULL ,
`CATEGORY` VARCHAR(50) NULL DEFAULT NULL ,
`GRP_CODE` VARCHAR(4) DEFAULT NULL ,
`NOTES` LONGTEXT NULL DEFAULT NULL ,
`COST` DECIMAL(12,2) NULL DEFAULT NULL ,
`PRICE` DECIMAL(12,2) NULL DEFAULT NULL ,
`CARRIAGE` DECIMAL(12,2) NULL DEFAULT NULL ,
`PHOTO` LONGBLOB NULL DEFAULT NULL ,
PRIMARY KEY (`CODE`) ,
CONSTRAINT `fk_g_category_g_group`
FOREIGN KEY (`GRP_CODE` )
REFERENCES `bee`.`g_group` (`CODE` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;
CREATE INDEX fk_g_category_g_group ON `bee`.`g_category` (`GRP_CODE` ASC) ;
--
-- Definition of table `g_group`
--
DROP TABLE IF EXISTS `g_group`;
CREATE TABLE `g_group` (
`CODE` varchar(4) NOT NULL,
`GROUP` varchar(50) NOT NULL,
`NOTES` text,
PRIMARY KEY (`CODE`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;