1

私はかなり大きなリレーショナル データベースを持っており、管理者のバックエンドに取り組んでいます。特定のテーブルの列を参照しているテーブルを知りたいです。

例: をプライマリ インデックスproductsとするテーブルがあるとします。テーブル、テーブル、テーブルidなど、このインデックスを参照するテーブルを多数作成できます。特定の製品を削除したい場合は、最初に他のテーブルを操作する必要があります。単純な「cascade」または「delete」ディレクティブでは不十分です。MySQL に、どのテーブルのどの列がインデックスを参照しているかを正確に教えてもらうにはどうすればよいですか?ordersuser_bookmarksproduct_reviewsproducts.id

おまけの質問: phpmyadmin を使用してこの情報を取得する組み込みの方法はありますか?

4

2 に答える 2

1

データベースからスキーマを MySQL Workbench に読み込み、ツールを使用してテーブル間の関係をプロットできませんか? 私はMySQL Workbenchで設計を行い、次にマッピングなどを行い、MySQLにエクスポートしてデータベースを作成するため、これを自分で試したことはありません。

于 2013-07-03T13:12:46.560 に答える
1
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE (REFERENCED_TABLE_SCHEMA, REFERENCED_TABLE_NAME) = ('mydatabase', 'products')

あなたのコメントについて:

MySQL は再帰クエリをサポートしていないため、残念ながら、単一のクエリで外部キーの完全なグラフを見つける方法はありません。最善の方法は、上記のクエリの各結果に対してクエリを再度実行し、TABLE_SCHEMA と TABLE_NAME を WHERE 句の文字列定数として置換することです (循環外部キーがある場合は、無限ループに入らないように注意してください)。 .

于 2013-07-02T22:43:27.313 に答える