PMG2224 4/DB Beleg/Emilie
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>SQL</language>
= '''Datenbank eines Bibliothekssystems einer Schule'''=
== Ziel der Datenbank ==
Das Ziel der Datenbank für die Schulbibliothek ist es, eine effiziente Verwaltung und Organisation der Bibliotheksbücher zu ermöglichen, den Zugriff auf diese zu kontrollieren und Ausleihvorgänge der Schüler zu verfolgen. Durch diese Datenbank kann die Schulbibliothek effektiver betrieben werden und einen besseren Service für die Schülerinnen und Schüler bieten.
== ERM Bibliothekssystem ==
[[Bild:Emilie_2.png|center|1000px]]
== Transformation in das Relationenmodell ==
[[Bild:Emilie_Image.png|center|1000px]]
== Erstellung der Datenbank ==
<code id="65e859885c564">
-- Tabelle für Schüler erstellen
CREATE TABLE IF NOT EXISTS Schüler (
SchülerID INT PRIMARY KEY,
Vorname varchar,
Nachname varchar,
Klasse varchar,
);
-- Beispiel-Schüler einfügen
INSERT INTO Schüler VALUES (111, 'Max', 'Mustermann', '10A');
INSERT INTO Schüler VALUES (222, 'Maria', 'Musterfrau', '10B');
INSERT INTO Schüler VALUES (333, 'Fritz', 'Beispiel', '11A');
INSERT INTO Schüler VALUES (444, 'Anna', 'Schmidt', '10A');
INSERT INTO Schüler VALUES (555, 'Peter', 'Meier', '10B');
INSERT INTO Schüler VALUES (666, 'Sophie', 'Müller', '11A');
-- Tabelle für Bücher erstellen
CREATE TABLE IF NOT EXISTS Bücher (
BuchID INT PRIMARY KEY,
Titel varchar,
Autor varchar,
);
-- Beispiel-Bücher einfügen
INSERT INTO Bücher VALUES (123, 'Der kleine Prinz', 'Antoine de Saint-Exupéry');
INSERT INTO Bücher VALUES (234, 'Harry Potter und der Stein der Weisen', 'J.K. Rowling');
INSERT INTO Bücher VALUES (345, 'Die Verwandlung', 'Franz Kafka');
INSERT INTO Bücher VALUES (456, 'Die unendliche Geschichte', 'Michael Ende');
INSERT INTO Bücher VALUES (567, 'To Kill a Mockingbird', 'Harper Lee');
INSERT INTO Bücher VALUES (689, '1984', 'George Orwell');
-- Tabelle für Ausleihe erstellen
CREATE TABLE IF NOT EXISTS Ausleihe (
AusleihID INT PRIMARY KEY,
SchülerID INT,
BuchID INT,
Ausleihdatum DATE,
FOREIGN KEY (SchülerID) REFERENCES Schüler(SchülerID),
FOREIGN KEY (BuchID) REFERENCES Bücher(BuchID)
);
-- Beispiel-Ausleihen einfügen
INSERT INTO Ausleihe VALUES (101, 111, 123, '2024-03-19');
INSERT INTO Ausleihe VALUES (202, 222, 234, '2024-03-20');
INSERT INTO Ausleihe VALUES (303, 333, 345, '2024-03-21');
INSERT INTO Ausleihe VALUES (404, 444, 456, '2024-03-22');
INSERT INTO Ausleihe VALUES (505, 555, 567, '2024-03-23');
INSERT INTO Ausleihe VALUES (606, 666, 678, '2024-03-24');
</code>
<run id="65e859885c5b5">
SELECT * FROM Schüler;
SELECT * FROM Bücher;
SELECT * FROM Ausleihe;
</run>
== Erstellung unterschiedlicher Abfragen ==
Abfrage 1
<run id="65fa0777edc20">
-- Zeige alle ausgeliehenen Bücher an, einschließlich des Namens des ausleihenden Schülers und des Ausleihdatums
SELECT Schüler.Vorname, Schüler.Nachname, Bücher.Titel, Ausleihe.Ausleihdatum
FROM Ausleihe
JOIN Schüler ON Ausleihe.SchülerID = Schüler.SchülerID
JOIN Bücher ON Ausleihe.BuchID = Bücher.BuchID;
</run>
Abfrage 2
<run id="65fa0777edc6e">
-- Finde alle Schüler, die Bücher ausgeliehen haben, die von J.K. Rowling geschrieben wurden
SELECT DISTINCT Schüler.Vorname, Schüler.Nachname
FROM Schüler
JOIN Ausleihe ON Schüler.SchülerID = Ausleihe.SchülerID
JOIN Bücher ON Ausleihe.BuchID = Bücher.BuchID
WHERE Bücher.Autor = 'J.K. Rowling';
</run>
Abfrage 3
<run id="65fa0777edcb3">
-- Nenne alle ausgeliehen Bücher von Max Mustermann
</run>
== Kritische Reflexion ==
'Datensicherheit'
Die Datenbank enthält keine Verschlüsselung von Daten, somit sind diese nicht vor unbefugtem Zugriff geschützt
'Effizienz'
Die Effizienz der Datenbank könnte durch eine große Anzahl von Ausleihen und Schülern beeinträchtigt werden. Hier könnte die Implementierung anderer Techniken sinnvoll sein.
'Benutzerfreundlichkeit'
Die Datenbank könnte benutzerfreundlicher gestaltet werden, damit Mitarbeiter leichter damit arbeiten können.
== Quellen ==
'Tools'
https://erdplus.com/standalone
https://programmingwiki.de/PMG2224_4/
'Internet'
https://www.php-einfach.de/mysql-tutorial/uebersicht-sql-befehle/