Docela dlouho jsem si s podobným chápáním relace vystačil. Nejspíš záleželo, kde a s čím člověk začal. Za mě (na výšce) se dělalo vše (včetně výuky) ve Foxce, o SQL bohužel neměl nikdo páru :(. Na druhou stranu, alespoň pro mne nematematika, je relace coby vazba dvou tabulek více-méně jeden speciální případ obecnější matematické definice – beru-li ovšem jako relaci výsledný produkt spojení tabulek, nikoliv samotnou vazbu.
ok – znam databazi, kde datovy typ relace predstavoval pole ukazatelu.
Jinak k Vasi puvodni otazce – pole muze obsahovat krome skalarnich hodnot, take kompozitni hodnoty – tudiz lze prevest tabulku do jedne hodnoty.
postgres=# create table f(a int, b int, c int); CREATE TABL postgres=# create table ff(v f[]); CREATE TABLE postgres=# insert into f values(10,20,30),(40,50,60); INSERT 0 2 postgres=# insert into ff select array(select row(a,b,c)::f from f); INSERT 0 1 postgres=# select * from ff; v ----------------------------- {"(10,20,30)","(40,50,60)"} (1 row) postgres=# select unnest(v) from ff; unnest ------------ (10,20,30) (40,50,60) (2 rows) postgres=# select (unnest(v)).* from ff; a | b | c ----+----+---- 10 | 20 | 30 40 | 50 | 60 (2 rows)