Ergebnis 1 bis 7 von 7

Thema: Daten mit physikalischen Einheiten ablegen

  1. #1
    schibmar ist offline Neuer Benutzer
    Registriert seit
    29.04.2011
    Beiträge
    6

    Standard Daten mit physikalischen Einheiten ablegen

    Hallo

    Ich habe in meiner Datenbank vor allem Grössen mit physikalischen Einheiten. Also z.B. Fläche: 50 m2, Energieverbrauch: 600000 kWh.

    Dabei will ich in meinem Anwenderprogramm sowohl auf die Zahl als auch auf die Einheit zugreifen können. Die Einzelnen Datensätze eines Attributs haben immer die gleiche Einheit. Es soll aber in der Datenbank hinterlegt sein, welche Einheit dies ist.

    Dazu habe ich mir ein paar Lösungsmöglichkeiten überlegt.

    Variante 1: Die Einheit jeweils in den Attributnamen integrieren. Zb. „Fläche [m2]“
    Das Problem wird so auf die Anwendung übertragen, und kann dort eigentlich relativ einfach gelöst werden, indem die Einheit aus dem Attributnamen gefiltert wird. Ist aber unschön, da es nicht in der Datenbank gelöst wird und die Attributnamen kompliziert werden.

    Variante 2: Für jede Tabelle eine dazugehörige Tabelle erzeugen, in welcher die Attribute und deren Einheiten aufgelistet sind. Gibt recht viele Tabellen dafür ist das Problem in der Datenbank gelöst.

    Es gibt wahrscheinlich noch viele andere Möglichkeiten. Mich würde interessieren was sich so bewährt hat bzw. was ihr mir empfehlen würdet.
    Oder gibt es sogar eine Möglichkeit in einer Tabelle zusätzlich zum Attributnamen eine Einheit zu hinterlegen?

    Gruss
    Martin

  2. #2
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.055

    Standard

    Ich würde mir genau eine Tabelle anlegen, in der die Einheiten gespeichert sind. Und zwar die Grundeinheiten.
    In der Datentabelle liegt dann bloß der Wert, eine zweite Spalte ist ein Pointer (Foreign Key) auf die Einheitentabelle.
    Ggf. musst du NUMERIC für die Werte verwenden, um eine ausreichend hohe Genauigkeit zu erreichen.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  3. #3
    Gisman ist offline Erfahrener Benutzer
    Registriert seit
    20.01.2006
    Ort
    Pfalz
    Beiträge
    790

    Standard

    Ich habe schon öfters das gleiche Problem gehabt und löse es in der Regel wie ads es beschrieben hat. Als Sahnestückchen kannst du die Einheiten-Tabelle mit sich selbst m:n verknüpfen, dann könntest du noch einen Faktor zur Umrechnung von Einheiten mitführen.
    Grüße Uwe
    Have a lot of fun!

  4. #4
    schibmar ist offline Neuer Benutzer
    Registriert seit
    29.04.2011
    Beiträge
    6

    Standard

    Wenn ich das richtig verstanden habe, dann ergibt das in der Tabelle zwei Spalten pro gespeicherte Grösse. Eine Spalte für den Zahlenwert und eine Spalte für die Einheit (als Foreignkey auf die Einheitentabelle).
    Da ich aber pro Spalte nur eine Einheit habe, würde mir das also einfach eine zusätzliche Spalte, in der überall der gleiche Foreign-Key steht, ergeben.
    Aber ja, wenn das erfahrungsgemäss am sinnvollsten ist, werde ich es wohl so machen.

    Danke für die Antworten!

  5. #5
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.465

    Standard

    Zitat Zitat von schibmar Beitrag anzeigen
    Wenn ich das richtig verstanden habe, dann ergibt das in der Tabelle zwei Spalten pro gespeicherte Grösse. Eine Spalte für den Zahlenwert und eine Spalte für die Einheit (als Foreignkey auf die Einheitentabelle).
    Da ich aber pro Spalte nur eine Einheit habe, würde mir das also einfach eine zusätzliche Spalte, in der überall der gleiche Foreign-Key steht, ergeben.
    Aber ja, wenn das erfahrungsgemäss am sinnvollsten ist, werde ich es wohl so machen.

    Danke für die Antworten!
    Man könnte auch einen eigenen Datentyp dafür schaffen. Nur mal so als grobe Idee ...
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  6. #6
    schibmar ist offline Neuer Benutzer
    Registriert seit
    29.04.2011
    Beiträge
    6

    Standard

    Das gefällt mir schon besser. Ich nehme an du meinst die composite types : PostgreSQL: Documentation: Manuals: PostgreSQL 8.4: Composite Types

    CREATE TYPE zahlmitEinheit AS (
    wert numeric(10,2),
    einheit varchar(10)
    );

    CREATE TYPE prozentzahl AS (
    wert numeric(3,2) ,
    einheit varchar(2)
    );

    Das probiere ich mal aus. Man könnte das wahrscheinlich auch mit dem ersten Vorschlag von einer Einheitentabelle kombinieren, und anstatt die Einheit als Text mittels Foreignkey hinterlegen.

  7. #7
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.465

    Standard

    Zitat Zitat von schibmar Beitrag anzeigen
    Das gefällt mir schon besser. Ich nehme an du meinst die composite types : PostgreSQL: Documentation: Manuals: PostgreSQL 8.4: Composite Types

    CREATE TYPE zahlmitEinheit AS (
    wert numeric(10,2),
    einheit varchar(10)
    );

    CREATE TYPE prozentzahl AS (
    wert numeric(3,2) ,
    einheit varchar(2)
    );

    Das probiere ich mal aus. Man könnte das wahrscheinlich auch mit dem ersten Vorschlag von einer Einheitentabelle kombinieren, und anstatt die Einheit als Text mittels Foreignkey hinterlegen.
    Ja, so in etwa. Und als Bonus noch passende Funktionen dafür ...


    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

Ähnliche Themen

  1. Daten verschlüsselt ablegen
    Von paule im Forum Allgemeines
    Antworten: 9
    Letzter Beitrag: 31.07.2010, 16:18
  2. Daten importieren
    Von nixdorf im Forum Allgemeines
    Antworten: 1
    Letzter Beitrag: 21.07.2008, 14:05
  3. Indices gruppiert ablegen
    Von christianbraun im Forum Allgemeines
    Antworten: 3
    Letzter Beitrag: 08.04.2008, 10:20
  4. Select From .. Where .. In( [daten]
    Von Phil im Forum SQL
    Antworten: 2
    Letzter Beitrag: 12.12.2007, 13:10
  5. Dateien in Datenbank ablegen
    Von mmueller im Forum Allgemeines
    Antworten: 3
    Letzter Beitrag: 04.01.2006, 14:34

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum