PMG2426 1/DB Beleg/Lena
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>SQL</language>
= Datenbank Kino=
== Themenwahl ==
Meine Datenbank soll helfen, die Kino Website zu verbessern. Informationen zum Kino selbst, zu den Filmen, die gespielt werden, und zu den Artikeln, die verkauft werden, sollen schneller und einfacher durch die Datenbank angezeigt werden. Bisher gibt es keine Option die Filme nach selbstgewählten Artikeln zu sortieren oder sich die Preise von Artikeln anzeigen zu lassen. Auch das Mitarbeiter-Management soll über die Website erleichtert werden, indem die Mitarbeiter selbst unkompliziert ihre Dienste und Verfügbarkeiten anschauen können. All diese Abfragen sollen den Kinobesuch entspannter gestalten. Meine Datenbank soll dafür eine Lösung bieten.
== Datenbank im ERM ==
[[Bild: [[Bild:Lena._Kino_ERM.jpg | 750px ]]
== Transformation in RM ==
===Theorie===
# Entität wird Tabellenkopf
# Attribute als Tabelleninhalt
#* Primärschlüssel besonders hervorhaben
# Kardinalitäten beachten
#* Primärschlüssel ggf. als Fremdschlüssel in Tabellen ergänzen
===Praktische Umsetzung===
*<font color=#1874CD>Kino</font> ('''Kino_Nr''', K_Straße, K_Hausnummer, K_Standort, K_Postleitzahl)
*<font color=#1874CD>Artikel</font> ('''Artikel_Nr''', A_Preis, A_Art, A_Lager)
*<font color=#1874CD>Film</font> ('''Film_Nr''', F_Name, F_FSK, F_Länge, F_Start, F_Saal, '''''Kino_Nr''''')
*<font color=#1874CD>Mitarbeiter</font> ('''Mitarbeiter_Nr''', M_Vorname, M_Nachname, M_Verfügbarkeiten, M_Position, M_Arbeitszeit, '''''Kino_Nr''''')
==Datenbank==
<code id="69845592b4ade">
DROP TABLE IF EXISTS Kino;
CREATE TABLE Kino (
Kino_Nr int,
K_Straße varchar(255),
K_Hausnummer int,
K_Standort varchar(30),
K_Postleitzahl int,
PRIMARY KEY (Kino_Nr)
);
DROP TABLE IF EXISTS Artikel;
CREATE TABLE Artikel (
Artikel_Nr int,
A_Preis varchar(255),
A_Art varchar(255),
A_Lager varchar(255),
PRIMARY KEY (Artikel_Nr)
);
DROP TABLE IF EXISTS Kino_Artikel;
CREATE TABLE Kino_Artikel (
Kino_Nr int,
Artikel_Nr int,
PRIMARY KEY (Kino_Nr, Artikel_Nr),
FOREIGN KEY (Kino_Nr) REFERENCES Kino(Kino_Nr),
FOREIGN KEY (Artikel_Nr) REFERENCES Artikel(Artikel_Nr)
);
DROP TABLE IF EXISTS Film;
CREATE TABLE Film (
Film_Nr int,
F_Saal,
F_Start time,
F_Länge int,
F_FSK,
F_Name varchar(255),
Kino_Nr int,
PRIMARY KEY (Film_Nr),
FOREIGN KEY (Kino_Nr) REFERENCES Kino(Kino_Nr)
);
DROP TABLE IF EXISTS Mitarbeiter;
CREATE TABLE Mitarbeiter (
Mitarbeiter_Nr int,
M_Vorname varchar(255),
M_Nachname varchar(255),
M_Verfügbarkeiten varchar(255),
M_Position varchar(255),
M_Arbeitszeit int,
Kino_Nr int,
PRIMARY KEY (Mitarbeiter_Nr),
FOREIGN KEY (Kino_Nr) REFERENCES Kino(Kino_Nr)
);
</code>
<popup label="Datenbank_Einträge">
<code id="6924155bc9ceb">
INSERT INTO Kino VALUES (101, 'Tuchmacherstraße', 37, 'Bautzen', 02627);
INSERT INTO Kino VALUES (102, 'Jakobstraße', 16, 'Görlitz', 02826);
INSERT INTO Kino VALUES (103, 'Markt', 9, 'Zittau', 02763);
INSERT INTO Artikel VALUES (201, '7€', 'Natchos, klein', 'ja');
INSERT INTO Artikel VALUES (202, '9€', 'Natchos, groß', 'ja');
INSERT INTO Artikel VALUES (203, '5€', 'Popcorn, klein', 'ja');
INSERT INTO Artikel VALUES (204, '7€', 'Popcorn, groß', 'ja');
INSERT INTO Artikel VALUES (205, '4,50€', 'Getränk, klein', 'ja');
INSERT INTO Artikel VALUES (206, '7€', 'Getränk, groß', 'ja');
INSERT INTO Artikel VALUES (207, '%', 'Gutschein', 'nein');
INSERT INTO Film VALUES (301, 1, '14:30:00', 95, 0, 'Mein erster Kinotag', 101);
INSERT INTO Film VALUES (302, 2, '14:30:00', 110, 6, 'Abenteuer im Zauberwald', 101);
INSERT INTO Film VALUES (303, 3, '14:30:00', 125, 12, 'Der letzte Horizont', 101);
INSERT INTO Film VALUES (304, 1, '20:15:00', 98, 16, 'Zwischen zwei Welten', 101);
INSERT INTO Film VALUES (305, 2, '21:30:00', 142, 18, 'Nacht über Berlin', 101);
INSERT INTO Film VALUES (306, 2, '18:15:00', 105, 12, 'Echo der Vergangenheit', 101);
INSERT INTO Film VALUES (308, 3, '16:30:00', 110, 6, 'Abendteuer im Zauberwald', 101);
INSERT INTO Film VALUES (309, 1, '17:00:00', 125, 12, 'Der letzte Horizont', 101);
INSERT INTO Film VALUES (401, 1, '14:00:00', 95, 0, 'Mein erster Kinotag', 102);
INSERT INTO Film VALUES (402, 2, '14:15:00', 110, 6, 'Abenteuer im Zauberwald', 102);
INSERT INTO Film VALUES (403, 3, '14:15:00', 125, 12, 'Der letzte Horizont', 102);
INSERT INTO Film VALUES (404, 1, '20:30:00', 98, 16, 'Zwischen zwei Welten', 102);
INSERT INTO Film VALUES (405, 2, '21:45:00', 142, 18, 'Nacht über Berlin', 102);
INSERT INTO Film VALUES (406, 2, '18:30:00', 105, 12, 'Echo der Vergangenheit', 102);
INSERT INTO Film VALUES (407, 3, '16:45:00', 110, 6, 'Abenteuer im Zauberwald', 102);
INSERT INTO Film VALUES (408, 1, '17:15:00', 125, 12, 'Der letzte Horizont', 102);
INSERT INTO Mitarbeiter VALUES (1, 'Anna', 'Müller', 'Mo,Mi,Fr', 'Theke', 20, 101);
INSERT INTO Mitarbeiter VALUES (2, 'Lukas', 'Schmidt', 'Di,Do,Sa', 'Saalreinigung', 15, 101);
INSERT INTO Mitarbeiter VALUES (3, 'Sophie', 'Weber', 'Mo,Di,Mi,Do', 'Techniker', 35, 101);
INSERT INTO Mitarbeiter VALUES (4, 'Jonas', 'Fischer', 'Fr,Sa,So', 'Serviceleitung', 25, 101);
INSERT INTO Mitarbeiter VALUES (5, 'Lea', 'Becker', 'Mo,Mi,Sa', 'Theke', 18, 101);
INSERT INTO Mitarbeiter VALUES (6, 'Tim', 'Koch', 'Di,Do', 'Saalreinigung', 10, 101);
INSERT INTO Mitarbeiter VALUES (7, 'Marie', 'Hoffmann', 'Mo,Di,Do,Fr', 'Serviceleitung', 30, 101);
INSERT INTO Mitarbeiter VALUES (8, 'Paul', 'Neumann', 'Mi,Sa,So', 'Techniker', 22, 101);
INSERT INTO Mitarbeiter VALUES (9, 'Tom', 'Schulz', 'Mo,Mi,Fr', 'Theke', 20, 102);
INSERT INTO Mitarbeiter VALUES (10, 'Julia', 'Lang', 'Di,Do,Sa', 'Saalreinigung', 15, 102);
INSERT INTO Mitarbeiter VALUES (11, 'Marc', 'Keller', 'Mo,Di,Mi,Do', 'Techniker', 35, 102);
INSERT INTO Mitarbeiter VALUES (12, 'Laura', 'Berg', 'Fr,Sa,So', 'Serviceleitung', 25, 102);
INSERT INTO Mitarbeiter VALUES (13, 'Kevin', 'Fuchs', 'Mo,Mi,Sa', 'Theke', 18, 102);
INSERT INTO Mitarbeiter VALUES (14, 'Sarah', 'Meier', 'Di,Do', 'Saalreinigung', 10, 102);
INSERT INTO Mitarbeiter VALUES (15, 'Daniel', 'Richter', 'Mo,Di,Do,Fr', 'Serviceleitung', 30, 102);
INSERT INTO Mitarbeiter VALUES (16, 'Nina', 'Schmidt', 'Mi,Sa,So', 'Techniker', 22, 102);
INSERT INTO Mitarbeiter VALUES (17, 'Peter', 'Wolf', 'Mo,Mi,Fr', 'Theke', 20, 103);
INSERT INTO Mitarbeiter VALUES (18, 'Lisa', 'Hahn', 'Di,Do,Sa', 'Saalreinigung', 15, 103);
INSERT INTO Mitarbeiter VALUES (19, 'Sebastian', 'Krause', 'Mo,Di,Mi,Do', 'Techniker', 35, 103);
INSERT INTO Mitarbeiter VALUES (20, 'Clara',' Jung', 'Fr,Sa,So', 'Techniker', 25, 103);
INSERT INTO Mitarbeiter VALUES (21, 'Felix', 'Brandt', 'Mo,Mi,Sa', 'Theke', 18, 103);
INSERT INTO Mitarbeiter VALUES (22, 'Emma', 'Lorenz', 'Di,Do', 'Saalreinigung', 10, 103);
INSERT INTO Mitarbeiter VALUES (23, 'Jonas', 'Bauer', 'Mo,Di,Do,Fr', 'Serviceleitung', 30, 103);
INSERT INTO Mitarbeiter VALUES (24, 'Mara', 'Hoffmann', 'Mi,Sa,So', 'Serviceleitung', 22, 103);
</popup>
<br>
== Abfragen==
Es sollen alle Informationen aus der Datenbank ausgegeben werden in einzelnen Tabellen:
<run id="69835cb1aa54d">
select *
from Kino;
select *
from Artikel;
select *
from Film;
select *
from Mitarbeiter;
</run>
Wo sind die Kinos? Welche Nummer hat das Kino in Bautzen?
<run id="6983627ce838b">
select K_Standort
from Kino;
select Kino_Nr
from Kino
where K_Standort = "Bautzen";
</run>
Welche Artikel sind am teuersten? Wie viel kosten kleine Natchos mit großem Popcorn und großem Getränk?
<run id="6983652e83520">
select A_Art, A_Preis
from Artikel
order by A_Preis DESC;
select sum(A_Preis) as Gesamtpreis
from Artikel
where A_Art in ('Natchos, klein', 'Popcorn, groß', 'Getränk, groß');
</run>
Welcher Film ist höchstens FSK 12? Welche Filme laufen im Kino Bautzen in Saal 2?
<run id="6983696f158e5">
select distinct F_Name
from Film
where F_FSK <= 12;
select distinct F_Name, F_Start
from Film, Kino
where Film.F_Saal = 2 and Film.Kino_Nr = 101
order by F_Start asc;
</run>
Wer kann am Wochenende arbeiten? Wer ist stellvertretender Chef im Kino Bautzen?
<run id="69845ae29fd25">
select distinct M_Vorname, M_Nachname, Mitarbeiter_Nr, Kino_Nr, M_Position
from Mitarbeiter
where M_Verfügbarkeiten like '%Sa%'
or M_Verfügbarkeiten like '%So%'
order by M_Position asc;
select distinct Mitarbeiter_Nr, M_Vorname, M_Nachname
from Mitarbeiter, Kino
where Mitarbeiter.Kino_Nr = 101 and M_Position = "Serviceleitung"
order by M_Nachname;
</run>
==Quellen==
Wiki Hilfe [[https://programmingwiki.de/Hilfe:Inhaltsverzeichnis]]
Farben [[https://informatik.fandom.com/de/wiki/Farbentabelle]]