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)