Как узнать отношения между таблицами
У меня есть база данных в MySQL, созданная кем-то. У меня нет документации по базе данных.
Как узнать связь между таблицами?
Есть ли какой-либо запрос или процедура для создания отчета, чтобы было легко найти отношения?
Я могу просмотреть информацию о Схеме и вручную вычислить ее, но было бы здорово, если бы я смог создать отчет о взаимоотношениях.
Ответы
Ответ 1
Лучший способ, как программно говоря, собирать данные из таблицы 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;
Ответ 2
Вы можете получить обзор в MySql Workbench, выполнив следующие шаги:
- Перейдите в пункт меню "База данных".
- Выберите опцию "Обратный инженер".
- Мастер откроется и будет генерировать диаграмму EER, отображающую
Ответ 3
Попробуйте SchemaSpy (http://schemaspy.sourceforge.net/):
SchemaSpy - это инструмент на основе Java (требуется Java 5 или выше), который анализирует метаданные схемы в базе данных и генерирует визуальное представление ее в отображаемом браузере формате.
Вот скриншот страницы HTML сэмпла из http://schemaspy.sourceforge.net/sample/:
![Снимок экрана с HTML-страницы образца, полученного из http://schemaspy.sourceforge.net/образец/]()
Также есть приятный графический интерфейс, если вы не хотите использовать командную строку:
http://schemaspygui.sourceforge.net/
Оба инструмента имеют открытый исходный код и, на мой взгляд, очень легкий и простой в использовании. Я использовал их несколько раз, когда был в ситуациях, которые вы описали: Чтобы получить обзор схемы и даже некоторые детали, чтобы погрузиться глубже. (Взгляните на отчет "Аномалии".)
Update
Обязательно проверьте готовую версию SchemaSpy на http://schemaspy.org
Ответ 4
У вас есть SELECTs
, который использует базу данных? Это может быть лучшим источником отношений.
Ответ 5
Еще один ценный вариант может быть, если вы просто установите mysql workbench. (относится к)
И попробуйте "Создать модели EER из базы данных". Вы наверняка сможете видеть отношения между таблицами.
Ответ 6
Вы можете посмотреть information_scheme.KEY_COLUMN_USAGE
table
Как предлагается быстрый способ перечислить ваши FK (ссылки внешнего ключа) с помощью представления KEY_COLUMN_USAGE:
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;
Ответ 7
Если вы используете phpmyadmin, тогда:
- Перейти к базе данных.
- Выберите таблицу и перейдите к ее структуре.
- Вы найдете вид отношений в нижней части структуры таблицы.
Ответ 8
Лучше использовать Mysql workbench. Существует опция для генерации диаграммы ER. Если вы используете phpmyadmin, выберите любую таблицу. Существует вкладка структуры, из которой вы можете видеть структуру таблицы. Надеюсь, это поможет.