Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

2 Prozeduren

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von boez19, 2 Juni 2016.

  1. boez19

    boez19 Benutzer

    Hallo liebe Community!
    ich arbeite zurzeit an einem Projekt für die Uni.
    Ich brauche zwei Prozeduren, leider fallen mir keine sinnvollen Prozeduren ein.
    Vielleicht habt Ihr paar Beispiele für Prozeduren die ich programmieren könnte.
    Die Tabellen, die vorhanden sind habe ich als Bild hochgeladen.

    Im Grunde geht es um Buchungen von Räumen, die für Seminare oder andere Veranstaltungen genutzt werden können.
     

    Anhänge:

  2. akretschmer

    akretschmer Datenbank-Guru

    Nun, Du könntest ja in der DB eine Prüfung bauen, daß kein Raum doppelt gebucht ist. MySQL kann ja keine Exclusion Constraints, die das bereits im Tabellendesign verhinder könnten, wie folgendes Beispiel zeigt:

    Code:
    test=# create table buchungen(raum text, von_bis tsrange, exclude using gist(raum with =, von_bis with &&));
    CREATE TABLE
    test=*#
    test=*#
    test=*# insert into buchungen values ('saal 1', '[2016-06-03 10:00:00,2016-06-03 12:00:00)');
    INSERT 0 1
    test=*# insert into buchungen values ('saal 2', '[2016-06-03 10:00:00,2016-06-03 12:00:00)');
    INSERT 0 1
    test=*# insert into buchungen values ('saal 2', '[2016-06-03 11:00:00,2016-06-03 13:00:00)');
    ERROR:  conflicting key value violates exclusion constraint "buchungen_raum_von_bis_excl"
    DETAIL:  Key (raum, von_bis)=(saal 2, ["2016-06-03 11:00:00","2016-06-03 13:00:00")) conflicts with existing key (raum, von_bis)=(saal 2, ["2016-06-03 10:00:00","2016-06-03 12:00:00")).
    test=*# 
    

    Da kannste bestimmt ganz groß rauskommen ...
     
    boez19 gefällt das.
  3. boez19

    boez19 Benutzer

    vielen dank
     
  4. akretschmer

    akretschmer Datenbank-Guru

    ich gebe zu: das war nicht ganz ernst gemeint. Das in MySQL abzubilden, und zwar so, daß es auch noch schnell ist, wird schwer bis unmöglich. PG nutzt dazu einen GiST-Index, damit kann man räumliche Daten indizieren - eine RANGE wird quasi als 2-dimensionales Objekt betrachtet. Darauf kann man dann solch einen räumlichen Index setzen und z.B. prüfen, ob sich 2 Objekte (räumlich) überlappen/überschneiden.

    exclude using gist(raum with =, von_bis with &&) , das && ist der Überlappungsoperator.

    MySQL ist von solchen Technologien noch ein paar Lichtjahre weit entfernt ...
     
Die Seite wird geladen...
Ähnliche Themen - Prozeduren
  1. SonnyHH
    Antworten:
    3
    Aufrufe:
    1.267

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden