PMG2224 4/DB Beleg/Alia
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>SQL</language>
=Datenbank zum Thema Länder der Erde=
==Begründung der Themenwahl==
Das Ziel der folgenden Datenbank ist es, sich einen Ueberblick ueber ausgewaehlte Laender der Welt verschaffen zu koennen. Im Falle einer Erweiterung auf jedes einzelne Land der Erde koennte man problemlos, schnell und effzient Informationen ueber jedes erdenkliche Land der Welt erhalten und sogar erfahren, welche Hintergruende markante Merkmale wie zum Beispiel die Sprache haben und auch, wie diese Merkmale miteinadner vernknuepft sind. Zusammenfassend kann man also sagen, das Ziel der Datenbank ist es, Wissen ueber laenderspezifische Details aber gleichzeitig auch globale Zusammenhaenge zu dokumentieren und zur Verfuegung zu stellen.
==ERM zum Thema==
[[Datei:download.png]]
==Relationenmodell==
[[Datei:download2.png]]
Land(<u>L_ID</u>, Kontinent, Einwohner, Größe, Hauptreligion, Hauptstadt)
Sprache(<u>S_ID</u>, Schriftzeichen, Sprachstamm, Sprecher)
Präsident(<u>P_ID</u>, Vorname, Geburtsdatum, Alter, Geschlecht, L_ID)
Land_Sprache(<u>L_ID</u>, S_ID)
==Erstellung der Datenbank in SQL==
===Umsetzung der Tabellen===
<code id="65f4e03619bd9" >
CREATE TABLE Land (
L_ID varchar PRIMARY KEY,
Kontinent varchar ,
Hauptreligion varchar,
EinwohnerInMio integer,
GrößeInQuadratkilometer integer ,
Hauptstadt varchar
);
CREATE TABLE Sprache(
S_ID varchar PRIMARY KEY,
Schriftzeichen integer,
Sprachstamm varchar,
Sprecher integer
);
CREATE TABLE Praesident(
P_ID varchar PRIMARY KEY,
Vorname varchar,
Geburtsdatum varchar,
Geschlecht varchar,
AlterinJahren integer,
L_ID varchar,
FOREIGN KEY (L_ID) REFERENCES Land(L_ID)
);
CREATE TABLE Land_Sprache(
L_ID varchar,
S_ID varchar,
FOREIGN KEY (L_ID) REFERENCES Land(L_ID),
FOREIGN KEY (S_ID) REFERENCES Sprache(S_ID)
);
</code>
===Informationen der Tabellen===
<code id="65f4e09b071c1" >
INSERT INTO Land VALUES ('Deutschland', 'Europa', 'Christentum', 84, 357000 ,'Berlin');
INSERT INTO Land VALUES ('USA', 'Nordamerika', 'Christentum', 342, 9834000 ,'Washington DC.');
INSERT INTO Land VALUES ('China', 'Asien', 'Konfessionslos', 1400, 9597000 ,'Peking');
INSERT INTO Land VALUES ('Indien', 'Asien', 'Hinduismus', 1400, 3287000,'New Dehli');
INSERT INTO Land VALUES ('Brasilien', 'Südamerika', 'Christentum', 214, 8510000,'Brasilia');
INSERT INTO Land VALUES ('Russland', 'Asien', 'Christentum', 143, 17100000,'Moskau');
INSERT INTO Land VALUES ('Algerien', 'Afrika', 'Isalm', 46, 2382000 ,'Algier');
INSERT INTO Land VALUES ('Frankreich', 'Europa', 'Christentum', 68, 632733 ,'Paris');
INSERT INTO Land VALUES ('Kanada', 'Nordamerika', 'Christentum', 38, 9984670 ,'Ottawa');
INSERT INTO Land VALUES ('Spanien', 'Europa', 'Christentum', 47, 505990, 'Madrid');
INSERT INTO Land VALUES ('Mexiko', 'Nordamerika', 'Christentum', 126, 1964375, 'Mexiko-Stadt');
INSERT INTO Land VALUES ('Angola', 'Afrika', 'Christentum', 32, 1246700, 'Luanda');
INSERT INTO Land VALUES ('Portugal', 'Europa', 'Christentum', 10, 92090, 'Lissabon');
INSERT INTO Sprache VALUES ('Deutsch', 26 , 'Westgermanisch', 76000000 );
INSERT INTO Sprache VALUES ('Franzoesisch', 26, ' Indo-Europäisch', 300000000);
INSERT INTO Sprache VALUES ('Englisch', 26,'Westgermanisch', 3750000000);
INSERT INTO Sprache VALUES ('Hindi', 46, 'Indorianisch', 341000000);
INSERT INTO Sprache VALUES ('Portugisisch', 26,'Romanisch',221000000);
INSERT INTO Sprache VALUES ('Spanisch', 26, 'Romanisch',480000000);
INSERT INTO Sprache VALUES ('Mandarin', 2000,'Sinotibetisch',91800000000);
INSERT INTO Sprache VALUES ('Russisch', 33, 'Ostslawisch',154000000);
INSERT INTO Praesident VALUES ('Steinmeier', 'Frank Walter','5. Januar 1956','Maskulin' ,68 ,'Deutschland');
INSERT INTO Praesident VALUES('Jinping', 'Xi', '15. Juni 1953', 'Maskulin', 68, 'China');
INSERT INTO Praesident VALUES('Putin', 'Wladimir', '7. Oktober 1952', 'Maskulin', 69, 'Russland');
INSERT INTO Praesident VALUES('Obrador', 'Andrés Manuel López', '13. November 1953', 'Maskulin', 68, 'Mexiko');
INSERT INTO Praesident VALUES('Sanchez', 'Pedro', '29. Februar 1972', 'Maskulin', 50, 'Spanien');
INSERT INTO Praesident VALUES('Laurenco', 'João', '5. März 1954', 'Maskulin', 67, 'Angola');
INSERT INTO Praesident VALUES('Macron', 'Emmanuel', '21. Dezember 1977', 'Maskulin', 44, 'Frankreich');
INSERT INTO Praesident VALUES('Biden', 'Joe', '20. November 1942', 'Maskulin', 79, 'USA');
INSERT INTO Praesident VALUES('Modi', 'Narendra', '17. September 1950', 'Maskulin', 71,'Indien');
INSERT INTO Praesident VALUES('Trudeau', 'Justin', '25. Dezember 1971', 'Maskulin', 50,'Kanada');
INSERT INTO Praesident VALUES('Rebelo de Sousa', 'Marcelo ', '12. Dezember 1948', 'Maskulin', 73,'Portugal');
INSERT INTO Land_Sprache VALUES ('Kanada', 'Englisch');
INSERT INTO Land_Sprache VALUES ('Kanada', 'Franzoesisch');
INSERT INTO Land_Sprache VALUES ('Indien', 'Hindi');
INSERT INTO Land_Sprache VALUES ('Indien', 'Englisch');
INSERT INTO Land_Sprache VALUES ('USA', 'Englisch');
INSERT INTO Land_Sprache VALUES ('USA', 'Spanisch');
INSERT INTO Land_Sprache VALUES ('Portugal', 'Portugisisch');
INSERT INTO Land_Sprache VALUES ('Angola', 'Portugisisch');
INSERT INTO Land_Sprache VALUES ('Deutschland', 'Deutsch');
</code>
==Abfragen==
===Ausgabe aller Werte===
<run id="65f6ad3eaf0cd" >SELECT*FROM Land;
SELECT*FROM Sprache;
SELECT*FROM Praesident;
SELECT*FROM Land_Sprache</run>
===Abfrage 1===
<run id="65f6adbab7dbe" >--Nenne den Vor- und Nachnamen des Praesidents von Deutschland
SELECT Praesident.P_ID, Praesident.Vorname
FROM Praesident, Land
WHERE Praesident.L_ID='Deutschland' AND Praesident.L_ID=Land.L_ID</run>
===Abfrage 2===
<run > --Nenne alle Laender deren Hauptreligion das Christentum ist
SELECT Land.L_ID
FROM Land
WHERE Land.Hauptreligion='Christentum' </run>
===Abfrage 3===
<run > --Nenne mir die Laender, in welchen Englisch gesprochen wird
SELECT Land.L_ID
FROM Land, Sprache, Land_Sprache
WHERE Land_Sprache.S_ID='Englisch' AND Land.L_ID=Land_Sprache.L_ID AND Sprache.S_ID=Land_Sprache.S_ID </run>
===Abfrage 4===
<run> SELECT Land.L_ID, Land.Hauptstadt, COUNT(Land_Sprache.S_ID) AS AnzahlDerSprachen
FROM Land
JOIN Land_Sprache ON Land.L_ID = Land_Sprache.L_ID--atensätze aus den beiden Tabellen verknüpfen
GROUP BY Land.L_ID, Land.Hauptstadt-- gruppiert die Datensätze nach bestimmten Spalten
HAVING COUNT(Land_Sprache.S_ID) > 1;--Ergebnisse filtern </run>
===Abfrage 5===
<run > --Nenne die durchschnittliche Anzahl von Schriftzeichen pro Sprache für Sprachen mit mehr als 50 Millionen Sprechern
SELECT AVG(Schriftzeichen) AS DurchschnittlicheSchriftzeichen
FROM Sprache
WHERE Sprecher > 50000000; </run>
==Kritische Reflexion==
''''Kardinalitaeten''''
In meiner Datenbank habe ich von einer 1:1 und einer n:m Beziehung Gebrauch gemacht. Damit ist eine weite Palette an Moeglichkeiten abgedeckt. Im Bezug auf die n:m Beziehung fuer die Sprachen muss ich allerdigns sagen, dass ich diese Loesung fuer das Problem etwas ungeschickt finde. Im Rahmen dieses Schulprojekts und dem damit zusammenhaengenden Umfang an Informationen, ist die neue Tabelle in ihrer Form ausreichend, doch waere der Umfang mehr, wuerde definitv die Effizienz und mit Sicherheit auch die Uebersichtlichkeit immens leiden. Fuer das Projekt jedoch, ist diese Form durchaus akzeptabel.
''''Umsetzung''''
In erster Linie muss man natuerlich sagen, dass der Sachverhalt fuer eine Umsetzung stark reduziert und somit wesentlich verienfacht werden musste. Die Zeit haette nicht gereicht, um wirklich jedes Land miteinzubinden und es haette sicherlich auch den Rahmen gespraengt. In der Datenbank selbst wurde Redundanz so gut wie moelgich vermieden, keine Entitaet taucht zwei Mal in derselben Tabelle auf. Dass sich die Primaerschluessel in anderen Tabellen wiederfinden ist natuerlich notwendig, um die Tabellen miteinander zu verknuepfen und somit tabellenuebergreifende Abfragen zu ermoeglichen.
''''Fazit''''
Die Datenbank ist in der Lage, einfache und anspruchsvollere Abfragen auszufuehren, was fuer ihre Tauglichkeit spricht. Die Syntax ist dementsprechend regelkonform und richtig umgesetzt. Fuer die Zukunft waere es dennoch eine Ueberlegung wert, sich ein uebersichtlicheres Tabellenkonzept zu ueberlegen.
==Quellen==
===Werkzeuge===
[https://erdplus.com/ ERDPlus]
[https://programmingwiki.de/Startseite Programming Wiki]
===Wissen===
[https://www.php-einfach.de/mysql-tutorial/uebersicht-sql-befehle/ SQL Uebersicht]
[https://www.laender.steckbriefe.com/ Laender Steckbriefe]
[https://www.laenderdaten.de/staat/regierungen.aspx/ Regierungen]
[https://www.schule-mehrsprachig.at/wissen/wissen-ueber-sprachen/sprachensteckbriefe/ Sprachwissen]