Announcement

Collapse
No announcement yet.

"geteilter" Fremdschlüssel oder so etwas

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • "geteilter" Fremdschlüssel oder so etwas

    Ich stehe grade voll im Wald. Ich will einfache Datenobjekte abspeichern. Die Objekte haben einfach ein paar Properties, die entweder ein String oder eine Zahl beinhalten, die ich ein einer zweiten Tabelle speicher. Quasi so:

    Code:
    CREATE TABLE objects (
        objectId INT ,
        objectName VARCHAR(255)
    );
    
    CREATE TABLE objectProperties (
        propId INT ,
        propName VARCHAR(255) ,
        objectId INT ,
        propType INT /* wäre hier z.B. 1 für Zahl und 2 für String */
    );
    
    CREATE TABLE objectNumbers (
        propId INT ,
        value INT
    );
    
    CREATE TABLE objectStrings (
        propId INT ,
        value VARCHAR(255)
    );
    Alternativ anstatt der letzten beiden Tabellen:

    Code:
    CREATE TABLE objectValues (
        propId INT ,
        numberValue VARCHAR(255) ,
        stringValue INT
    );
    Für die erste Idee bräuchte ich sowas wie einen geteilten Fremdschlüssel, der je nach Typ woandershin zeigt. Für den zweiten Fall irgendein Constraint der immer dann meckert, wenn kein oder beide Value-Werte nicht NULL sind. So richtig gefallen mir beide Lösungen nicht, aber mir fällt nichts ein, wie ich das besser aufdröseln könnte. Hat jemand ne Idee, wie man das umsetzen kann ?
Working...
X