Tabellenname in Spalte speichern

Tabellenname in Spalte speichern

am 11.01.2007 09:30:40 von Benjamin Billian

Tag zusammen,

Wir machen verschiedene Versuche die nun in einer DB abgelegt werden sollen.
Es gibt vier verschiedene Versuche die sich weitesgehend decken.
(Projekt, Bearbeiter, Datum, Flüssigkeit, Pulver, Kommentar, Referenzen
zu verwandten Versuchen)

Allerdings haben die Parameter und Ergebnisse nun verschiedene Formate.
Beim einen Versuch möchte ich wissen "Bei welcher Temperatur und nach
welcher Zeit erfolgt die Reaktion? Wie hoch war die Raumtemperatur?"
Beim nächsten kommen ganz andere Ergebnisse raus: "Ich hatte folgende
Spannung und folgenden Unterdruck, wie groß ist die Tropfenmasse bei der
Frequenz X?"
Oder ich halte Beobachtungen nur textuell fest.

Die verschiedenen Arten von Versuchen haben also einen gemeinsamen
"Kopf" und sind ansonsten komplett verschieden.

Doch wie bilde ich das am besten ab?
Momentan dachten wir an eine Tabelle mit den erwähnten "Kopf-Daten" und
dann jeweils 4 Tabellen mit den restlichen Parametern und Ergebnissen.
In den vier Untertabellen könnte ich die 1:1 Beziehung ja durch einen
Fremdschlüssel abbilden.
Wenn ich nun aber von einem bestimmten Versuch die Ergebnisse möchte,
muss ich alle vier Tabellen durchsuchen, wo diese sich denn befinden.
Auch nicht schön.
Oder ich mach noch eine Tabelle mit:

+----+-------------+--------------+
| id | Versuchstyp | Tabellenname |
+----+-------------+--------------+


Das kommt dann per Fremdschlüssel zusammen mit der ID aus der jeweiligen
Tabelle in den "Kopf" und ich weiß wo ich suchen muss.

Macht das alles Sinn? Kommt mir so komisch vor.

MfG, Benjamin

Re: Tabellenname in Spalte speichern

am 11.01.2007 09:44:33 von Andreas Kretschmer

Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de

Re: Tabellenname in Spalte speichern

am 11.01.2007 11:14:11 von Benjamin Billian

Andreas Kretschmer wrote:
> Das wurde hier mal in epischer Breite diskutiert. Du findest das unter
> der MID

Danke erstmal.

So wie in news:3v5rd6F14f040U1@individual.net beschrieben, hab ich mir
das auch gedacht.

> Jein, man kann das auch über Fremdschlüssel simulieren, d.h. eine Eintrag in einer
> abgeleiteten Tabelle zeigt dann auf einen Eintrag in der Parent-Tabelle, wobei sich dann
> so die Attribute zusammensetzen.

Allerdings wie lauf ich dann am geschicktesten den umgekehrten Weg? Wenn
ich also nen Eintrag in der Parent-Tabelle hab und den entsprechenden
Datensatz aus einer der abgeleiteten auslesen möchte.

MfG, Benjamin

Re: Tabellenname in Spalte speichern

am 11.01.2007 18:23:14 von dafox

Benjamin Billian schrieb:
> Andreas Kretschmer wrote:

[Snip, 3v5rd6F14f040U1@individual.net]

>> Jein, man kann das auch über Fremdschlüssel simulieren, d.h. eine
>> Eintrag in einer abgeleiteten Tabelle zeigt dann auf einen Eintrag in
>> der Parent-Tabelle, wobei sich dann so die Attribute zusammensetzen.

> Allerdings wie lauf ich dann am geschicktesten den umgekehrten Weg? Wenn
> ich also nen Eintrag in der Parent-Tabelle hab und den entsprechenden
> Datensatz aus einer der abgeleiteten auslesen möchte.

Genauso, wie du es mit jeder anderen Beziehung auch machen würdest:

SELECT o.id, o.name, d.property, ...
FROM object_tab o
JOIN derived_tab d USING(id)