掲示板一覧   -   トピック一覧
   Enterprise Architect 全般
     MySQLのリバースエンジニアリングで複合UNIQUEが<<index>>になる


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
未登録ゲスト
投稿日時: 2008-3-27 10:33

MySQLのリバースエンジニアリングで複合UNIQUEが<<index>>になる

MySQLのリバースエンジニアリングで、複数列を指定したUNIQUE制約のステレオタイプが、index になってしまいます。
尚、単独列を指定したUNIQUE制約のステレオタイプは正しく unique になります。

■環境
・Windows XP Pro. SP2
・Enterprise Architect 7.1.827
・MySQL Connector/ODBC 3.51.23
・MySQL 5.0.45 for win32
sugimoto
投稿日時: 2008-3-27 13:12
EA Administrator
投稿: 1895

Re: MySQLのリバースエンジニアリングで複合UNIQUEが<<index>>になる

ご迷惑をお掛けしており、申し訳ございません。

引用:

MySQLのリバースエンジニアリングで、複数列を指定したUNIQUE制約のステレオタイプが、index になってしまいます。
尚、単独列を指定したUNIQUE制約のステレオタイプは正しく unique になります。


こちらはODBC経由でDDLの読み込みを行った際のご指摘かと思います。

ご指摘の内容を確認しておりますが、現在再現できておらず、
複数列を指定したUNIQUE制約もステレオタイプはuniqueになっておりました。

お手数お掛けいたしますが、再現のための条件や手順などがありましたら、
ご連絡いただけますと助かります。
未登録ゲスト
投稿日時: 2008-3-27 14:07

Re: MySQLのリバースエンジニアリングで複合UNIQUEが<<index>>になる

作成したテーブル
mysql> show create table test01 \G
CREATE TABLE `test01` (
  `id` int(11) NOT NULL
    auto_increment,
  `id1` int(11) NOT NULL,
  `id2` int(11) NOT NULL,
  `id3` int(11) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `test01_UNQ_1` (`id1`),
  UNIQUE KEY `test01_UNQ_2` (`id2`,`id3`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8


mysql> show create table test02 \G
CREATE TABLE `test02` (
  `id` int(11) NOT NULL
    auto_increment,
  `id1` int(11) NOT NULL,
  `id2` int(11) NOT NULL,
  `id3` int(11) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `test02_UNQ_1` (`id1`),
  UNIQUE KEY `test02_UNQ_2` (`id2`,`id3`),
  KEY `test02_FK_1` (`id2`),
  CONSTRAINT `test02_FK_1`
    FOREIGN KEY (`id2`)
    REFERENCES `test01` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8


mysql> show create table test03 \G
CREATE TABLE `test03` (
  `id` int(11) NOT NULL auto_increment,
  `id1` int(11) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `test03_UNQ_1` (`id1`),
  CONSTRAINT `test03_FK_1`
    FOREIGN KEY (`id1`)
    REFERENCES `test01` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8



■結果
●正しく unique になるもの
・test01_UNQ_1 単独
・test01_UNQ_2 複合
・test02_UNQ_1 単独
・test03_UNQ_1 単独、FK

●index になるもの
・test02_UNQ_2 複合、FK

■まとめ
ということで、複合UNIQUE制約且つ、対象列がFKとしても定義されている場合に、index になっている様子です。
sugimoto
投稿日時: 2008-3-27 16:33
EA Administrator
投稿: 1895

Re: MySQLのリバースエンジニアリングで複合UNIQUEが<<index>>になる

詳細な情報、およびご確認いただきありがとうございます。
大変助かります。

ご連絡いただきましたとおり、複合のUNIQUE制約かつ
対象がFKとしても定義されている場合に、ステレオタイプが
indexとなってしまうことを確認いたしました。

こちらは、Enterprise Architectのバグになりますので、
開発元に連絡し、修正いたします。

お手数をお掛けいたしますが、修正まではステレオタイプを
変更していただきますようお願いいたします。

引き続き、ご迷惑をお掛けし、申し訳ございません。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ