Projekt Feuerwehr

Aus Informatik

Wechseln zu: Navigation, Suche

Diese Seite befindet sich noch im Aufbau / das Projekt ist noch in Arbeit.

Inhaltsverzeichnis

Problem

Beschreibung

Die Einsatzabteilung (der Kern) einer Feuerwehr soll verwaltet werden. Eine Feuerwehr hat Mitglieder und Fahrzeuge. Es werden verschiedene Aktivitäten (z.B. Einsätze, Übungen, Feste etc.) mit Mitgliedern und evtl. auch mit Fahrzeugen durchgeführt. Jedes Mitglied hat Einsatzkleidung, die Eigentum der Feuerwehr ist. In den Fahrzeugen gibt es Werkzeug und Material. Beides ist aber nicht notwendigerweise an ein Fahrzeug gebunden.

Geschäftsregeln

  • Ein Mitglied kann Ausbildungen haben.
  • Eine Ausbildung kann bei mehreren Mitgliedern vorhanden sein.
  • Ein Mitglied kann Kleidungsstücke haben.
  • Zu einem Kleidungsstück kann kein oder genau ein Mitglied gehören.
  • Ein Mitglied kann an Aktivitäten teilnehmen.
  • An einer Aktivität nimmt mindestens 1 Mitglied teil.
  • Zur Teilnahme an einer Aktivität können Fahrzeuge benutzt werden.
  • Eine Aktivität kann Material verbrauchen.
  • Material kann bei Aktivitäten verbraucht werden.
  • Ein Fahrzeug kann Werkzeug führen.
  • Werkzeug kann von genau einem oder keinem Fahrzeug geführt werden.
  • Bei einer Aktivität können Werkzeuge benutzt werden.
  • Ein Werkzeug kann bei mehreren Aktivitäten benutzt werden.

Datenbank

ERM

ERM.svg

RM

  • mitglied (mnr, vorname, nachname, strasse, hausnummer, plz, wohnort, geburtsdatum, eintrittsdatum, mitgliedsjahre, fuehrerschein, geschlecht, telefon)
  • kleidung (knr, mnr, typ, groesse, atemschutz)
  • aktivitaet (anr, startdatum, startzeit, enddatum, endzeit, ort, typ, ak_bezeichnung)
  • material (m_bezeichnung, masseinheit, mengeverfuegbar, mengebenoetigt)
  • fahrzeug (fnr, f_bezeichnung, funkruf, pumpleistung, sitzplaetze, wassertankvolumen)
  • werkzeug (wnr, fnr, w_bezeichnung)
  • ausbildung (au_bezeichung)
  • nimmtteil (mnr, anr, fnr, position)
  • verbraucht (anr, m_bezeichnung, menge)
  • benutzt (wnr, anr, zweck)
  • kann (mnr, au_bezeichnung)

Die Zusätze (z.B. "ak_", "m_") vor den Attributen "bezeichnung" werden nicht in die Datenbank/den SQL-Code übernommen.

Quellcode

Datenbank "Feuerwehr"

CREATE DATABASE IF NOT EXISTS feuerwehr;

Tabelle "Mitglied"

CREATE TABLE feuerwehr.mitglied (
  mnr int(3) not null auto_increment,
  vorname varchar(30) not null,
  nachname varchar(30) not null,
  strasse varchar(30) not null,
  hausnummer varchar(4) not null,
  plz int(5) not null,
  wohnort varchar(30) not null,
  geburtsdatum date not null,
  eintrittsdatum date not null,
  mitgliedsjahre int(2),
  fuehrerschein varchar(5),
  geschlecht enum('m', 'w') not null,
  telefon varchar(20) not null,
  PRIMARY KEY (mnr)
) ENGINE=INNODB;

Tabelle "Kleidung"

CREATE TABLE feuerwehr.kleidung (
  knr int(4) not null auto_increment,
  mnr int(3),
  typ enum('Jacke', 'Hose', 'Stiefel', 'Helm', 'Handschuh', 'Gurt') not null,
  groesse int(3) not null,
  atemschutz enum('ja', 'nein') not null,
  PRIMARY KEY (knr),
  FOREIGN KEY (mnr) 
    REFERENCES mitglied (mnr) 
    ON UPDATE CASCADE 
    ON DELETE SET NULL
) ENGINE=INNODB;

Tabelle "Aktivität"

CREATE TABLE feuerwehr.aktivitaet (
  anr int(6) not null auto_increment,
  startdatum date not null,
  startzeit time not null,
  enddatum date not null,
  endzeit time not null,
  ort varchar(30) not null,
  typ enum('Uebung', 'Einsatz', 'Versammlung', 'Sonstiges') not null,
  bezeichnung varchar(30) not null,
  PRIMARY KEY (anr)
) ENGINE=INNODB;

Tabelle "Material"

CREATE TABLE feuerwehr.material (
  bezeichnung varchar(30) not null,
  masseinheit varchar(20) not null,
  mengeverfuegbar decimal(10,2) not null,
  mengebenoetigt decimal(10,2) not null,
  PRIMARY KEY (bezeichnung)
) ENGINE=INNODB;

Tabelle "Fahrzeug"

CREATE TABLE feuerwehr.fahrzeug (
  fnr int(2) not null auto_increment,
  bezeichnung varchar(30) not null,
  funkruf varchar(4) not null,
  sitzplaetze int(1) not null,
  PRIMARY KEY (fnr)
) ENGINE=INNODB;

Tabelle "Werkzeug"

CREATE TABLE feuerwehr.werkzeug (
  wnr int(4) not null auto_increment,
  fnr int(2),
  bezeichnung varchar(30) not null,
  PRIMARY KEY (wnr),
  FOREIGN KEY (fnr)
    REFERENCES fahrzeug (fnr)
    ON UPDATE CASCADE
    ON DELETE SET NULL
) ENGINE=INNODB;

Tabelle "Ausbildung"

CREATE TABLE feuerwehr.ausbildung (
  bezeichnung varchar(30) not null,
  PRIMARY KEY (bezeichnung)
) ENGINE=INNODB;

Tabelle "nimmt teil"

CREATE TABLE feuerwehr.nimmtteil (
  mnr int(3) not null,
  anr int(6) not null,
  fnr int(2),
  position varchar(25),
  PRIMARY KEY (mnr,anr),
  FOREIGN KEY (mnr)
    REFERENCES mitglied (mnr)
    ON UPDATE CASCADE
    ON DELETE CASCADE,
  FOREIGN KEY (anr)
    REFERENCES aktivitaet (anr)
    ON UPDATE CASCADE
    ON DELETE CASCADE,
  FOREIGN KEY (fnr)
    REFERENCES fahrzeug (fnr)
    ON UPDATE CASCADE
    ON DELETE SET NULL
) ENGINE=INNODB;

Tabelle "verbraucht"

CREATE TABLE feuerwehr.verbraucht (
  anr int(6) not null,
  bezeichnung varchar(30) not null,
  menge decimal(10,2) not null,
  PRIMARY KEY (anr,bezeichnung),
  FOREIGN KEY (anr)
    REFERENCES aktivitaet (anr)
    ON UPDATE CASCADE
    ON DELETE CASCADE,
  FOREIGN KEY (bezeichnung)
    REFERENCES material (bezeichnung)
    ON UPDATE CASCADE
    ON DELETE CASCADE
) ENGINE=INNODB;

Tabelle "benutzt"

CREATE TABLE feuerwehr.benutzt (
  wnr int(4) not null,
  anr int(6) not null,
  zweck varchar(30) not null,
  PRIMARY KEY (wnr,anr),
  FOREIGN KEY (wnr)
    REFERENCES werkzeug (wnr)
    ON UPDATE CASCADE
    ON DELETE CASCADE,
  FOREIGN KEY (anr)
    REFERENCES aktivitaet (anr)
    ON UPDATE CASCADE
    ON DELETE CASCADE
) ENGINE=INNODB;

Tabelle "kann"

CREATE TABLE feuerwehr.kann (
  mnr int(3) not null,
  bezeichnung varchar(30) not null,
  PRIMARY KEY (mnr,bezeichnung),
  FOREIGN KEY (mnr)
    REFERENCES mitglied (mnr)
    ON UPDATE CASCADE
    ON DELETE CASCADE,
  FOREIGN KEY (bezeichnung)
    REFERENCES ausbildung (bezeichnung)
    ON UPDATE CASCADE
    ON DELETE CASCADE
) ENGINE=INNODB

Interface/Website

Sitemap

PHP-Quellcode

An dieser Stelle wird der verwendete PHP-Code dokumentiert werden. Der HTML-Code wird vernachlässigt.

Persönliche Werkzeuge
Navigation