Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Baumstruktur und Tabellen

Dieses Thema im Forum "Datenmodellierung, Datenbank-Design" wurde erstellt von LisaDuPoun, 21 September 2015.

  1. LisaDuPoun

    LisaDuPoun Benutzer

    Hallo,

    sorry, ich hoffe, dass meine Frage hier richtig ist. Ich bin nämlich ein Newbie und möchte mich entschuldigen, falls ich da in einem falschen Thread was schreib.

    Ich beschäftige mich gerade mit Datenbanken und so. Dabei wollte ich so ein Kleid in einer Tabelle abbilden, doch weiß nicht, ob es richtig ist, nämlich:

    .) 1.Beispiel:
    Kleid
    | | |
    Grün Rot Blau
    | | |
    S S S
    M M M
    L L L

    müsste es in einer Tabelle so aussehen?:

    + Tabelle Kleid:
    Kleid|Attribut1|Attribut2

    + Tabelle Farbe Grün:
    Grün|S|M|L
    + Tabelle Farbe Rot:
    Rot|S|M|L
    + Tabelle Farbe Blau:
    Blau|S|M|L

    .) 2.Beispiel:
    Kleid
    | | |
    Grün S Rot S Blau S
    Grün M Rot M Blau M
    Grün L Rot L Blau L

    müsste es nun in einer Tabelle so aussehen?:

    + Tabelle Kleid:
    Kleid|Farbe|Größe
    Sonnenuntergang|Grün|S
    Sonnenuntergang|Grün|M
    Sonnenuntergang|Grün|L
    Sonnenuntergang|Rot|S
    Sonnenuntergang|Rot|M
    Sonnenuntergang|Rot|L
    Sonnenuntergang|Blau|S
    Sonnenuntergang|Blau|M
    Sonnenuntergang|Blau|L

    Vielen Dank im Voraus für Eure Gedult und Unterstützung :oops:
    Liebe Grüße
     
  2. akretschmer

    akretschmer Datenbank-Guru

    So ganz klar ist nicht, was Du willst. Vielleicht alle möglichen Kombinationen von Ware, Farbe und Größe?

    Code:
    test=*# select * from farben ;
     id | farbe
    ----+-------
      1 | rot
      2 | grün
      3 | blau
    (3 rows)
    
    Time: 0,286 ms
    test=*# select * from groessen ;
     id | groesse
    ----+---------
      1 | S
      2 | M
      3 | L
    (3 rows)
    
    Time: 0,285 ms
    test=*# select w.name, f.farbe, g.groesse from ware w cross join farben f cross join groessen g;
     name  | farbe | groesse
    -------+-------+---------
     kleid | rot  | S
     kleid | rot  | M
     kleid | rot  | L
     kleid | grün  | S
     kleid | grün  | M
     kleid | grün  | L
     kleid | blau  | S
     kleid | blau  | M
     kleid | blau  | L
    (9 rows)
    
     
  3. LisaDuPoun

    LisaDuPoun Benutzer

    Hallo,

    Danke für deine Antwort.

    Ich möchte diese Baumstrukturen in eine Tabelle bringen.

    Ist das Beispiel von dir für das 1.Baum-Beispiel oder doch das 2.te?
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Ich sehe keine Baumstrukturen. Möglicherweise haben die sich sehr gut versteckt. Zeigst Du mir sie?
     
  5. LisaDuPoun

    LisaDuPoun Benutzer

    Hallo,

    sorry, dass ich erst jetzt zurückschreibe, aber ich war die ganze Zeit in der Schule.

    Meine 2 Beispiele sollten die Baumstruktur wiedergeben, aber mit der Darstellung hat es wohl nicht ganz funktioniert...

    .) 1.Baum-Beispiel:
    Kleid
    | | |
    Grün Rot Blau
    | | |
    S S S
    M M M
    L L L

    NB: Das Kleid gibs in Grün, Rot und Blau, wobei diese Farben wiederum in den Größen S, M und L existieren.

    und

    .) 2.Baum-Beispiel:
    Kleid
    | | |
    Grün S Rot S Blau S
    Grün M Rot M Blau M
    Grün L Rot L Blau L

    NB: Jetzt ist es so, dass das Kleid nur noch in Grün S, Grün M, Grün L, Rot S, Rot M, Rot L, usw. unterteilt wird, sprich es gibt keine "Zwischenebene" mit den Farben, sondern es wird direkt in Farb und Größe unterteilt.

    Wie immer vielen Dank im Voraus für deine Hilfe.
    Liebe Grüße
     
  6. akretschmer

    akretschmer Datenbank-Guru

    Ich sehe zwischen 1 und 2 eigentlich nur einen Unterschied: bei 2 steckst Du 2 Eigenschaften zusammen, Farbe und Größe. Dein eigentliches Problem/Frage versteh ich noch immer nicht. Mit 2 kannst Du aber schlecht suchen, zumindest, wenn in der tatsächlichen Speicherung das dann z.B. als Text erfolgt. Natürlich gibt es auch Dinge wiein PG mit JSONB, die das sauber (im Sinne von sinnvoll durchsuchbar) abbilden könnten.
     
  7. LisaDuPoun

    LisaDuPoun Benutzer

    Hallo,

    meine Frage ist, wie ich diese zwei unterschiedliche Baumstrukturen in jeweils eine Tabelle abbilden kann. Wenn ich es mir tabellarisch aufzeigen möchte.

    Da hab ich überhaupt nicht die Kenntnisse als Newbie/Schülerin.

    Aber muss beim 2.Beispiel diese wirklich in Text abgebildet werden? Oder kann ich es nicht auch als eine Art "Kombi" machen?

    PS: Was ist PG und JSONB?

    Danke im Voraus.
    Liebe Grüße
     
  8. LisaDuPoun

    LisaDuPoun Benutzer

    Achja, gibt es gute empfehlenswerte (deutschsprachige) Bücher für sowas (Datenbanken, etc.)? Oder welche Themen wären noch relevant, wenn ich mich damit weiterbeschäftigen möchte?

    Aber bitte nur Bücher, welche wirklich gut für Newbies/Schülerinnen sind. Vielen Dank.

    Ich interessiere mich sehr für soetwas, aber ich tue mir extrem schwer damit. Möchte es aber verstehennn... :p

    Liebe Grüße
     
  9. akretschmer

    akretschmer Datenbank-Guru

    PG steht für PostgreSQL, JSONB ist ein Datentyp. Es gibt JSON als mittlerweile weit verbreitetetn Datentyp in der Web-Welt (Java Script Object Notation), was aber so erst einmal Text ist und schwer durchsuchbar. PostgreSQL kann solchen Text intern binär speichern und indexbasiert durchsuchen, das B in JSONB steht also für binär.

    Nun beobachten wir das mal im Streichelzoo:

    Code:
    test=*# create table kleider(id int primary key, name text, eigenschaften jsonb);
    CREATE TABLE
    Time: 8,335 ms
    test=*# insert into kleider values (1, 'Kleid 1', '{"Farbe":"rot", "Größe":"M"}');
    INSERT 0 1
    Time: 0,431 ms
    test=*# insert into kleider values (2, 'Kleid 2', '{"Farbe":"blau", "Größe":"L"}');
    INSERT 0 1
    Time: 0,177 ms
    test=*# create index kleider_farbe on kleider  ((eigenschaften ->> 'Farbe'));
    CREATE INDEX
    Time: 4,095 ms
    test=*# set enable_seqscan to off;
    SET
    Time: 0,044 ms
    test=*# explain select * from kleider where eigenschaften->>'Farbe' = 'rot';
      QUERY PLAN
    ------------------------------------------------------------------------------
     Index Scan using kleider_farbe on kleider  (cost=0.13..8.14 rows=1 width=68)
      Index Cond: ((eigenschaften ->> 'Farbe'::text) = 'rot'::text)
    (2 rows)
    
    Time: 0,472 ms
    
    
    Du kannst also bei den Eigenschaften beliebige Felder definieren und auf Felder Deiner Wahl einen Index legen. Suchst Du nun Datensätze, die im Eigenschaften-Feld, welches JSONB ist, das Merkmal Farbe mit dem Wert rot haben kannst Du das Indexbasiert - und damit schnell - finden.
     
  10. LisaDuPoun

    LisaDuPoun Benutzer

    Hallo,

    bin das Wochenende bei meiner Oma am Land gewesen. Und jetzt nach meinen Hausübungen hab ich wieder ein bisschen Zeit für meine Datenbankthemen ;)

    Vielen Dank für deine Hilfen!

    Nur leider glaube ich brauch ich da noch mehr Inputs. Ich versteh bis jetzt nur Bahnhof :oops:

    Kennst du vielleicht gute und leicht verständliche (deutschsprachige) Bücher, etc. bezüglich Datenbanken und Co.? Wenn es englischsprachig sind auch okay, solange diese verständlich sind. Aber auf Deutsch ist es mir doch lieber.

    Also wenn du mir diesbezüglich noch ein paar Tipps geben könntest?

    Danke wie immer im Voraus!
    Liebe Grüße
     
    Zuletzt bearbeitet: 28 September 2015
  11. Distrilec

    Distrilec Datenbank-Guru

    @akretschmer So sehr du deine JSON auch magst... Die ist hier leider fehl am Platz...
    Vllt. erstmal die Grundlagen von relationalen Datenmodellen vermitteln, bevor man mit höheren Datentypen anfängt, die das ganze wieder total durcheinander werfen :)
     
  12. akretschmer

    akretschmer Datenbank-Guru

    @Distrilec depends: um z.B. verschiedene Artikel in einem Shop abzubilden, die alle unterschiedliche Eigenschaften haben, bist Du mit der 'reinen Lehre' recht schnell von einer Reihe von Problemen umgeben. Aber ich geb Dir Recht: man sollte in der Tat erst einmal das Grundkonzept verstanden haben.
     
  13. akretschmer

    akretschmer Datenbank-Guru

    Du könntest Dich zur deutschen PostgreSQL - Konferenz im November in Hamburg anmelden. Da gibt es viele Vorträge, überwiegend in deutsch.
     
  14. LisaDuPoun

    LisaDuPoun Benutzer

    Hallo,

    danke :)

    Aber wäre diese Konferenz nicht auch schon zu hoch für eine wie mich (eine Newbie)?

    Anscheinend gibt es keine Bücher, die geeignet sind für Newbies? :(

    Ich will die Hoffnung aber noch nicht aufgeben. Die Hoffnung stirbt doch zuletzt. :oops:
     
  15. akretschmer

    akretschmer Datenbank-Guru

    Steile Lernkurve? Was ist daran schlimm? ;-)

    Ich hab das vorhin schon woanders hier gesagt: einfach machen. Einfach versuchen, sich in anderer Leute Probleme reinzudenken.

    Ich hab füher z.B. gern auf Varlena, LLC | PostgreSQL General Bits Newsletter geschmöckert, leider hat Elain keine Lust mehr, das weiterzubetreiben (auch auf mehrfache Bitte hin nicht ...), aber es gibt genug Ressourcen im großen Internet, wo man sich austoben kann. U.a. hier in diesem Forum.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden