Tabellen mit verschiedenden Untertabellen / Dynamic SQL

andrerink

Neuer Benutzer
Beiträge
4
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
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.416
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: https://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.
 

akretschmer

Datenbank-Guru
Beiträge
9.173
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?

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
 
Werbung:
Oben