Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Array of Integer in MySql (https://www.delphipraxis.net/178946-array-integer-mysql.html)

DelTurbo 5. Feb 2014 10:33

Datenbank: MySql • Version: 5.x • Zugriff über: MyDac

Array of Integer in MySql
 
Hi,
geht das überhaupt? Ich habe mehrere IDs von Datensätzen die einem User zugeordnet sind. Im moment habe ich das als String mit , getrennt in der Datenbank.

Nun dachte ich, wenn man das als Interger Array in die MySql bekommt, ist das bestimmt eleganter und man könnte dann auch in diesem Array suchen ob eine ID enthalten ist.

Allerdings google ich schon seit einiger zeit, und find nix gescheites.

Nun zu den Fragen.
Geht das überhaupt was ich vorhabe?
Wenn ja, wie legt man das Array an? CREATE TABLE test (??)?
Wie frage ich ab, ob in diesem Array z.b. der wert 10 enthalten ist? SELECT * FROM test WHERE Feld=??????
Wie lese ich das Array ein? Weil ein FieldByName('Feld').AsArray gibt es ja nicht.

Vielen dank im voraus

Der schöne Günther 5. Feb 2014 10:39

AW: Array of Integer in MySql
 
Ich verstehe nicht (wie immer).

Das läuft doch dem Konzept einer relationalen DB vollkommen zuwider. Du hast doch eine 1:n-Kardinalität von User: Datensätze. Dann braucht deine Datensätze-Tabelle doch nur einen Fremdschlüssel auf den Primärschlüssel deiner User-Tabelle.

Hast du weitere Einschränkungen, wie dass zu jedem Nutzer mindestens ein Datensatz existieren muss?

Aber entweder stehe ich auf dem Schlauch, oder das mit Arrays und dann versuchen irgendwie zu parsen ist ein wirklich ungünstiger Ansatz.

DelTurbo 5. Feb 2014 10:53

AW: Array of Integer in MySql
 
Hmmm, also mal ein beispiel.

Ich habe 10.000 Artikel und 20 Hauptgruppen. Jeder Artikel kann mehr als eine der vorhanden Hauptgruppen zugehören.

z.b.
Artikel 1 gehöhrt zu gruppe 1,7,12,19
Artikel 2 gehöhrt zu gruppe 1,2

Diese zugehörigkeit steht natürlich im Artikel drin. Im moment wie gesagt als String mit Komma getrennt.

Mir ist keine SQL-Abfrage bekannt, wo ich nun sagen kann, zeige mir alle Artikel die in gruppe 3 sind.

baumina 5. Feb 2014 10:59

AW: Array of Integer in MySql
 
Deine Tabellen sollten in diesem Fall folgendermaßen angelegt werden:

1. Tabelle Artikel (ArtID, ...)
2. Tabelle Hauptgruppen (GrpID, Gurppenname, ...)
3. Tabelle Zuordnung ArtGrp (ZuOrdID, ArtID, GrpID)

DeddyH 5. Feb 2014 11:04

AW: Array of Integer in MySql
 
n:m-Beziehung

DelTurbo 5. Feb 2014 11:11

AW: Array of Integer in MySql
 
Zitat:

Zitat von baumina (Beitrag 1246752)
Deine Tabellen sollten in diesem Fall folgendermaßen angelegt werden:

1. Tabelle Artikel (ArtID, ...)
2. Tabelle Hauptgruppen (GrpID, Gurppenname, ...)
3. Tabelle Zuordnung ArtGrp (ZuOrdID, ArtID, GrpID)

Die 3. Tabelle wollte ich mir einfach sparen. Hätte ja auch geklappt wenn man ein Feld als Array of Integer hätte. Aber anscheinden komme ich laut euch beiden nicht um die 3. Tabelle drumherum. Schade eigentlich.

Trotzdem vielen dank für eure Hilfe.

Sherlock 5. Feb 2014 11:20

AW: Array of Integer in MySql
 
http://de.wikipedia.org/wiki/Normali...form_.281NF.29

Das mit der Normalisierung ist in der Praxis immer wieder mal ein heikles Thema, aber die erste Normalform sollte bitte immer drin sein.

Sherlock

Jumpy 5. Feb 2014 12:01

AW: Array of Integer in MySql
 
Zitat:

Zitat von DelTurbo (Beitrag 1246750)
Hmmm, also mal ein beispiel.

Ich habe 10.000 Artikel und 20 Hauptgruppen. Jeder Artikel kann mehr als eine der vorhanden Hauptgruppen zugehören.

z.b.
Artikel 1 gehöhrt zu gruppe 1,7,12,19
Artikel 2 gehöhrt zu gruppe 1,2

Diese zugehörigkeit steht natürlich im Artikel drin. Im moment wie gesagt als String mit Komma getrennt.

Mir ist keine SQL-Abfrage bekannt, wo ich nun sagen kann, zeige mir alle Artikel die in gruppe 3 sind.

Das ist natürlich nur die Fortführung des Mumpitzes, aber das ginge via

...
where gruppe like '%,3,%' or gruppe like '3,%' or gruppe like '%,3' or gruppe='3'

gravedigger 5. Feb 2014 13:33

AW: Array of Integer in MySql
 
Um es noch weiter zu treiben geht auch ein

...
where find_in_set(id, gruppe)


Gruß aus den sonnigen Dortmund

Frank Graeber

Sherlock 5. Feb 2014 14:11

AW: Array of Integer in MySql
 
Klartext: Das geht, und es wurden ja schon Vorschläge gebracht, aber da sich Deine Fragestellung doch sehr noch nach "Planung" oder "früher Entwicklung" anhört:
MACH DAS BITTE NICHT!
Du bringst Dich dadurch unnötig in Teufels :evil: Küche. Nur weil etwas geht, macht man es ja trotzdem nicht. Immerhin verwendest Du ja MySQL und nicht eine Textdatei zum speichern Deiner Daten, und das wäre auch möglich.

Normalisier Deine Tabellen soweit es geht. Dritte Normalform sollte noch drin sein, die erste ist IMHO Pflicht.

Sherlock


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:19 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz