PMG2022/DB Beleg/Heinrich

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>SQL</language>
== Idee der Datenbank ==
 Idee: Übersicht/Informationsverzeichnis für jede Jahreszeit aus dem Spiel "Stardew Valley", angelehnt an [https://de.stardewvalleywiki.com Stardew Valley Wiki]
[[Bild:Stardew Valley Farm.jpg|250px|thumb|left|Beispiel einer Farm in Stardew Valley]] Meine Freundin und Ich spielen sehr gern zusammen Stardew Valley. Das Spiel basiert dabei auf dem Prinzip, eine eigene Farm aufzubauen und stetig Geld in die eigene Tasche zu verdienen. Das Verdienen des Geldes kann dabei über das Verkaufen von Nutzpflanzen bzw. sammelbaren Gegenständen aber auch über das Gewinnen bei Mini-Spielen während der Festivals geschehen. Während Wir also spielen, bin Ich oftmals darauf angewiesen, eine Übersicht beispielsweise über die Festivals in der Jahreszeit oder die anbaubaren Nutzpflanzen zu bekommen - Meist über [https://de.stardewvalleywiki.com Stardew Valley Wiki]. Die folgende Datenbank besitzt dementsprechend das Ziel, eine simple und geordnete Übersicht über die Jahreszeiten und die damit verbundenen Festivals, Geburtstage, sammelbare Gegenstände und anbaubare Nutzpflanzen zu bekommen.
<br>
<br>
<br>
<br>
==ERM-Modell==
[[Bild:ERM-Modell Stardew Valley.png|1000px]]
<br><b>Entitäten:</b> Jahreszeiten, Nutzpflanzen, Sammelbare Gegenstände, Geburtstage, Festivals<br>
<b>Relations:</b> sind anbaubar, sind auffindbar, besitzt, besitzt<br>
<b>Kardinalitäten:</b><br>
[sind anbaubar]<br>
Während einer Jahreszeit sind mehrere Nutzpflanzen anbaubar.<br>
Mehrere Nutzpflanzen sind in nur einer bestimmten Jahreszeit anbaubar.<br>
→Beziehung Jahreszeit - Nutzpflanzen = 1:n<br><br>
[sind auffindbar]<br>
Während einer Jahreszeit sind mehrere sammelbare Gegenstände auffindbar.<br>
Mehrere sammelbare Gegenstände sind in nur einer bestimmten Jahreszeit auffindbar.<br>
→Beziehung Jahreszeit - sammelbare Gegenstände = 1:n<br><br>
[besitzt]<br>
Eine Jahreszeit besitzt mehrere Geburtstage.<br>
Mehrere Geburtstage jeweils eines Dorfbewohners sind in nur einer bestimmten Jahreszeit.<br>
→Beziehung Jahreszeit - Geburtstage = 1:n<br><br>

[besitzt]<br>
Eine Jahreszeit besitzt mehrere Festivals.<br>
Mehrere Festivals sind in nur einer bestimmten Jahreszeit.<br>
→Beziehung Jahreszeit - Festivals = 1:n<br><br>

==Relationenmodell==
[[Bild:22a Heinrich Scheich_Relatioensmodell.PNG]]<br><br>
<b>Grundgerüst:</b><br>
<b>1.</b> Fünf Tabellen für die Entitäten Jahreszeit, Nutzpflanzen, Geburtstage, sammelbare Gegenstände und Festivals. <br>
<b>2.</b> Einsetzten des Primärschlüssels "JZ_Nr" aus der Tabelle "Jahreszeiten" als Fremdschlüssel in allen anderen Tabellen, aufgrund der 4x vorliegenden 1:n-Beziehung.<br>

==Datenbanken==
<code id="622b168c1000c">DROP TABLE IF EXISTS Jahreszeit;
CREATE TABLE Jahreszeit (
  JZ_Nr integer,
  Name varchar(20),
  AnzahlAnTagen integer
);

INSERT INTO Jahreszeit VALUES ('01', 'Frühling', 28);
INSERT INTO Jahreszeit VALUES ('02', 'Sommer', 28);
INSERT INTO Jahreszeit VALUES ('03', 'Herbst', 28);
INSERT INTO Jahreszeit VALUES ('04', 'Winter', 28);



DROP TABLE IF EXISTS Nutzpflanzen;
CREATE TABLE Nutzpflanzen (
  JZ_Nr integer,  
  Name varchar(20),
  Samenpreis integer,
  TageBisZurErnte integer,
  Verkaufspreis integer
);

INSERT INTO Nutzpflanzen VALUES (01,'Kartoffel',50,6,80);
INSERT INTO Nutzpflanzen VALUES (01,'Pastinake',20,4,35);
INSERT INTO Nutzpflanzen VALUES (01,'Blumenkohl',80,12,175);
INSERT INTO Nutzpflanzen VALUES (01,'Knoblauch',40,4,60);

INSERT INTO Nutzpflanzen VALUES (02,'Melone',80,12,260);
INSERT INTO Nutzpflanzen VALUES (02,'Radieschen',40,6,90);
INSERT INTO Nutzpflanzen VALUES (02,'Weizen',10,4,25);
INSERT INTO Nutzpflanzen VALUES (02,'Sternfrucht',200,13,750);

INSERT INTO Nutzpflanzen VALUES (03,'Kürbis',100,13,320);
INSERT INTO Nutzpflanzen VALUES (03,'Senfkohl',50,4,80);
INSERT INTO Nutzpflanzen VALUES (03,'Süßkartoffel',60,10,160);
INSERT INTO Nutzpflanzen VALUES (03,'Amarant',70,7,150);

INSERT INTO Nutzpflanzen VALUES (04,'KEINE NUTZPFLANZEN ANBAUBAR',0,0,0);



DROP TABLE IF EXISTS Geburtstage;
CREATE TABLE Geburtstage (
  JZ_Nr integer, 
  NameDesDorfbewohners varchar(20),
  Datum integer

);

INSERT INTO Geburtstage VALUES (01,'Kent',04);
INSERT INTO Geburtstage VALUES (01,'Haley',14);
INSERT INTO Geburtstage VALUES (01,'Emily',27);

INSERT INTO Geburtstage VALUES (02,'Gus',08);
INSERT INTO Geburtstage VALUES (02,'Sam',17);
INSERT INTO Geburtstage VALUES (02,'Willy',24);

INSERT INTO Geburtstage VALUES (03,'Elliot',05);
INSERT INTO Geburtstage VALUES (03,'Abigail',13);
INSERT INTO Geburtstage VALUES (03,'Marnie',18);

INSERT INTO Geburtstage VALUES (04,'Caroline',07);
INSERT INTO Geburtstage VALUES (04,'Evelyn',20);
INSERT INTO Geburtstage VALUES (04,'Leah',23);


DROP TABLE IF EXISTS Festivals;
CREATE TABLE Festivals (
  JZ_Nr integer, 
  Name varchar(20),
  Datum integer,
  Ort varchar(20)
);


INSERT INTO Festivals VALUES (01,'Eierfest',13,'Pelikanstadt');
INSERT INTO Festivals VALUES (01,'Blumentanz',24,'Zundersaftwald');

INSERT INTO Festivals VALUES (02,'Luau',11,'Strand');
INSERT INTO Festivals VALUES (02,'Tanz der Mondlichquallen',28,'Strand');

INSERT INTO Festivals VALUES (03,'Sterntautaler Volksfest',16,'Pelikanstadt');
INSERT INTO Festivals VALUES (03,'Geisternacht',27,'Pelikanstadt');


INSERT INTO Festivals VALUES (04,'Fest des Eises',08,'Zundersaftwald');
INSERT INTO Festivals VALUES (04,'Fest des Wintersterns',25,'Pelikanstadt');

DROP TABLE IF EXISTS SammelbareGegenstände;
CREATE TABLE SammelbareGegenstände (
  JZ_Nr integer, 
  Name varchar(20),
  Verkaufspreis2 integer
);

INSERT INTO SammelbareGegenstände VALUES (01,'Narzisse',30);
INSERT INTO SammelbareGegenstände VALUES (01,'Lauch',60);
INSERT INTO SammelbareGegenstände VALUES (01,'Löwenzahn',40);

INSERT INTO SammelbareGegenstände VALUES (02,'Gewürzbeere',80);
INSERT INTO SammelbareGegenstände VALUES (02,'Weintraube',80);
INSERT INTO SammelbareGegenstände VALUES (02,'Edelwicke',55);

INSERT INTO SammelbareGegenstände VALUES (03,'Wildpflaume',80);
INSERT INTO SammelbareGegenstände VALUES (03,'Haselnuss',90);
INSERT INTO SammelbareGegenstände VALUES (03,'Brombeere',20);

INSERT INTO SammelbareGegenstände VALUES (04,'Winterwurzel',70);
INSERT INTO SammelbareGegenstände VALUES (04,'Kristallfruch',150);
INSERT INTO SammelbareGegenstände VALUES (04,'Stechpalme',80);</code>
<run id="622b168c1007f">-- Überblick über alle Tabelleninhalte

SELECT * FROM Jahreszeit;

SELECT * FROM Nutzpflanzen;

SELECT * FROM Geburtstage;
SELECT * FROM SammelbareGegenstände;

SELECT * FROM Festivals;



--Welche Nutzpflanzen sind im Frühling anbaubar?
SELECT * FROM Nutzpflanzen WHERE JZ_Nr=1;


--Welche Festivals finden in Pelikanstadt statt?
SELECT * FROM Festivals WHERE Ort='Pelikanstadt';
--An welchem Tag ht MArnie Gebrutstag?
SELECT Datum FROM Geburtstage WHERE NameDesDorfbewohners='Marnie';


-- Auflistung der Geburtstage aller Dorfbewohner, wessen Name mit "E" beginnt.
SELECT * FROM Geburtstage WHERE NameDesDorfbewohners LIKE 'E%';



--Auflistung aller Nutzpflanzen, die einen Samenpreis unter 100 Gold haben und im Herbst anbaubar sind.
SELECT * FROM Nutzpflanzen WHERE Samenpreis<100 AND JZ_Nr=3;


--Auflistung aller Nutzpflanzen und sammelbaren Gegenständen im Sommer, welche einen Verkaufswert von mindestens 80 Gold haben.
SELECT Nutzpflanzen.Name, SammelbareGegenstände.Name FROM Nutzpflanzen,SammelbareGegenstände WHERE Nutzpflanzen.JZ_Nr=2  AND Nutzpflanzen.Verkaufspreis>=80 AND SammelbareGegenstände.Verkaufspreis2>=80 AND SammelbareGegenstände.JZ_Nr=2 AND Nutzpflanzen.JZ_Nr=SammelbareGegenstände.JZ_Nr;</run>
==Reflexion==
Ich bin grundsätzlich zufrieden mit meinem Ergebnis. Es gibt zwar noch wesentlich mehr sammelbare Gegenstände, Nutzpflanzen etc., welche nicht alle in die Datenbank eingetragen wurden. Dennoch kann gesagt werden, dass diese Datenbank bereits aussagekräftig ist. Das anfangs gesetzte Ziel habe Ich umgesetzt bekommen. Lediglich bei den Abfragen habe Ich manchmal meine Probleme. Auch die Schwierigkeit der Abfragen hätten noch wesentlich in die Höhe getrieben werden können. Abgesehen davon, bin Ich dennoch zufrieden mit dieser simplen aber trotzdem nützlichen Datenbank, zumal diese einfach zu erweitern wäre!
==Quellen und Tools==
<li> [https://erdplus.com/ ERD-Plus]
<li> [https://de.stardewvalleywiki.com Stardew Valley Wiki]
<li> [https://programmingwiki.de/PMG2022#Datenbanken Unsere Programming-Wiki Seite zum Thema Datenbanken]
<li> Excel