1

MySQLデータベースに多数のMyISAMテーブルがあるとしましょう。私のテーブルがInnoDBの場合、MySQLWorkbenchはテーブル間の関係を自動的に取得することを知っています。しかし、テーブルがMyISAMの場合、MySQL Workbenchがテーブルスキーマに列を追加せずに、MySQL Workbenchで外部キーとして使用する列を選択する方法はありますか?たとえば、次のようなテーブルにこれらの列があるとしますusers

id              PRIMARY KEY
username        VARCHAR (255)
password        VARCHAR (255)
email           VARCHAR (255)
user_type_id    INT

上で見ることができるように、user_type_idと呼ばれるテーブルから来る外部キーになりますuser_typesusersテーブルとMySQLWorkbenchで多対1の関係を追加すると、テーブルのスキーマにuser_typesuser_types_idが自動的に追加されますusers(これは、MySQL Workbenchが通常外部キーと見なすためです)。それが起こらないようにしたいのですが、MySQLWorkbenchに列user_type_idを外部キーとして使用するように指示できるようにしたいのです。どうすればそれができますか?

ありがとうございました

注: MySQL Workbenchのモデルビューでテーブルをダブルクリックすると、[外部キー]タブが表示されますが、そうすると、次のテキストが表示されます。

注:外部キーは、特定のストレージエンジン(InnoDBなど)に対してのみ定義できます。サーバーは他のストレージエンジンの外部キー定義を受け入れますが、それらを黙って無視します。テーブルエンジンを外部キーをサポートするものに切り替えて、ここで調整できるようにします。

4

2 に答える 2

2

一時的に InnoDB に切り替えて関係を定義し、MyISAM に戻すことができます。関係は残ります。しかし、あなたの意図を文書化する以外に、それらは実際には役に立ちません。

それがあなたが望むすべてなら、先に進んでください。

ところで、FK タブ ページは Windows でのみ利用できます (FK をサポートしないエンジンの場合)。MyISAM の FK を定義したユーザーから多くの苦情が寄せられており、ターゲット DB で効果が見られないためです。Linux + OS X では、選択したストレージ エンジンに関係なく、FK で作業できます。

于 2013-01-25T08:27:26.493 に答える
0

あなたの質問を正しく理解していれば、テーブル自体の [外部キー] タブからこれを行うことができると思います。モデルの概要からテーブルをダブルクリックすると、下部のタブに [外部キー] タブがあります。そのダイアログから選択しても、手動で外部キーを追加できます。それは理にかなっていますか?

于 2013-01-24T20:55:50.527 に答える