Richtiges Vorplanen einer Datenbank

Kampfgummibaerlie

Datenbank-Guru
Beiträge
743
Ich möchte (einmal wieder) von vorne Anfangen mit der Homepage für Mutter xD

Was mich interessiert, weil seit meinem Verkehrsunfall angeblich auch die Planungsfähigkeit beeinträchtigt sei, wie kann/sollte ich eine solche Datenbank vorausplanen?

Mein Gedanke wäre, alles relevante schriftlich zu notieren, dann in einer OpenOffice Base (die, die ich bevor ich gottsiedank auf PGSQL umgestiegen bin, verwendet habe), und schauen, ob es dort bereits zu etwaigen Komplikationen kommt, diese ausbessern, und am Ende gut vorbereitet sich hinter den PGSQL-Server setzen ;)

Meine bisherige Planung (ich schreibe im Windows Editor) sieht so aus:
Code:
Was möchte ich in der Mimoso-Datenbank:

 1.:    Tabelle Maschinentypen
    1. 1.:    ID        serial        Primary Key
    1. 2.:    Name        varchar(30)    Unique    Not Null
    1. 3.:    Preis        numeric        Not Null
    1. 4.:   

 2.:    Tabelle Maschinen
    1. 1.:    ID        serial        Primary Key
    1. 2.:    Typ        Integer        FK Maschinentypen(id) Not Null

 3.:    Typ Timerange
    3. 1.:    Function time_subtype_diff(x time without timestamp, y time without timestamp)    select extract(epoch from(x-y));
    3. 2.:    Typ timerange as range (subtype = time, subtype_diff = time_subtype_diff)

 4.:    Tabelle Öffnungszeiten
    4. 1.:    ID        serial        Primary Key
    4. 2.:    wochentag_id    integer        Not Null
    4. 3.:    öffnungszeit    timerange    Not Null

 5.:    Tabelle Vermietungen
    5. 1.:    ID        serial        Primary Key
    5. 2.:    Maschine    integer        FK Maschinen(id) Not Null
    5. 3.:    Mietzeit    tsrange        Not Null

 6.:    Triggerprocedure in_öffnungszeit()
    6. 1.:    function wochentag_datum(x date) as select extract(dow from x)
    6. 2.:    if (select count(1) from öffnungszeiten where wochentag_id = wochentag_datum(lower(new.mietzeit)::date) and öffnungszeiten.öffnungszeit @> lower(new.mietzeit)::time) then return new; else raise exception '><'

 7.:    Tabelle Urlaubstage
    7. 1.:    ID        serial        Primary Key
    7. 2.:    Datum        daterange    unique not null
    7. 3.:    Grund        varchar(50)    Not Null

 8.:    Triggerprocedure in_urlaubstagen()
    8. 1.:    if (datum @> lower(new.mietzeit)::date then raise exception '><' else return new;

 9.:    Tabelle Feiertage
    8. 1.:    ID        serial        Primary Key
    8. 2.:    Name        varchar(30)    Not Null
    8. 3.:    Datum        text        Not Null

10.:    Triggerprocedure in_feiertagen()
    10. 1.:    if (select count(1) from feiertage where to_date(current_date, 'DD.MM.') then raise eception '><' else return new;

11.:

Ich bin zwar noch kein Akretschmer in Sachen PGSQL, aber mir fallt auf, dass ich irrsinnigen Spaß daran habe, einen Vorgang wie das erstellen der Datenbank enormen Spaß macht xD

:)

Des weiteren lerne ich nach und nach immer mehr, bin außerdem im Moment in der HTL Ottakring (Informatik) als außerordentlicher Zuhörer, und kann vl. im Februar zu der Klasse stoßen, in welcher ich im Moment "zuhöre".
 
Werbung:
Zurück
Oben