Lists all foreign key columns and their relation with the parent tables.
CREATE OR REPLACE VIEW scrud.relationship_view
AS
SELECT o.conname AS constraint_name,
( SELECT pg_namespace.nspname
FROM pg_namespace
WHERE pg_namespace.oid = m.relnamespace) AS table_schema,
m.relname AS table_name,
( SELECT a.attname
FROM pg_attribute a
WHERE a.attrelid = m.oid AND a.attnum = o.conkey[1] AND a.attisdropped = false) AS column_name,
( SELECT pg_namespace.nspname
FROM pg_namespace
WHERE pg_namespace.oid = f.relnamespace) AS references_schema,
f.relname AS references_table,
( SELECT a.attname
FROM pg_attribute a
WHERE a.attrelid = f.oid AND a.attnum = o.confkey[1] AND a.attisdropped = false) AS references_field
FROM pg_constraint o
LEFT JOIN pg_class c ON c.oid = o.conrelid
LEFT JOIN pg_class f ON f.oid = o.confrelid
LEFT JOIN pg_class m ON m.oid = o.conrelid
WHERE o.contype = 'f'::"char" AND (o.conrelid IN ( SELECT c_1.oid
FROM pg_class c_1
WHERE c_1.relkind = 'r'::"char"));