Was machen wir?
"Elegia" agiert als Vermittler zwischen Unternehmen (als Internetbenutzer) und den Lebensmittel-Lieferanten. Wir entwickeln ein auf das Onlinebestellen und Liefern von Essen und Getraenken spezialisiertes Produkt im Rahmen von Lehrveranstaltung Frameworks. Wir wolllen damit das Verfahren für die Unternehmen sowie fuer die Lieferanten vereinfachen, indem die Rechnungs-, Bestellungs- und Bearbeitungsprozesse mithilfe von Web-Applikation digitalisiert werden.Für wen machen wir?
Es orientiert sich vor allem auf kleine und mittlere Unternehmen, die fuer ihre Mitarbeiter Obste, Wasser und Snacks bestellen. Die andere Seite in dem Prozess sind die Lager, die den Unternehmen die Gueter anbieten. Die Gueter werden direkt ins Buero geliefert. Das Unternehmen als Stammkunde bekommt Rabate, Neuigkeiten und vieles mehr.
Wer ist dabei?
Wasser
Der menschliche Körper besteht zu etwa 70% aus Wasser. Die Produktivität der Mitarbeiter ist stark von der Qualität vom Wasser abhängig. „Elegia“ bietet die Möglichkeit an, dass jeder einzelne Mitarbeiter exakt das passende Getränk für sich auswählen kann.Wie machen wir?
ER-Diagramm und Tabellenansicht
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+01:00";
CREATE DATABASE `elegia` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `elegia`;
CREATE TABLE IF NOT EXISTS `benutzer` (
`UID` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(128) NOT NULL,
`pwd_hash` varchar(96) NOT NULL,
`rolle` enum('Lieferant','Kunde') NOT NULL,
PRIMARY KEY (`UID`),
KEY `UID` (`UID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT ;
CREATE TABLE IF NOT EXISTS `k_bewertet_l` (
`KID` int(11) NOT NULL,
`LID` int(11) NOT NULL,
`rating` int(11) NOT NULL,
`description` varchar(128),
KEY `LID` (`LID`),
KEY `KID` (`KID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `kategorie` (
`KaID` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(56) NOT NULL,
`description` varchar(128) NOT NULL,
PRIMARY KEY (`KaID`),
KEY `KaID` (`KaID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `korb` (
`KorbID` int(11) NOT NULL AUTO_INCREMENT,
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`KID` int(11) NOT NULL,
PRIMARY KEY (`KorbID`),
KEY `KorbID` (`KorbID`),
KEY `KID` (`KID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `korb_lieferstatus` (
`KorbID` int(11) NOT NULL,
`LID` int(11) NOT NULL,
`updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
KEY `KorbID` (`KorbID`),
KEY `LID` (`LID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `korb_ware` (
`KorbID` int(11) NOT NULL,
`WID` int(11) NOT NULL,
`added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
KEY `KorbID` (`KorbID`),
KEY `WID` (`WID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `kunde` (
`KID` int(11) NOT NULL,
`Firmenname` varchar(128) NOT NULL,
`Adresse` varchar(128) NOT NULL,
KEY `KID` (`KID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `lieferant` (
`LID` int(11) NOT NULL,
`Name` varchar(128) NOT NULL,
`Adresse` varchar(128) NOT NULL,
KEY `LID` (`LID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `lieferstatus` (
`SID` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(56) NOT NULL,
`description` int(128) NOT NULL,
PRIMARY KEY (`SID`),
KEY `SID` (`SID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `payment_method` (
`PayID` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(56) NOT NULL,
PRIMARY KEY (`PayID`),
KEY `PayID` (`PayID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `rechnung` (
`ReID` int(11) NOT NULL AUTO_INCREMENT,
`KorbID` int(11) NOT NULL,
`sum` float NOT NULL,
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`ReID`),
KEY `ReID` (`ReID`),
KEY `KorbID` (`KorbID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `rechnung_payment` (
`ReID` int(11) NOT NULL,
`PayID` int(11) NOT NULL,
`status` enum('Wird bearbeitet','Fehlgeschlagen','Erfolgreich','') NOT NULL,
KEY `ReID` (`ReID`),
KEY `PayID` (`PayID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `ware` (
`WID` int(11) NOT NULL AUTO_INCREMENT,
`KaID` int(11) NOT NULL,
`name` varchar(128) NOT NULL,
`price` double NOT NULL,
`amount` int(11) NOT NULL,
PRIMARY KEY (`WID`),
KEY `WID` (`WID`),
KEY `KaID` (`KaID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
ALTER TABLE `k_bewertet_l`
ADD CONSTRAINT `k_bewertet_l_ibfk_2` FOREIGN KEY (`KID`) REFERENCES `benutzer` (`UID`),
ADD CONSTRAINT `k_bewertet_l_ibfk_1` FOREIGN KEY (`LID`) REFERENCES `benutzer` (`UID`);
ALTER TABLE `korb`
ADD CONSTRAINT `korb_ibfk_1` FOREIGN KEY (`KID`) REFERENCES `kunde` (`KID`);
ALTER TABLE `korb_lieferstatus`
ADD CONSTRAINT `korb_lieferstatus_ibfk_2` FOREIGN KEY (`LID`) REFERENCES `lieferstatus` (`SID`),
ADD CONSTRAINT `korb_lieferstatus_ibfk_1` FOREIGN KEY (`KorbID`) REFERENCES `korb` (`KorbID`);
ALTER TABLE `korb_ware`
ADD CONSTRAINT `korb_ware_ibfk_2` FOREIGN KEY (`WID`) REFERENCES `ware` (`WID`),
ADD CONSTRAINT `korb_ware_ibfk_1` FOREIGN KEY (`KorbID`) REFERENCES `korb` (`KorbID`);
ALTER TABLE `kunde`
ADD CONSTRAINT `kunde_ibfk_1` FOREIGN KEY (`KID`) REFERENCES `benutzer` (`UID`);
ALTER TABLE `lieferant`
ADD CONSTRAINT `lieferant_ibfk_1` FOREIGN KEY (`LID`) REFERENCES `benutzer` (`UID`);
ALTER TABLE `rechnung`
ADD CONSTRAINT `rechnung_ibfk_1` FOREIGN KEY (`KorbID`) REFERENCES `korb` (`KorbID`);
ALTER TABLE `rechnung_payment`
ADD CONSTRAINT `rechnung_payment_ibfk_2` FOREIGN KEY (`PayID`) REFERENCES `payment_method` (`PayID`),
ADD CONSTRAINT `rechnung_payment_ibfk_1` FOREIGN KEY (`ReID`) REFERENCES `rechnung` (`ReID`);
ALTER TABLE `ware`
ADD CONSTRAINT `ware_ibfk_1` FOREIGN KEY (`KaID`) REFERENCES `kategorie` (`KaID`);
SET time_zone = "+01:00";
CREATE DATABASE `elegia` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `elegia`;
CREATE TABLE IF NOT EXISTS `benutzer` (
`UID` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(128) NOT NULL,
`pwd_hash` varchar(96) NOT NULL,
`rolle` enum('Lieferant','Kunde') NOT NULL,
PRIMARY KEY (`UID`),
KEY `UID` (`UID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT ;
CREATE TABLE IF NOT EXISTS `k_bewertet_l` (
`KID` int(11) NOT NULL,
`LID` int(11) NOT NULL,
`rating` int(11) NOT NULL,
`description` varchar(128),
KEY `LID` (`LID`),
KEY `KID` (`KID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `kategorie` (
`KaID` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(56) NOT NULL,
`description` varchar(128) NOT NULL,
PRIMARY KEY (`KaID`),
KEY `KaID` (`KaID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `korb` (
`KorbID` int(11) NOT NULL AUTO_INCREMENT,
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`KID` int(11) NOT NULL,
PRIMARY KEY (`KorbID`),
KEY `KorbID` (`KorbID`),
KEY `KID` (`KID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `korb_lieferstatus` (
`KorbID` int(11) NOT NULL,
`LID` int(11) NOT NULL,
`updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
KEY `KorbID` (`KorbID`),
KEY `LID` (`LID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `korb_ware` (
`KorbID` int(11) NOT NULL,
`WID` int(11) NOT NULL,
`added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
KEY `KorbID` (`KorbID`),
KEY `WID` (`WID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `kunde` (
`KID` int(11) NOT NULL,
`Firmenname` varchar(128) NOT NULL,
`Adresse` varchar(128) NOT NULL,
KEY `KID` (`KID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `lieferant` (
`LID` int(11) NOT NULL,
`Name` varchar(128) NOT NULL,
`Adresse` varchar(128) NOT NULL,
KEY `LID` (`LID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `lieferstatus` (
`SID` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(56) NOT NULL,
`description` int(128) NOT NULL,
PRIMARY KEY (`SID`),
KEY `SID` (`SID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `payment_method` (
`PayID` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(56) NOT NULL,
PRIMARY KEY (`PayID`),
KEY `PayID` (`PayID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `rechnung` (
`ReID` int(11) NOT NULL AUTO_INCREMENT,
`KorbID` int(11) NOT NULL,
`sum` float NOT NULL,
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`ReID`),
KEY `ReID` (`ReID`),
KEY `KorbID` (`KorbID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `rechnung_payment` (
`ReID` int(11) NOT NULL,
`PayID` int(11) NOT NULL,
`status` enum('Wird bearbeitet','Fehlgeschlagen','Erfolgreich','') NOT NULL,
KEY `ReID` (`ReID`),
KEY `PayID` (`PayID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `ware` (
`WID` int(11) NOT NULL AUTO_INCREMENT,
`KaID` int(11) NOT NULL,
`name` varchar(128) NOT NULL,
`price` double NOT NULL,
`amount` int(11) NOT NULL,
PRIMARY KEY (`WID`),
KEY `WID` (`WID`),
KEY `KaID` (`KaID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
ALTER TABLE `k_bewertet_l`
ADD CONSTRAINT `k_bewertet_l_ibfk_2` FOREIGN KEY (`KID`) REFERENCES `benutzer` (`UID`),
ADD CONSTRAINT `k_bewertet_l_ibfk_1` FOREIGN KEY (`LID`) REFERENCES `benutzer` (`UID`);
ALTER TABLE `korb`
ADD CONSTRAINT `korb_ibfk_1` FOREIGN KEY (`KID`) REFERENCES `kunde` (`KID`);
ALTER TABLE `korb_lieferstatus`
ADD CONSTRAINT `korb_lieferstatus_ibfk_2` FOREIGN KEY (`LID`) REFERENCES `lieferstatus` (`SID`),
ADD CONSTRAINT `korb_lieferstatus_ibfk_1` FOREIGN KEY (`KorbID`) REFERENCES `korb` (`KorbID`);
ALTER TABLE `korb_ware`
ADD CONSTRAINT `korb_ware_ibfk_2` FOREIGN KEY (`WID`) REFERENCES `ware` (`WID`),
ADD CONSTRAINT `korb_ware_ibfk_1` FOREIGN KEY (`KorbID`) REFERENCES `korb` (`KorbID`);
ALTER TABLE `kunde`
ADD CONSTRAINT `kunde_ibfk_1` FOREIGN KEY (`KID`) REFERENCES `benutzer` (`UID`);
ALTER TABLE `lieferant`
ADD CONSTRAINT `lieferant_ibfk_1` FOREIGN KEY (`LID`) REFERENCES `benutzer` (`UID`);
ALTER TABLE `rechnung`
ADD CONSTRAINT `rechnung_ibfk_1` FOREIGN KEY (`KorbID`) REFERENCES `korb` (`KorbID`);
ALTER TABLE `rechnung_payment`
ADD CONSTRAINT `rechnung_payment_ibfk_2` FOREIGN KEY (`PayID`) REFERENCES `payment_method` (`PayID`),
ADD CONSTRAINT `rechnung_payment_ibfk_1` FOREIGN KEY (`ReID`) REFERENCES `rechnung` (`ReID`);
ALTER TABLE `ware`
ADD CONSTRAINT `ware_ibfk_1` FOREIGN KEY (`KaID`) REFERENCES `kategorie` (`KaID`);
Logisches Design
Welche Technologien werden verwendet?
Als Back-End Framework haben wir uns für «Laravel» entschieden, da dieser Framework sowohl gute Feedback und große Community hat, als auch eine ausführliches Dokumentation.
JavaScript und darauf basierte Web-Frameworks wie jQuery und ReactJS für eine saubere und agile Entwicklung. JQuery wird auch für das responsive Design verwendet. Alle asynchronen Aufrufen sind auf JavaScript basiert.
Die Datenhaltung von Entitaeten und ihren Beziehungen wird mit MySQL gestaltet. Alles, was nicht in die Tabellen rein passt, wird mit Hilfe von NoSQL-basierten DB (z.B. MongoDB) entwickelt.
Das Styling wird mit Hilfe von CSS und darauf basierten Framework Bootstrap entwickelt. Dies garantiert eine getestete und browserübergreif
Welche Rollen gibt es?
Lieferanten (Lebensmittel)
Business Model/ Logik
Kunden (KMU)