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

Tabellen mit verschiedenden Untertabellen / Dynamic SQL

Dieses Thema im Forum "Datenmodellierung, Datenbank-Design" wurde erstellt von andrerink, 23 Januar 2013.

  1. andrerink

    andrerink Neuer Benutzer

    Folgendes Problem:

    Ich habe eine Tabelle mit Endgeräten. Dort steht die Lieferscheinnummer, die Artikelnummer sowie eine Spalte Eigenschaft drin. Diese Spalte hat einen Wert der besagt was das für ein Endgerät ist.
    (Telefon, PC etc..). Da jedes dieser Endgeräte unterschiedliche Merkmale hat(Mac adresse, gehäuse etc.) habe ich für die jeweiligen Endgerätetypen eigene Tabellen erstellt damit ich innerhalb der
    Endgerätetabelle keine Redundanzen habe.

    Innerhalb der Spalte EIgenschaft steht dann z.B "PC". Meine Tabelle heißt dann auch "PC". Jetzt will ich dazu auch die passenden Abfragen bauen(z.B. mit dynamischen SQL).

    Meine Frage ist aber nun ob das eigentlich der richtige Weg ist, oder ob es eine andere Lösung für das Problem gibt. Oder sollte ich doch die Eigenschaften mit in die ENdgerätetabelle schreiben auch
    wenn da ggf. Spalten leer bleiben weil ich für z.B. ein Telefon nicht alle Eigenschaften ausfülle?

    Derzeit teste ich das ganze auf einem SQL Server 2008R2
     
  2. ukulele

    ukulele Datenbank-Guru

    Der Ansatz als solches ist schon okay wenn es sich um eine überschaubare Menge von Gerätetypen handelt. Natürlich kann das aber auch schon innerhalb der Gerätetypen zu stark unterscheidlichen Konfigurationen kommen. Wenn du z.B. einen Server mit 16 HDDs in einem Datensatz der Tabelle PC abbilden willst und zu jeder HDD Informationen erfasst.

    Ich habe in mehreren Threads schon auf diese alternative Vorgehensweise verwiesen: http://www.datenbankforum.com/threads/guid-über-mehere-tabellen.796/ und möchte sie hier nicht unerwähnt lassen. Probleme kannst du aber mit beiden Vorgehensweisen bekommen.

    Dazu muss ich sagen das ich es innerhalb eines SQL Scripts noch nicht geschafft habe, einen Spaltenwert an anderer Stelle zu einem Spaltennamen werden zu lassen. Das geht scheinbar tatsächlich nur über dynamische SQL Statements mit EXEC ausgeführt. Das ganze wird durchaus komplex und unübersichtlich und auch ein bischen langsam, im Idealfall überläßt man das vieleicht der Anwendung.
     
  3. akretschmer

    akretschmer Datenbank-Guru

    Google mal nach EAV im Zusammenhang mit Datenbanken. Das, was Du suchst, kennt man als das EAV-Modell (Entity - Attribute - Value).

    Dynamisches SQL, da weiß ich nicht, was der SQL-Server von M$ da bietet, unter anderen Systemen wie PG oder MySQL ist das dann aber eher etwas, ähm, sperrig zu handhaben.


    Andreas
     
  4. ukulele

    ukulele Datenbank-Guru

    Stimmt, EAV triffts. http://en.wikipedia.org/wiki/Entity–attribute–value_model

    Sperrig ist das immer aber mitlerweile habe ich schon so eingies auf MS SQL zum laufen gekriegt. Einzig die Übersicht geht echt ein bischen flöten wenn man die Statements erstmal aus Variablen zusammen puzzeln muss.
     
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