1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Integritätsbedingungen

Dieses Thema im Forum "Datenmodellierung, Datenbank-Design" wurde erstellt von bluepeople12, 11 September 2011.

  1. bluepeople12

    bluepeople12 Aktiver Benutzer

    Hallo Leute,

    hab hier ne Aufgabe zu Integritätsbedingungen. Könnt ihr mal schauen ob das soweit alles stimmt.
    aufgabe_db18.png
    Zur Info: Also bei c) wird gesagt, dass die F aus S eine Teilmenge von A aus R sein muss.

    Code:
    CREATE TABLE R(
    A VARCHAR PRIMARY KEY,
    B NUMBER,
    C VARCHAR);
    
    CREATE TABLE S(
    D VARCHAR UNIQUE NOT NULL,
    E NUMBER
    F VARCHAR,
    FOREIGN KEY (F) REFERENCES R(A));
    
    Das wäre soweit zu a) bis c). Bei d) denk ich mal, kann man ein Trigger nehmen:

    Code:
    CREATE TRIGGER bed_d
    ON R
    AFTER INSERT OR UPDATE
    REFERENCES old AS old new AS new
    BEGIN
      IF ((SELECT SUM(B) FROM R) >= (SELECT MAX(E) FROM S))
        SIGNALE SQLSTATE '45001'
          SET MESSAGE_TEXT = 'Summe von B darf nicht größer sein als Maximum von E';
      END IF;
    END;
    /
    
    Meint ihr das ist so richtig? Gerade die IF-Bedingung, da habe ich so meine Sorgen ... :-/
     
  2. ukulele

    ukulele Datenbank-Guru

    Ich glaube d) geht auch anders, muss ich aber selbst nachlesen. Irgendwo habe ich mal was zu gültigen Werten in einer Spalte gelesen, ich hab da leider heute keine Zeit für...
    Aber wenn du schon nen Trigger zur Intigritätsprüfung heranziehst, dann besser einen BEFORE Trigger, also falsche Daten gar nicht erst zulassen.
     
    bluepeople12 gefällt das.

Diese Seite empfehlen