PMG2224 1/DB Beleg/Emma
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>SQL</language>
=Datenbank über Proteinprodukte für Krafttraining=
==='''Einleitung ins Thema'''===
Eine Datenbank ist eine strukturierte Sammlung von Daten, die auf einem Computersystem gespeichert und verwaltet wird. Ihre Merkmale umfassen organisierte Datensätze, Abfragefähigkeit und Datenintegrität. Das Ziel einer Datenbank besteht darin, Daten effizient zu speichern, abzurufen, zu verwalten und zu manipulieren, um Informationen für verschiedene Anwendungen bereitzustellen.
Der Aufbau einer Datenbank umfasst normalerweise Datenschemata zur Definition von Tabellenstrukturen, Schlüsseln zur Identifizierung von Datensätzen, Indexen zur Beschleunigung von Abfragen und Anweisungen zur Datenmanipulation wie Einfügen, Aktualisieren und Löschen von Datensätzen.
Dazu gibt es verschiedene Formen einer Datenbank, wie unteranderem:
'''ERM (Entity-Relationship-Modell):''' Eine grafische Darstellung von Datenbankstrukturen, die Entitäten (Objekte), Beziehungen zwischen diesen Entitäten und Attribute der Entitäten zeigt.
'''RM (Relationales Modell):''' Ein Datenbankmodell, das Daten in Tabellen organisiert, wobei jede Tabelle Zeilen für Datensätze und Spalten für Attribute enthält, und Beziehungen zwischen den Tabellen durch Schlüssel definiert werden.
'''SQL (Structured Query Language):''' Eine Programmiersprache zur Kommunikation mit relationalen Datenbanken, die zum Abfragen, Ändern und Verwalten von Daten verwendet wird.
----
===''' Einführung in die Welt des Krafttrainings und die Bedeutung von Proteinprodukten für die Menschen, die Krafttraining machen'''===
Krafttraining ist eine beliebte Form des körperlichen Trainings, dass darauf abzielt, die Muskelkraft und die Muskelmasse zu erhöhen. Es umfasst eine Vielzahl von Übungen, die mit Maschinen, Gewichten und dem eigenen Körpergewicht durchgeführt werden können. Proteinprodukte spielen dabei eine entscheidende Rolle für Menschen, die Krafttraining betreiben. Das liegt daran, dass Proteine die Bausteine der Muskeln sind und für Reparatur, Wachstum und Erhaltung der Muskelmasse unerlässlich sind.
----
===''' Begründung der Themenwahl'''===
Die Wahl des Themas "Bedeutung von Proteinprodukten für Menschen, die Krafttraining betreiben" ergibt sich aus mehreren wichtigen Überlegungen:
Protein ist ein wesentlicher Baustein für den Muskelaufbau und spielt daher eine entscheidende Rolle für den Erfolg beim Krafttraining. Da ich mich für Krafttraining interessiere und meine Fitnessziele erreichen möchte, ist es wichtig, die Bedeutung von Proteinprodukten zu verstehen, um meine Trainingsziele effektiv zu unterstützen. Die richtige Ernährung, einschließlich des Konsums ausreichender Proteine, kann sich positiv auf kognitive Funktionen auswirken, was sich wiederum auf meine Lernfähigkeiten und meine Leistung in der Schule auswirken kann. Dazu kommt, dass Proteine zur Reparatur und Erholung der Muskeln nach dem Training beitragen. Das wiederum bedeutet, dass ich Erholungsphasen besser nutzen kann, um meine Leistungsfähigkeit beim Training und in der Schule aufrechtzuerhalten. Ein Verständnis der Bedeutung von Proteinprodukten kann mir helfen, realistische und effektive Zieles setzen und zu erreichen, indem ich meine Ernährung entsprechend anpasse.
----
==='''Das ERM am Beispiel der Bedeutung von Proteinprodukten für das Krafttraining '''===
[[Bild:Em.sch_Image.png(ES).png]]
----
==='''Transformation in das Relationsmodell'''===
[[Bild:Em.sch_Image.png(ES-1).png]]
----
<code id="65e181fcc7ddd">CREATE TABLE IF NOT EXISTS Unternehmen (
UnternehmensID INTEGER PRIMARY KEY,
Name VARCHAR(255)
);
INSERT INTO Unternehmen (UnternehmensID, Name) VALUES
(1,'MyProtein'),
(2,'Optimum Nutrition'),
(3,'ESN'),
(4,'Scitec Nutrition'),
(5,'Body Attack'),
(6,'Weider'),
(7,'Ironmaxx'),
(8,'All Stars'),
(9,'Biotech USA'),
(10,'Peak'),
(11,'Dymatize'),
(12,'Nutri-Plus'),
(13,'Profuel'),
(14,'Mammut Nutrition'),
(15,'Powerbar'),
(16,'Olimp Sport Nutrition'),
(17,'Bodylab24'),
(18,'Multipower'),
(19,'Nutrend'),
(20,'Layenberger'),
(21,'Foodspring'),
(22,'BSN'),
(23,'XXL Nutrition'),
(24,'nu3'),
(25,'WYLD'),
(26,'Wahbio'),
(27,'Frey Nutrition');
CREATE TABLE IF NOT EXISTS Proteinpulver (
PulverID INTEGER PRIMARY KEY,
UnternehmensID INT,
Produkt VARCHAR(255),
Proteingehalt_pro_100g INT,
Geschmacksrichtungen TEXT,
FOREIGN KEY (UnternehmensID) REFERENCES Unternehmen (UnternehmensID)
);
INSERT INTO Proteinpulver (PulverID, UnternehmensID, Produkt, Proteingehalt_pro_100g, Geschmacksrichtungen) VALUES
(01, 1, 'Impact Whey Protein', 82, 'Schokolade, Vanille, Erdbeere, Banane, Cookies and Cream'),
(02, 2, 'Gold Standard Whey', 82, 'Double Rich Chocolate, Vanilla Ice Cream, Extreme Milk Chocolate, French Vanilla Creme, Mocha Cappuccino'),
(03, 3, 'Designer Whey', 82, 'Chocolate, Vanilla, Strawberry, Cookies & Cream, Banana'),
(04, 4, '100% Whey Protein', 82, 'Chocolate, Vanilla, Strawberry, Cappuccino, Banana'),
(05, 5, 'Power Protein 90', 82, 'Schokolade, Vanille, Erdbeere, Banane, Cookies and Cream'),
(06, 6, 'Gold Whey', 82, 'Schokolade, Vanille, Erdbeere, Banane, Cookies and Cream'),
(07, 7, '100% Whey Protein', 82, 'Schokolade, Vanille, Erdbeere, Banane, Cookies and Cream'),
(08, 8, '100% Whey Protein', 82, 'Schokolade, Vanille, Erdbeere, Banane, Cookies and Cream'),
(09, 9, 'Iso Whey Zero', 79, 'Chocolate, Vanilla, Strawberry, Cappuccino, Banana'),
(010, 10, 'Whey Protein', 80, 'Schokolade, Vanille, Erdbeere, Banane, Cookies & Cream'),
(011, 11, 'Elite Whey Protein', 80, 'Rich Chocolate, Vanilla Cupcake, Strawberry Blast, Gourmet Vanilla, Banana'),
(012, 12, 'Whey Protein', 80, 'Schokolade, Vanille, Erdbeere, Banane, Cookies and Cream'),
(013, 13, 'Whey Protein', 80, 'Schokolade, Vanille, Erdbeere, Banane, Cookies and Cream'),
(014, 14, 'Formel 90 Protein', 80, 'Schokolade, Vanille, Erdbeere, Banane, Cookies and Cream'),
(015, 15, 'Protein Plus', 80, 'Schokolade, Vanille, Erdbeere, Banane, Cookies and Cream'),
(016, 16, 'Whey Protein Complex 100%', 80, 'Schokolade, Vanille, Erdbeere, Banane, Cookies and Cream'),
(017, 17, 'Protein 80', 80, 'Schokolade, Vanille, Erdbeere, Banane, Cookies and Cream'),
(018, 18, '100% Pure Whey Protein', 80, 'Schokolade, Vanille, Erdbeere, Banane, Cookies and Cream'),
(019, 19, '100% Whey Protein', 80, 'Schokolade, Vanille, Erdbeere, Banane, Cookies and Cream'),
(020, 20, 'LowCarb.One 3K Protein', 80, 'Schokolade, Vanille, Erdbeere, Banane, Cookies and Cream'),
(021, 21, 'Whey Protein', 80, 'Schokolade, Vanille, Erdbeere, Banane, Cookies and Cream');
CREATE TABLE Proteinriegel(
RiegelID INTEGER PRIMARY KEY,
UnternehmensID INT,
Produkt VARCHAR(255),
Eiweissgehalt_pro_Riegel INT,
Fettgehalt_pro_Riegel INT,
Zuckergehalt_pro_Riegel INT,
Geschmacksrichtungen TEXT,
FOREIGN KEY (UnternehmensID) REFERENCES Unternehmen (UnternehmensID)
);
INSERT INTO Proteinriegel (RiegelID, UnternehmensID, Produkt, Eiweissgehalt_pro_Riegel, Fettgehalt_pro_Riegel, Zuckergehalt_pro_Riegel, Geschmacksrichtungen) VALUES
(01, 6, 'Weider 40% Protein Bar', 20, 6, 1, 'Verschiedene'),
(02, 7, 'IronMaxx Protein Riegel', 30, 6, 1, 'Verschiedene'),
(03, 8, 'All Stars Clean Bar', 20, 4, 1, 'Verschiedene'),
(04, 9, 'Biotech USA Protein Bar', 20, 4, 1, 'Verschiedene'),
(05, 10, 'Peak Protein Bar', 30, 6, 1, 'Verschiedene'),
(06, 11, 'Dymatize Elite Protein Bar', 20, 5, 1, 'Verschiedene'),
(07, 12, 'Nutri-Plus Shape & Shake Bar', 30, 7, 1, 'Verschiedene'),
(08, 13, 'Profuel Protein Bar', 20, 5, 1, 'Verschiedene'),
(09, 14, 'Mammut Formel 90 Protein Bar', 30, 6, 1, 'Verschiedene'),
(010, 15, 'PowerBar Protein Plus Bar', 30, 6, 1, 'Verschiedene'),
(011, 16, 'Olimp Protein Bar', 20, 5, 1, 'Verschiedene'),
(012, 17, 'Bodylab24 Protein Bar', 20, 5, 1, 'Verschiedene'),
(013, 18, 'Multipower 53% Protein Bar', 20, 5, 1, 'Verschiedene'),
(014, 19, 'Nutrend Deluxe Protein Bar', 20, 5, 1, 'Verschiedene'),
(015, 20, 'Layenberger Low Carb Proteinriegel', 45, 15, 1, 'Verschiedene'),
(016, 21, 'Foodspring Protein Bar', 25, 6, 1, 'Verschiedene'),
(017, 22, 'BSN Protein Crisp Bar', 20, 6, 1, 'Verschiedene'),
(018, 23, 'XXL Nutrition Protein Bar', 45, 15, 1, 'Verschiedene'),
(019, 24, 'nu3 Protein Bar', 20, 5, 1, 'Verschiedene'),
(020, 25, 'WYLD Protein Bar', 20, 5, 1, 'Verschiedene'),
(021, 26, 'Wahbio Protein Bar', 20, 5, 1, 'Verschiedene'),
(022, 27, 'Frey Nutrition Protein Bar', 20, 5, 1, 'Verschiedene');
</code>
<run id="65e181fcc7e32">select * from Unternehmen;
select PulverID, Proteingehalt_pro_100g, Geschmacksrichtungen From Proteinpulver;
select Produkt, Eiweissgehalt_pro_Riegel, Fettgehalt_pro_Riegel, Zuckergehalt_pro_Riegel from Proteinriegel;
SELECT * FROM Proteinriegel WHERE Eiweissgehalt_pro_Riegel > 30 AND Fettgehalt_pro_Riegel < 20;
SELECT Proteinpulver.Produkt, Proteinpulver.Proteingehalt_pro_100g, Proteinriegel.Produkt, Proteinriegel.Eiweissgehalt_pro_Riegel
FROM Proteinpulver
JOIN Proteinriegel ON Proteinpulver.PulverID = Proteinriegel.RiegelID;
</run>
----
==='''Begründung des Aufbaus'''===
Die Entitäten und Attribute in diesem Datenbankmodell sind wie folgt strukturiert:
Unternehmen (Entität): Diese Entität repräsentiert die Unternehmen, die Produkte herstellen. Die Attribute umfassen die UnternehmensID als Primärschlüssel zur eindeutigen Identifizierung und Name.
Begründung: Die Attribute wurden gewählt, um wichtige Informationen über jedes Unternehmen zu speichern, die für die Verwaltung und Analyse der Produkte relevant sind.
Proteinpulver (Entität): Diese Entität repräsentiert die verschiedenen Protein-Pulverprodukte. Die Attribute umfassen die PulverID als Primärschlüssel zur eindeutigen Identifizierung, die UnternehmensID als Fremdschlüssel zur Verknüpfung mit der Entität Unternehmen, Produkt, Proteingehalt_pro_100g und Geschmacksrichtungen.
Begründung: Die Attribute wurden gewählt, um spezifische Informationen über Protein-Pulverprodukte zu speichern, einschließlich des Herstellers, des Produktnamens und des Proteingehalts.
Proteinriegel (Entität): Diese Entität repräsentiert die verschiedenen Protein-Riegelprodukte. Die Attribute umfassen die RiegelID als Primärschlüssel zur eindeutigen Identifizierung, Name, Eiweissgehalt_pro_Riegel, Fettgehalt_pro_Riegel, Zuckergehalt_pro_Riegel, Geschmacksrichtungen und die UnternehmensID als Fremdschlüssel zur Verknüpfung mit der Entität Unternehmen.
Begründung: Die Attribute wurden gewählt, um spezifische Informationen über Protein-Riegelprodukte zu speichern, einschließlich des Herstellers und der Nährwertinformationen.
Die Beziehungen zwischen den Entitäten wurden so festgelegt, dass die Beziehungen zwischen den verschiedenen Elementen das Datenmodell definieren und strukturieren.
Jedes Proteinpulver und jeder Proteinriegel gehört zu einem bestimmten Unternehmen, was eine 1:n Beziehung zwischen Proteinpulver/Proteinriegel und Unternehmen darstellt. Dieses Unternehmen kann mehrere Proteinpulver und Proteinriegel herstellen und verkaufen.
----
==='''kritische Reflexion zu Modellierung und Umsetzung'''===
Kritische Reflexion zu Modellierung und Umsetzung der Datenbank zum Thema Proteinprodukte für Krafttraining
Bei der Entwicklung der Datenbank für Proteinprodukte stand ich vor der Herausforderung, eine Struktur zu schaffen, die sowohl umfangreich als auch flexibel genug ist, um verschiedene Produkte und deren Eigenschaften zu katalogisieren. Die Modellierung der Datenbank erforderte ein tiefes Verständnis für die Beziehungen zwischen Produkten, Herstellern und Nährwertinformationen.
Modellierung:
Ich habe die Daten in zwei Haupttabellen strukturiert: Proteinpulver und Hersteller. Diese Aufteilung erlaubte es, die Daten zu normalisieren, indem Duplikationen vermieden und die Datenintegrität durch Fremdschlüsselbeziehungen gewahrt wurden. Rückblickend könnte die Trennung zwischen Produkttypen (Pulver und Riegel) noch klarer modelliert werden, um zukünftige Erweiterungen der Datenbank zu erleichtern.
Umsetzung:
Die Implementierung begann mit der Erstellung von SQL-Tabellen und dem Einfügen der Daten. Während dieses Prozesses stieß ich auf Fehler bei der Dateneingabe, insbesondere bei der Konsistenz der Einheiten. Ursprünglich speicherte ich den Proteingehalt als VARCHAR, was später zu einem INT geändert wurde, um Berechnungen zu ermöglichen. Dies zeigte die Bedeutung der richtigen Datentypwahl auf.
Herausforderungen:
Die größte Herausforderung war die Verwaltung der Datenkonsistenz, insbesondere bei der Formatierung der INSERT INTO-Statements. Fehlermeldungen wie "all VALUES must have the same number of terms" führten zu einer kritischen Überprüfung und Korrektur der SQL-Befehle, was mein Verständnis für SQL-Syntax und Fehlerbehebung verbesserte.
Lernerfahrungen:
Durch dieses Projekt habe ich gelernt, wie essentiell die Planungsphase für das Datenbankdesign ist. Ein klares Verständnis der Anforderungen und ein gut durchdachter Entwurf können viele Probleme in späteren Phasen verhindern. Darüber hinaus habe ich meine SQL-Fähigkeiten verbessert und mehr über Datenintegritätspraktiken erfahren.
Lehrreiches Feedback:
Feedback und Tests halfen mir, die Wichtigkeit von Datenintegrität zu verstehen und inspirierte mich, Constraints und Indexe in meine Tabellen einzuführen. Mitschüler gaben wertvolle Hinweise zur Benutzerfreundlichkeit der Datenbank, was mich dazu veranlasste, die Geschmacksrichtungen als TEXT statt als VARCHAR zu definieren, um längere Listen zu unterstützen.
----
==='''Quellen'''===
- https://erdplus.com
- https://www.oracle.com/de/database/what-is-database/
- https://www.akademie-sport-gesundheit.de/magazin/krafttraining.html
- https://www.iglo.de/ernaehrung/green-cuisine/protein
- https://www.bing.com/search