Aufgabe 3: Datenbankstruktur und SQL-Operationen
Projektbeschreibung:
Dieses Projekt umfasst die Datenbankstruktur und SQL-Operationen für ein Lagerverwaltungssystem. Das System dient
der Verwaltung von Benutzern, Produkten, Bestellungen, Lieferanten und anderen logistischen Vorgängen. Die
Datenbankstruktur sorgt dafür, dass alle grundlegenden Funktionen des Systems auf organisierte Weise in der
Datenbank gespeichert werden.
Tabellenstrukturen:
1. CREATE TABLE Befehle
Artikel Tabelle (Produkte):
CREATE TABLE Artikel (
Artikel_ID INT PRIMARY KEY, -- Eindeutige ID des Produkts
Artikelname VARCHAR(100) NOT NULL, -- Produktname
Beschreibung TEXT, -- Produktbeschreibung
Preis DECIMAL(10, 2) NOT NULL CHECK (Preis > 0), -- Produktpreis, muss positiv sein
Lagerbestand INT DEFAULT 0, -- Lagerbestand des Produkts
Lieferant_ID INT, -- Lieferanten-ID
CONSTRAINT FK_Lieferant FOREIGN KEY (Lieferant_ID) REFERENCES Lieferanten(Lieferant_ID) -- Fremdschlüssel
zur Lieferanten-Tabelle
);
Lieferanten Tabelle (Lieferanten):
CREATE TABLE Lieferanten (
Lieferant_ID INT PRIMARY KEY, -- Eindeutige ID des Lieferanten
Name VARCHAR(100) NOT NULL, -- Name des Lieferanten
Email VARCHAR(100) UNIQUE NOT NULL, -- E-Mail des Lieferanten
Telefon VARCHAR(15), -- Telefonnummer des Lieferanten
Adresse VARCHAR(255) -- Adresse des Lieferanten
);
Bestellungen Tabelle (Bestellungen):
CREATE TABLE Bestellungen (
Bestellung_ID INT PRIMARY KEY, -- Eindeutige ID der Bestellung
Bestellnummer VARCHAR(50) UNIQUE NOT NULL, -- Bestellnummer, muss einzigartig sein
Bestelldatum DATE NOT NULL, -- Datum der Bestellung
Lieferdatum DATE, -- Datum der Lieferung (optional)
Status VARCHAR(20) NOT NULL, -- Bestellstatus (z.B. "offen", "geliefert")
Kunde_ID INT, -- Fremdschlüssel zur Kunden-Tabelle
CONSTRAINT FK_Kunde FOREIGN KEY (Kunde_ID) REFERENCES Kunden(Kunde_ID) -- Fremdschlüssel zur Kunden-
Tabelle
);
Lagerbewegungen Tabelle (Lagerbewegungen):
CREATE TABLE Lagerbewegungen (
Bewegung_ID INT PRIMARY KEY, -- Eindeutige ID der Lagerbewegung
Artikel_ID INT, -- Fremdschlüssel zur Artikel-Tabelle
Typ VARCHAR(20) NOT NULL, -- Typ der Bewegung (z.B. "Zugang", "Abgang")
Menge INT NOT NULL, -- Menge der Bewegung
BearbeitetVon INT, -- ID des Benutzers, der die Bewegung durchgeführt hat
GrundID INT, -- Fremdschlüssel zur Lagerbewegungsgründe-Tabelle
CONSTRAINT FK_Artikel FOREIGN KEY (Artikel_ID) REFERENCES Artikel(Artikel_ID), -- Fremdschlüssel zur Artikel-
Tabelle
CONSTRAINT FK_Grund FOREIGN KEY (GrundID) REFERENCES LagerbewegungsGruende(GrundID) --
Fremdschlüssel zur Lagerbewegungsgründe-Tabelle );
Kunden Tabelle (Kunden):
CREATE TABLE Kunden (
Kunde_ID INT PRIMARY KEY, -- Eindeutige ID des Kunden
Name VARCHAR(100) NOT NULL, -- Name des Kunden
Email VARCHAR(100) UNIQUE NOT NULL , -- E-Mail des Kunden
Telefon VARCHAR(15), -- Telefonnummer des Kunden
Adresse VARCHAR(255) ); -- Adresse des Kunden
2. Transaktionen und Datenmanipulation
-- Beispiel für eine Transaktion: Erstellung von Rollen, Benutzern, Bestellungen und Lagerbewegungen
START TRANSACTION;
-- Rollen
INSERT INTO Roles (RoleName) VALUES ('Admin');
SET @Role_Admin := LAST_INSERT_ID();
INSERT INTO Roles (RoleName) VALUES ('Lagerist');
SET @Role_Lagerist := LAST_INSERT_ID();
-- Benutzer
INSERT INTO Users (Username, PasswordHash, RoleID)
VALUES ('Riccardo', '$2y$10$abc1234567890abcdefgHijklmnPqrstuv', @Role_Admin);
SET @User_Admin := LAST_INSERT_ID();
INSERT INTO Users (Username, PasswordHash, RoleID)
VALUES ('Osman', '$2y$10$zyx9876543210wvutsrqponmlkjihgfd', @Role_Lagerist);
SET @User_Lagerist := LAST_INSERT_ID();
-- Weitere Daten wie Bewegungsgründe, Adressen, Lieferanten und Bestellungen werden ebenfalls eingefügt
COMMIT;