首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何了解表之间的关系

如何了解表之间的关系
EN

Stack Overflow用户
提问于 2016-02-15 20:00:48
回答 4查看 17.4K关注 0票数 23

我有一个由某人在MySQL中创建的数据库。我没有数据库的任何文档。

如何知道表之间的关系?

是否有任何查询或过程来生成报告,以便很容易地找到关系?

我可以查看Schema信息并手动找出它,但如果我能生成关系报告就太好了。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-02-15 20:12:00

从编程的角度讲,更好的方法是从INFORMATION_SCHEMA.KEY_COLUMN_USAGE表中收集数据,如下所示:

代码语言:javascript
复制
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

另一个是

代码语言:javascript
复制
select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS;
票数 16
EN

Stack Overflow用户

发布于 2016-03-11 20:06:51

一个更有价值的选择可能是,如果你只安装了mysql workbench( refers to)并尝试"Create EER model from database“,.You肯定能够看到表之间的关系。

票数 5
EN

Stack Overflow用户

发布于 2016-02-15 20:09:59

你可以看看information_scheme.KEY_COLUMN_USAGE table

按照建议,使用KEY_COLUMN_USAGE视图可以快速列出FK(外键引用):

代码语言:javascript
复制
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;
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35408854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档