Arrays

Kampfgummibaerlie

Datenbank-Guru
Beiträge
728
Nachdem ich mich heutzutage wieder Schüler nennen darf (HTL in Wien) und mir eine kleine Lern-Webseite bauen möchte, habe ich (rein privat) mit Arrays angefangen.

ich habe bisher folgende Tabellen:
Code:
create table fächer(id serial primary key, name text unique not null);
create table fragen(id serial primary key, frage text not null, fach integer references fächer(id));
create table antworten(id serial primary key, fach integer references fächer(id), antwort text not null);
create table antwort(frage integer references fragen(id), antworten integer[] not null);

als beispiel irgendein fach und eine frage einfügen:
Code:
insert into fächer(name) values ('Mathematik');
insert into fragen(frage, fach) values ('Was ist das Quadrat von 2?', (select id from fächer where lower(name) = lower('Mathematik')));

2 richtige Antworten einfügen:
Code:
insert into antworten(fach, antwort) values ((select id from fächer where lower(name) = lower('Mathematik')), '4');
insert into antworten(fach, antwort) values ((select id from fächer where lower(name) = lower('Mathematik')), 'Vier');

1 falsche Antwort einfügen:
Code:
insert into antworten(fach, antwort) values ((select id from fächer where lower(name) = lower('Mathematik')), 'Vierundblubber!');

die richtigen Antworten in die Tabelle "Antwort" einfügen:
Code:
insert into antwort(frage, antworten) values (1, '{1, 2}');

Jetzt die Antworten einzeln durchgehend (habe ich in PHP schon drauf ^^) überprüfen, ob man die richtigen gewählt hat:
Code:
select antworten @> '{1}' from antwort;

Ansonsten bin ich froh, dass ich mich dahintersetze :D
Schulisch, sowie Datenbanktechnisch ;)

mache heute (Abends) wohl wieder weiter ;)

gute Nacht :D

PS: Bin natürlich, wie immer, über Tipps sehr dankbar ;)
 
Werbung:
Du meinst wahrscheinlich JSON Arrays. (Nur Arrays gibt es auch.)
Dazu gibt es auch einen passenden Spalten Typ bzw. zwei, JSON und JSONB statt Text. JSONB ist neuer, binär, indizierbar.

Und mal so als Idee: Wieso fügst Du nicht alle Antworten (richtige, falsche) als JSON Array ein und gibst ein weiteres Array mit den Indizes der richtigen Antworten mit (ein einziger Datensatz)?
 
arbeite jetzt mit arrays, und ich denke, ich habe mein Werk vollendet :D

wenn mir fehler auffallen, hoffe ich, diese selbst lösen zu können.
wenn nicht, frage ich hier, oder wo es auch immer beantwortet werden könnte!

Habe inzwischen auch schon eine schöne Homepage gewürfelt, die 4 Antwortmöglichkeiten auswirft, wo keine, bis zu alle 4 richtig sein können.

Arbeite mit den klassischen Arrays, denke ich...

Darf ich fragen, was ein JSON Array ist, und was er für Vorteile bringen könnte?
Darf ich fragen, was ein JSONB Array ist, und was er für Vorteile bringen könnte?
 
Werbung:
Darf ich fragen, was ein JSON Array ist, und was er für Vorteile bringen könnte?
Darf ich fragen, was ein JSONB Array ist, und was er für Vorteile bringen könnte?

Na klar darfst Du fragen ;-)

Mal schauen, was die allwissende Wikipedia sagt:

Code:
Die JavaScript Object Notation (JSON [ˈdʒeɪsən]) ist ein kompaktes Datenformat in einer einfach lesbaren Textform für den Datenaustausch zwischen Anwendungen.

Und Google meint zu "JSON ARRAY": JSON Arrays


Bleibt noch der Unterschied JSON zu JSONB. PostgreSQL hatte zuerst als Datentyp JSON. Das war nix weiter als Text mit zusätzlicher Syntaxprüfung, daß es valides JSON ist. JSONB, das B steht für 'binär'. Es wird nicht mehr als Text gespeichert, sondern in einer binären Form. Hat den Vorteil, daß es somit auch über verschiedene Methoden indizierbar ist. Weitere Informationen findest Du hier: 8.14. JSON Types
 
Zurück
Oben