HILFE ich habe keinen plan was ich flasch mache

  • mein code wir sollen in eine Duckdb datein einen code zur erstellung einer datenbank schreiben mit dem angehänkten ER Diagramm und den gegebenen spezifikationnen. ich habe probiert den code zu ändern krige aber immernoch nciht hin das der test mir mehr als 4 Punkte gibt Ich ahbe jedesmal die fehler meldungen zurückbekommen,


    Korektheit Tabelle Bundesland

    Code
    Korrektheit Tabelle Koordinate
    Code
    Korrektheit Tabelle Station
    Code
    [Hilfstest] Korrektheit Datentypen Station
    Code
    Korrektheit Tabelle Messwert
    Code
    [Hilfstest] Korrektheit Attributnamen Messwert
    Code
    [Hilfstest] Korrektheit Datentypen Messwert
    Code
    Integritätsbedingungen Tabelle Koordinate
    Code
    Integritätsbedingungen Tabelle Station
    Code
    Integritätsbedingungen Tabelle verbunden_mit
    Code
    Integritätsbedingungen Tabelle Messwert
    Code
    Stresstest mit realen Daten
    Code
    [Hilfstest] Vorgegebenes INSERT-Statement für Niederschlag
    inkl Abhängigkeiten erfolgreich eingefügt

    Ich weis leider echt nichtmehr weiter und frage des wegen nach hilfel, wäre cool wenn ich wenichstens einige tips kriegen könnete.

    Zusätzliche Bedingungen

    • Es sollen nur Anbieter abgebildet werden können, die in Deutschland umsatzsteuerpflichtig sind. Beachten Sie hierzu die Regeln zur Formatierung von Umsatzsteuer-Identifikationsnummern. Außerdem ist die Angabe von Name und Website verpflichtend.
    • Für Webseiten und API-URLs soll sichergestellt werden, dass diese immer das HTTP-Protokoll (oder die gesicherte Version davon) benutzen. Alle API-URLs müssen unterschiedlich sein.
    • Bundesland-Kürzel sollen nach dem ISO 3166-2 Standard formatiert werden. Außerdem soll sichergestellt werden, dass nur deutsche Bundesländer eingefügt werden können. Beachten Sie, dass alle Bundesländer einen Namen haben müssen.
    • Koordinaten sollen als Gleitkommazahl mit größtmöglicher Genauigkeit gespeichert werden.
    • Das Attribut „EPSG-Code“ ist für die Adaption von neuen Standards in der Zukunft gedacht. Zum aktuellen Zeitpunkt sollen Koordinaten jedoch ausschließlich im EPSG-Code 4326 (teilweise auch WGS 84 genannt) abgebildet werden können. Es soll sichergestellt werden, dass eingegebene Koordinaten nicht außerhalb des entsprechenden Wertebereichs liegen. Für jede Koordinate muss ein GeoHash und der EPSG-Code gespeichert werden.
    • GeoHashes sollen lediglich mit einer Präzision von 10cm × 10cm abgespeichert werden (sprich, sie dürfen maximal 12 Zeichen lang sein).
    • Primärschlüssel für Stationen werden automatisch in aufsteigender Reihenfolge vergeben.
    • Die Höhe der Stationen muss ganzzahlig in Metern angegeben werden. Sie wird für die Luftfahrt zusätzlich automatisch in Fuß mit maximal 3 Nachkommastellen bereitgestellt. Sie können davon ausgehen, dass sich Stationen immer auf der Erdoberfläche befinden.
    • Der Abstand zwischen zwei Stationen muss immer definiert sein und kann nicht negativ sein. Er wird als Gleitkommazahl mit einfacher Genauigkeit gespeichert.
    • Die „Messwert“-Generalisierung soll Attribut-sparend im Null-Stil (diskriminieren Sie mit einem nicht-leeren Attribut Typ) abgebildet werden. Für die Repräsentation der Typen soll ihr Entitätsname verwendet werden.
    • Stellen Sie sicher, dass jedes Messwert-Tupel auch einen Messwert bestehend aus einem Wert und einer Einheit enthält. Als Einheit sind ausschließlich die Kürzel der SI-Basiseinheiten erlaubt. Um eine einfachere Erweiterung in der Zukunft zu ermöglichen, erlauben Sie grundsätzlich sämtliche Basiseineheiten.
    • Achten Sie darauf, dass die Einheit zum Typ des Messwerts passen muss. Die Lichstärke wird beispielsweise in Candela angegeben. Der Messwert für Wind kann verschiedene Einheiten annehmen und wird deshalb vorerst nicht weiter eingeschränkt.
    • Die Windrichtung wird ganzzahlig in Grad angegeben.

    Hilfestellung

    Sie können davon ausgehen, dass das folgende INSERT-Statement korrekt ist und unter der Voraussetzung, dass mögliche abhängige Entities existieren, eingefügt werden kann:

    CHECK(Website LIKE 'https://%' or Website LIKE 'http://%'),
    CHECK(API_URL LIKE 'https://%' or API_URL LIKE 'http://%' or API_URL IS NULL),
    CHECK(UStID ~ '^DE[0-9]{9}$'),
    PRIMARY KEY (UStID),
    );
    CREATE TABLE Bundesland
    (kürzel CHAR(5),
    Name VARCHAR(22) NOT NULL,
    Aufsichtsbehörde VARCHAR(100),
       
    CHECK (kürzel ~ '^DE-(BB|BE|BW|BY|HB|HE|HH|MV|NI|NW|RP|SH|SL|SN|ST|TH)$'),
    PRIMARY KEY (kürzel),
    );
    CREATE TABLE arbeitet_in
    (UStID VARCHAR(11),
    Kürzel CHAR(5),

    PRIMARY KEY (UStID, Kürzel),
    FOREIGN KEY (UStID)
    REFERENCES Anbieter(UStID),
    FOREIGN KEY (Kürzel)
    REFERENCES Bundesland(Kürzel)
    );
    CREATE TABLE Koordinate
    (latitude DOUBLE NOT NULL,
    longitude DOUBLE NOT NULL,
    kürzel CHAR(5) NOT NULL,
    GeoHash VARCHAR(12) NOT NULL,
    EPSG_Code SMALLINT NOT NULL,
       
    CHECK(latitude BETWEEN -90 AND 90 ),
    CHECK(longitude BETWEEN -180 AND 180 ),
    CHECK(EPSG_Code = 4326),
    CHECK (kürzel ~ '^DE-(BB|BE|BW|BY|HB|HE|HH|MV|NI|NW|RP|SH|SL|SN|ST|TH)$'),
    UNIQUE (latitude, longitude),
    PRIMARY KEY (latitude, longitude),
    FOREIGN KEY(kürzel)
    REFERENCES Bundesland(Kürzel),
    );
    CREATE TABLE Polygon
    (latitude DOUBLE NOT NULL,
    longitude DOUBLE NOT NULL,
    kürzel CHAR(5),
    PRIMARY KEY (latitude, longitude, kürzel),
    FOREIGN KEY(kürzel)
    REFERENCES Bundesland(Kürzel),
    FOREIGN KEY(latitude, longitude)
    REFERENCES Koordinate(latitude, longitude),
    );
    CREATE SEQUENCE station_seq START 1;
    CREATE TABLE Station
    (ID INT DEFAULT nextval('station_seq'),
    Höhe INT,
    Höhe_ft FLOAT GENERATED ALWAYS AS (ROUND(Höhe * 3.281, 3)),
    UStID CHAR(11) NOT NULL,
    Latitude DOUBLE NOT NULL,
    longitude DOUBLE NOT NULL,
       
    CHECK(UStID ~ '^DE[0-9]{9}$'),
      
    PRIMARY KEY(ID),
      
    FOREIGN KEY(UStID)
    REFERENCES Anbieter(UStID),
    FOREIGN KEY(Latitude, longitude)
    REFERENCES Koordinate(Latitude, longitude),
    );
    CREATE TABLE verbunden_mit
    (StationB_ID INT,
    StationA_ID INT,
    Abstand FLOAT NOT NULL,
      
    CHECK(Abstand >= 0),
    CHECK (StationA_ID <> StationB_ID),
      
    PRIMARY KEY (StationB_ID, StationA_ID),
    FOREIGN KEY(StationB_ID)
    REFERENCES Station(ID),
    FOREIGN KEY(StationA_ID)
    REFERENCES Station(ID),
    );
    CREATE TABLE Messwert
    (ID INT,
    Zeitpunkt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    Messwert STRUCT(Wert VARCHAR, Einheit VARCHAR(3)),
    typ VARCHAR(100) NOT NULL,
    Art VARCHAR(100),
    Richtung SMALLINT,
    hat_schatten BOOLEAN,
    Station_ID INT,
      
    CHECK(
    (Typ='Niederschlag' AND Art IS NOT NULL AND Richtung IS NULL
    AND hat_schatten IS NULL AND (Messwert).Einheit='m')
    OR (Typ='Wind' AND Art IS NULL AND Richtung IS NOT NULL
    AND hat_schatten IS NULL)
    OR (Typ='Sonne' AND Art IS NULL AND Richtung IS NULL
    AND hat_schatten IS NOT NULL AND (Messwert).Einheit='cd')
    OR (Typ='Temperatur' AND Art IS NULL AND Richtung IS NULL
    AND hat_schatten IS NULL AND (Messwert).Einheit='K')),
    CHECK((Messwert).Einheit IN ('A','K','cd','kg','m','mol','s')),
    CHECK (Richtung BETWEEN 0 AND 360),

    PRIMARY KEY (ID),
    FOREIGN KEY(Station_ID)
    REFERENCES Station(ID),
    );

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!