我有几十张桌子。如:
users (id BIGSERIAL, user_name TEXT, email TEXT);
orgs (id BIGSERIAL, org_name TEXT);
org_users(id BIGSERIAL, org_id references orgs(id), user_id references users(id));
another_table(id BIGSERIAL, org_user_id references org_users(id));
yet_another_table(...);
其中users
和orgs
是顶级表,而每个其他表都具有到这两个表中一个或两个的外键依赖性。
现在给定org_id
或user_id
,我想提取所有依赖于org_id
或user_id
的记录。
例如,如果数据为:
users
=====
1, One, one@example1.com
2, Two, two@example1.com
3, Three, three@example2.com
4, Four, four@example2.com
5, Five, five@example2.com
orgs
====
1, example1
2, example2
org_users
========
1, 1, 1
2, 1, 2
3, 2, 3
4, 2, 4
5, 2, 5
现在,如果我给get all data for user_id 1
,那么我应该得到:
users
=====
1, One, one@example1.com
orgs
====
1, example1
org_users
========
1, 1, 1
类似地,如果我给get all data for org_id 1
,我应该得到:
users
=====
1, One, one@example1.com
2, Two, two@example1.com
orgs
====
1, example1
org_users
========
1, 1, 1
2, 1, 2
我正在尝试查找是否有任何标准方法来提取记录,以分析性地/递归地分析外键依赖性。可以安全地假设我在postgresql数据库中拥有所有表名的列表,并且没有跨数据库甚至跨模式的依赖关系。