Non vorrei averti forviato con la storia delle liste. Tubla e enupla sono quasi la stessa cosa. Un enupla è una tupla di lungezza n.
il mio dubbio deriva di base dal fatto che almeno in un db relazionale la posizione di un elemento all'interno del record non dovrebbe essere irrilevante?
Tu sei liberissimo di creare una tabella specificando il tipo (e il nome) di ogni attributo nell'ordine che vuoi.
Ad esempio creando una tabella del genere
codice:
CREATE TABLE PERSONA
(
ID int PRIMARY KEY,
NOME varchar2(200),
ETA int
)
stai dicendo che ogni record di PERSONA avrà come tipo una tupla di tipo (Int, Varchar2, Int).
Hai quindi definito un ordinamento sul tipo dei vari attributi.
Questo vuol dire che per fare un inserimento dovrai per forza rispettare l'ordinamento che hai imposto durante la creazione della tabella.
Un inserimento del genere sarà quindi corretto:
codice:
INSERT INTO PERSONA VALUES (1, "Pippo", 30)
mentre ibvece uno del genere:
codice:
INSERT INTO PERSONA VALUES ("Pippo", 30, 1)
sarà sbagliato proprio perchè non hai rispettato l'ordinamento dei tipi dei valori che stai inserendo.
Ora, il concetto di ordinamento di una tupla si basa soltanto sul tipo degli attributi e non sul significato che i valori possono assumere.
Inserire record come (1000, "Pippo", 1) e (1, "Pippo", 1000) è corretto, in quanto entrambe le tuple rispettano il tipo di PERSONA, ma semanticamente sono cose completamente diverse. Queste sono questioni che riguardano la persona che tratta i dati.
C'è però una cosa da specificare, a livello fisico l'ordinamento vale sempre e comunque, indipendentemente dal tipo di file che contiene una relazione.
A livello logico invece esistono modi per aggirare apparentemente questo ordinamento. Questo è possibile grazie al fatto che durante la creazione di una tabella viene specificato non solo il tipo di un attributo ma anche un etichetta associata, ovvero il nome (id, nome, età, ..).
È dunque possibile inserire una tupla non ordinata a patto che si specifichi anche una tupla di etichette/nomi, ordinata rispetto all'ordine dei valori passati, in modo che il DBMS sia in grado di ricreare l'ordinamento originale.
Ad esempio la seguente query è corretta
codice:
INSERT INTO PERSONA (NOME, ETA, ID) -- (ordinamento diverso rispetto quello originale)
VALUES ("Pippo", 30, 1)