MySQLに誰かが作成したデータベースがあります。データベースのドキュメントはありません。
テーブル間の関係を知るにはどうすればよいですか?
関係を簡単に見つけられるようにレポートを生成するクエリまたは手順はありますか?
スキーマ情報を調べて手動で把握することはできますが、関係レポートを生成できればすばらしいと思います。
プログラム的に言えば、次のようにINFORMATION_SCHEMA.KEY_COLUMN_USAGE
テーブルからデータを収集することをお勧めします。
SELECT
`TABLE_SCHEMA`, -- Foreign key schema
`TABLE_NAME`, -- Foreign key table
`COLUMN_NAME`, -- Foreign key column
`REFERENCED_TABLE_SCHEMA`, -- Origin key schema
`REFERENCED_TABLE_NAME`, -- Origin key table
`REFERENCED_COLUMN_NAME` -- Origin key column
FROM
`INFORMATION_SCHEMA`.`KEY_COLUMN_USAGE` -- Will fail if user don't have privilege
WHERE
`TABLE_SCHEMA` = SCHEMA() -- Detect current schema in USE
AND `REFERENCED_TABLE_NAME` IS NOT NULL; -- Only tables with foreign keys
そしてもう一つは
select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS;
以下の手順を実行すると、MySql Workbenchで概要を取得できます。
SchemaSpyを試してみてください( http://schemaspy.sourceforge.net/ ):
SchemaSpyはJavaベースのツール(Java 5以上が必要))であり、データベース内のスキーマのメタデータを分析し、ブラウザーで表示可能な形式でスキーマの視覚的表現を生成します。
http://schemaspy.sourceforge.net/sample/ からのサンプル出力のHTMLページのスクリーンショットを次に示します。
コマンドラインを使用したくない場合は、素敵なGUIもあります。 http://schemaspygui.sourceforge.net/
どちらのツールもオープンソースであり、私の意見では非常に軽量で使いやすいツールです。私があなたが説明した状況にあったとき、私はそれらを数回使用しました:スキーマの概要とさらに深く掘り下げるためのいくつかの詳細を得るため(「異常」レポートをご覧ください。)
http://schemaspy.org でSchemaSpyの次期バージョンを必ずチェックしてください。
Mysqlワークベンチをインストールするだけの場合、もう1つの価値あるオプションが考えられます。( を参照 )そして、「データベースからEERモデルを作成する」を試してください。テーブル間の関係を確実に確認できます。
データベースを使用するSELECTs
はありますか? それが関係の最良のソースである可能性があります。
information_scheme.KEY_COLUMN_USAGE
テーブル
推奨されるとおり、KEY_COLUMN_USAGEビューを使用してFK(外部キー参照)を一覧表示する簡単な方法があります。
SELECT CONCAT( table_name, '.',
column_name, ' -> ',
referenced_table_name, '.',
referenced_column_name ) AS list_of_fks
FROM information_schema.KEY_COLUMN_USAGE
WHERE REFERENCED_TABLE_SCHEMA = (your schema name here)
AND REFERENCED_TABLE_NAME is not null
ORDER BY TABLE_NAME, COLUMN_NAME;
Phpmyadminを使用している場合:
Mysqlワークベンチを使用することをお勧めします。 ER図を生成するためのオプションがあります。 phpmyadminを使用している場合は、任意のテーブルを選択します。テーブルの構造を確認できる構造タブがあります。うまくいけば、これは役立ちます。