一开始我想指出我不是,我从来不是数据库管理员。我有关于PL/SQL
和SQL
的经验和知识,但到目前为止我接触到的每个数据库最多有50个表,即使我手工制作,查找实体之间的关系也不是那么难。 br />
问题现在出现了,当我得到database
超过300个表时,发现实体之间的关系并不容易。
设想表:
table person (
id serial PRIMARY KEY NOT NULL,
name varchar(45)
)
并自动生成序列:
person_id_seq
是否可以告诉我是否有任何命令可以返回使用person_id_seq
的表格?
答案 0 :(得分:4)
pg_depend
是完全合理的,也是一种理智的方式。
我强烈建议您尝试使用SchemaSpy之类的工具来生成数据库映射和可视化。它会有很大的帮助,让你有机会了解这些关系,而不仅仅是逐一探索它们。
如果您需要使查询可移植,那么您可以使用information_schema
而不是PostgreSQL特定的目录表。 This query可以生成一个可移植的外键关系列表 - 该查询是为MS SQL Server编写的,但在PostgreSQL上可以正常使用。
答案 1 :(得分:3)
请参阅pg_depend。
select *, pg_describe_object(classid, objid, objsubid)
from pg_depend
where refobjid = 'person_id_seq'::regclass