Ne, ukládání FK do pole není nikdy dobrý nápad pro obecné tabulky. Především je zde skutečnost, kterou jste mimochodem zmínili:Omezení cizího klíče pro prvky pole nejsou implementována (zatím). To samo o sobě by mělo tento nápad zrušit.
Došlo k pokusu o implementaci funkce pro Postgres 9.3, který byl zastaven vážnými problémy s výkonem. Viz toto vlákno o pgsql-hackers.
I když lze výkon při čtení polem pro určité případy použití zlepšit, výkon zápisu prudce klesá. Myslete na to:Chcete-li vložit, aktualizovat nebo odstranit jeden prvek z dlouhého pole, musíte nyní napsat novou verzi řádku s celým polem pro každý změněný prvek. A také před sebou vidím vážný spor o zámek.
Pokud je vaše tabulka pouze pro čtení , myšlenka začíná dávat větší smysl. Ale pak bych zvážil materializovaný pohled s denormalizovanými poli nahoře normalizované implementace many-to-many:
MV může zahrnout všechny spojovací tabulky a vytvořit jednu plochou tabulku pro ještě lepší výkon čtení (pro typické případy použití). Tímto způsobem získáte referenční integritu a dobrý výkon při čtení (a zápisu) – za cenu režie a dodatečného úložiště pro správu MV.