PMG2224 1/DB Beleg/Walter
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>SQL</language>
= Datenbank-Projekt: Kommerzieller Weltraumflug =
== Ziel der Datenbank ==
In der heutigen Zeit gewinnt der kommerzielle Sektor in der Raumfahrt eine zunehmend wichtige Rolle. Während früher Raumfahrtaktivitäten hauptsächlich von Regierungen und staatlich finanzierten Agenturen durchgeführt wurden, treiben nun private Startanbieter die Innovation voran. Diese Startanbieter investieren in die Entwicklung fortschrittlicher Technologien und Raumfahrzeuge, um kommerzielle Raumflüge, Satellitenstarts und sogar die Besiedlung anderer Himmelskörper zu ermöglichen.
Die wachsende Bedeutung des kommerziellen Sektors in der Raumfahrt bringt eine Vielzahl von Vorteilen mit sich. Zum einen beschleunigt der Wettbewerb zwischen verschiedenen Startanbietern den technologischen Fortschritt und senkt die Kosten für den Zugang zum Weltraum. Darüber hinaus eröffnen sich durch private Investitionen in die Raumfahrt neue wirtschaftliche Möglichkeiten und Geschäftsmodelle, von der Satellitenkommunikation über die Erdbeobachtung bis hin zu Weltraumtourismus und Ressourcengewinnung im All.
Um einen Einblick in dieses interessante Thema zu gewähren, habe ich mich für einen Datenbank-Beleg mit dem Titel "Kommerzieller Weltraumflug" entschieden. In diesem soll das grobe Geschäftsmodell des kommerziellen Sektors in der Raumfahrt vereinfacht dargestellt werden.
== Modellierung in einem ERM ==
[[Bild:Walter_Walter_ERM_376.jpg]]
== Einheiten von physikalischen Größen ==
Manche Attributnamen unterscheiden sich zwischen den verschiedenen Darstellungsformen leicht.
Im ERM finden sich die Attribute "Schub", "Durchmesser", "Höhe", "Preis" und "Masse". Diese Merkmale setzen sich aus einem '''Zahlenwert''' und einer '''Einheit''' zusammen.
Um eine Verwendung des Datentyps '''VARCHAR''' zu vermeiden, und stattdessen den Datentyp '''INT''' und '''FLOAT''' verwenden zu können, werden diese Attributnamen im RM und in der Datenbank leicht angepasst. Im Namen ist nun gleichzeitig die '''Einheit enthalten'''.
- "Schub" wird zu "Schub_in_kN"
- "Durchmesser" wird zu "Durchmesser_in_m"
- "Höhe" wird zu "Höhe_in_m"
- "Preis" wird zu "Preis_in_USD"
- "Masse" wird zu "Masse_in_kg"
Diese Anpassung ermöglicht die Verwendung des Datentyps INT und FLOAT und somit '''Vergleichsabfragen''' in diesen Datenfeldern.
Im ERM werden die vereinfachten Namen ohne Einheit jedoch beibehalten, um eine '''verbesserte Anschaulichkeit''' und '''Übersichtlichkeit''' zu gewährleisten.
== Transformation in das Relationenmodell ==
[[Bild:Walter_Walter_RM_345.jpg]]
== Erstellen der DB ==
<code id="65bc9f20a0b3e">
CREATE TABLE Unternehmen(
FID int(10),
Name varchar(30),
CEO varchar(30),
PRIMARY KEY (FID)
);
CREATE TABLE Startanbieter(
SID int(10),
Name varchar(30),
CEO varchar(30),
PRIMARY KEY (SID)
);
CREATE TABLE Rakete(
RID int(10),
Name varchar(20),
Schub_in_kN int(20),
Treibstoff varchar(20),
Durchmesser_in_m float(20),
Höhe_in_m int(20),
Preis_in_USD int(20),
FID int(10),
SID int(10),
PRIMARY KEY (RID),
FOREIGN KEY (FID) REFERENCES Unternehmen(FID),
FOREIGN KEY (SID) REFERENCES Startanbieter(SID)
);
CREATE TABLE Nutzlast(
NID int(10),
Name varchar(30),
Masse_in_kg int(20),
Orbit varchar(20),
FID int(10),
RID int(10),
PRIMARY KEY (NID),
FOREIGN KEY (FID) REFERENCES Unternehmen(FID),
FOREIGN KEY (RID) REFERENCES Rakete(RID)
);
INSERT INTO Unternehmen VALUES (1, 'Eutelsat', 'Eva Berneke');
INSERT INTO Unternehmen VALUES (2, 'Sirius XM Holdings', 'Jennifer Witz');
INSERT INTO Unternehmen VALUES (3, 'Intelsat', 'David Wajsgras');
INSERT INTO Unternehmen VALUES (4, 'Axiom Space', 'Michael Suffredini');
INSERT INTO Unternehmen VALUES (5, 'OHB System', 'Marco Fuchs');
INSERT INTO Unternehmen VALUES (6, 'Globalstar', 'Paul Jacobs');
INSERT INTO Unternehmen VALUES (7, 'SES', 'Ruy Pinto');
INSERT INTO Startanbieter VALUES (1, 'ArianeGroup', 'Martin Sion');
INSERT INTO Startanbieter VALUES (2, 'SpaceX', 'Elon Musk');
INSERT INTO Startanbieter VALUES (3, 'United Launch Alliance', 'Tory Bruno');
INSERT INTO Rakete VALUES (1, 'Ariane 5', 9391, 'Hydrolox', 4.6, 53, 151000000, 1, 1);
INSERT INTO Rakete VALUES (2, 'Ariane 5', 9679, 'Hydrolox', 4.6, 53, 154000000, 1, 1);
INSERT INTO Rakete VALUES (3, 'Ariane 5', 9477, 'Hydrolox', 4.6, 53, 152000000, 7, 1);
INSERT INTO Rakete VALUES (4, 'Ariane 6', 15422, 'Hydrolox', 5.4, 63, 115000000, 3, 1);
INSERT INTO Rakete VALUES (5, 'Ariane 6', 15653, 'Hydrolox', 5.4, 63, 117000000, 3, 1);
INSERT INTO Rakete VALUES (6, 'Falcon 9', 7571, 'Kerolox', 5.2, 70, 56000000, 4, 2);
INSERT INTO Rakete VALUES (7, 'Falcon 9', 7613, 'Kerolox', 5.2, 70, 58000000, 5, 2);
INSERT INTO Rakete VALUES (8, 'Falcon 9', 7642, 'Kerolox', 5.2, 70, 61000000, 6, 2);
INSERT INTO Rakete VALUES (9, 'Falcon 9', 7794, 'Kerolox', 5.2, 70, 64000000, 2, 2);
INSERT INTO Rakete VALUES (10, 'Falcon Heavy', 22820, 'Kerolox', 5.2, 70, 97000000, 1, 2);
INSERT INTO Rakete VALUES (11, 'Atlas V', 8342, 'Kerolox', 4.0, 58, 109000000, 2, 3);
INSERT INTO Rakete VALUES (12, 'Atlas V', 9474, 'Kerolox', 4.0, 58, 123000000, 6, 3);
INSERT INTO Rakete VALUES (13, 'Atlas V', 10749, 'Kerolox', 5.4, 58, 134000000, 7, 3);
INSERT INTO Rakete VALUES (14, 'Atlas V', 10812, 'Kerolox', 5.4, 58, 136000000, 5, 3);
INSERT INTO Rakete VALUES (15, 'Vulcan Centaur', 14215, 'Methalox', 5.4, 62, 118000000, 5, 3);
INSERT INTO Rakete VALUES (16, 'Vulcan Centaur', 18637, 'Methalox', 5.4, 62, 121000000, 4, 3);
INSERT INTO Nutzlast VALUES (1, 'Eutelsat Konnect', 6976, 'GTO', 1, 1);
INSERT INTO Nutzlast VALUES (2, 'Eutelsat Quantum 1', 5515, 'GTO', 1, 2);
INSERT INTO Nutzlast VALUES (3, 'Eutelsat Quantum 2', 5134, 'GTO', 1, 2);
INSERT INTO Nutzlast VALUES (4, 'SES-17', 3264, 'GTO', 7, 3);
INSERT INTO Nutzlast VALUES (5, 'SES-18', 3532, 'GTO', 7, 3);
INSERT INTO Nutzlast VALUES (6, 'SES-19', 3194, 'GTO', 7, 3);
INSERT INTO Nutzlast VALUES (7, 'Intelsat-41', 9982, 'GTO', 3, 4);
INSERT INTO Nutzlast VALUES (8, 'Intelsat-44', 4219, 'GTO', 3, 5);
INSERT INTO Nutzlast VALUES (9, 'Intelsat-45', 4331, 'GTO', 3, 5);
INSERT INTO Nutzlast VALUES (10, 'Axiom-1', 13000, 'LEO', 4, 6);
INSERT INTO Nutzlast VALUES (11, 'SARah 1', 4102, 'SSO', 5, 7);
INSERT INTO Nutzlast VALUES (12, 'Globalstar-2 M087', 700, 'LEO', 6, 8);
INSERT INTO Nutzlast VALUES (13, 'SXM-7', 5500, 'GTO', 2, 9);
INSERT INTO Nutzlast VALUES (14, 'SXM-8', 5450, 'GTO', 2, 9);
INSERT INTO Nutzlast VALUES (15, 'Eutelsat 25B', 15492, 'GTO', 1, 10);
INSERT INTO Nutzlast VALUES (16, 'SXM-3', 6307, 'GTO', 2, 11);
INSERT INTO Nutzlast VALUES (17, 'Globalstar-3 M093', 2070, 'LEO', 6, 12);
INSERT INTO Nutzlast VALUES (18, 'Globalstar-4 M094', 2120, 'LEO', 6, 12);
INSERT INTO Nutzlast VALUES (19, 'SES-HAL R4', 4296, 'GTO', 7, 13);
INSERT INTO Nutzlast VALUES (20, 'SARah 2', 3260, 'SSO', 5, 14);
INSERT INTO Nutzlast VALUES (21, 'SARah 3', 4687, 'SSO', 5, 15);
INSERT INTO Nutzlast VALUES (22, 'LDPE-1', 6555, 'SSO', 5, 15);
INSERT INTO Nutzlast VALUES (23, 'Axiom-2', 12540, 'LEO', 4, 16);
</code>
== Erstellen von verschiedenen Abfragen ==
==== Abfragen von Treibstoffarten und Orbit ====
<run id="65bc9f20a0b83">
SELECT DISTINCT Name FROM Rakete WHERE Treibstoff = 'Kerolox';
-- Alle Raketenmodelle anzeigen, welche mit der Treibstoffkombination "Kerolox" betrieben werden.
SELECT DISTINCT Name FROM Rakete WHERE Treibstoff = 'Hydrolox';
-- Alle Raketenmodelle anzeigen, welche mit der Treibstoffkombination "Hydrolox" betrieben werden.
SELECT Name FROM Nutzlast WHERE Orbit = 'GTO';
-- Den Namen aller Nutzlasten anzeigen, welche in einen "Geostationary Transfer Orbit" transportiert wurden.
</run>
==== Vergleichsabfragen ====
<run id="65e189ec70b39">
SELECT RID, Name, Schub_in_kN FROM Rakete WHERE Schub_in_kN > 10000 ORDER BY Schub_in_kN DESC;
-- Den Namen, die RID und den Schub aller Raketen anzeigen, welche einen Schub über 10000 kN besitzen.
-- Die Liste wird dabei nach Schub absteigend geordnet.
SELECT RID, Name, Preis_in_USD FROM Rakete WHERE Preis_in_USD < 100000000 ORDER BY Preis_in_USD ASC;
-- Den Namen, die RID und den Preis aller Raketen anzeigen, welche günstiger als 100 Mio. USD sind.
-- Die Liste wird dabei nach Preis aufsteigend geordnet, sodass die günstigste Rakete oben steht.
SELECT RID, Name, Masse_in_kg FROM Nutzlast WHERE Masse_in_kg > 6000 ORDER BY Masse_in_kg DESC;
-- Den Namen, die NID und die Masse aller Nutzlasten anzeigen, welche mehr als 6000 kg wiegen.
-- Die Liste wird dabei absteigend nach Masse geordnet.
</run>
==== JOIN-Abfragen ====
<run id="65e189ec70b97">
SELECT RID, Rakete.Name FROM Rakete, Unternehmen WHERE Rakete.FID = Unternehmen.FID AND Unternehmen.Name = 'Eutelsat';
-- Die RID und den Namen aller Raketen anzeigen, welche vom Unternehmen "Eutelsat" gekauft wurden.
SELECT NID, Nutzlast.Name FROM Nutzlast, Unternehmen WHERE Nutzlast.FID = Unternehmen.FID AND Unternehmen.Name = 'Globalstar';
-- Die NID und den Namen aller Nutzlasten anzeigen, welche vom Unternehmen "Globalstar" hergestellt wurden.
</run>
== Begriffserklärung und Kardinalitäten ==
==== Rakete ====
Hierbei wird eine '''einzelne Rakete''' betrachtet, welcher eine einzigarte R-ID zugeordnet ist.
Eine Rakete kann '''mehrere Nutzlasten''' transportieren, wenn diese ein bestimmtes Gesamtvolumen und eine bestimmte Gesamtmasse in Summe nicht überschreiten. Diese Werte unterscheiden sich je nach Rakete und werden in diesem Modell vernachlässigt. Es wird einfach davon ausgegangen, dass eine Rakete mehrere Nutzlasten transportieren kann.
Mehrere Raketen können den gleichen Namen haben. Dabei wird das Raketenmodell beschrieben, welches bei Raketen mit verschiedenen R-IDs gleich sein kann. Beispielsweise können 10 Raketen des Modells "Ariane 5" produziert werden - sie besitzen unterschiedliche R-IDs, haben jedoch den gleichen Namen. Raketen mit gleichem Namen können sich in Schub, Höhe, Durchmesser und Preis unterscheiden, jedoch nicht in Treibstoff. Dies liegt darin begründet, dass manche Raketen unterschiedliche Versionen besitzen, welche je nach Mission variieren. Beispielsweise werden zusätzliche Festtreibstoff-Booster hinzugefügt oder eine andere Verkleidung gewählt, wodurch sich Schub, Höhe und Durchmesser und somit Preis ändern können.
Der Treibstoff einer Rakete ändert sich in ihren verschiedenen Ausführungen nie. Deswegen befindet sich meine Datenbank auch nur in der '''ENF'''. Um eine weitere Normalisierung vorzunehmen, müsste eine '''zusätzliche Tabelle "Raketenmodell"''' erstellt werden. In dieser wäre dem Primärschlüssel '''"Raketenmodell.Name" der jeweilige Treibstoff zugeordnet'''. Der Primärschlüssel in "Raketenmodell" wäre dementsprechend ein Fremdschlüssel in der Tabelle "Rakete".
==== Unternehmen ====
Ein Unternehmen, welches eine Nutzlast herstellt und diese in einen Orbit befördern will. Dazu muss eine Rakete gekauft werden, da es diese nicht selbst herstellen kann. Dabei handelt es sich häufig um Telekommunikationsunternehmen.
Es wird in diesen Modellen davon ausgegangen, dass eine Rakete ausschließlich an ein einzelnes Unternehmen verkauft werden kann. Ein Unternehmen kann jedoch mehrere Raketen kaufen, deswegen liegt hier eine '''1:n-Beziehung''' vor.
Zudem wird vorausgesetzt, dass jede Nutzlast nur von einem Unternehmen hergestellt wird und keine Zusammenarbeit zwischen Unternehmen an einer gemeinsamen Nutzlast stattfindet. Ein Unternehmen kann trotzdem mehrere eigene Nutzlasten herstellen, weshalb auch hier eine '''1:n-Beziehung''' vorliegt.
==== Startanbieter ====
Ein Startanbieter produziert Raketen, welche von Unternehmen gekauft werden können. Ein Startanbieter kann mehrere Raketen produzieren, während eine Rakete jedoch nicht von mehreren Startanbietern hergestellt werden kann. Es gibt also in diesen Modellen keine Zusammenarbeit zwischen Startanbietern. Somit liegt eine '''1:n-Beziehung''' vor.
==== Nutzlast ====
Die Nutzlast ist meist ein Satellit, ein Teleskop oder eine Lieferung an eine Raumstation. Es ist wichtig zu beachten, dass verschiedene N-IDs nicht verschiedenen Nutzlastmodellen entsprechen, sondern einzelnen Nutzlasten, welche physisch nur einmal existieren. Deswegen kann eine Nutzlast auch nur von einer Rakete transportiert werden.
Es liegt eine '''1:n-Beziehung''' vor.
Nutzlasten, welche landungsfähig sind (Bsp.: "Dream Chaser" von Sierra Space) werden vernachlässigt, da diese nach einer erfolgreichen Mission erneut starten können. Die Vernachlässigung landungsfähiger Nutzlasten schließt eine n:m-Beziehung zwischen "Nutzlast" und "Rakete" aus.
==== Durchmesser ====
Der Durchmesser der Verkleidung, in welcher sich die Nutzlast befindet.
==== Höhe ====
Hierbei ist die Höhe der Rakete beim Start gemeint, vom unteren Ende der ersten Stufe bis zum höchsten Punkt der Verkleidung. Das Attribut "Höhe" darf nicht mit der Höhe der Rakete über dem Meeresspiegel während des Flugs verwechselt werden.
==== Treibstoff ====
Die Flüssigtreibstoff-Kombination, mit welcher die Triebwerke der ersten Stufe betrieben werden. Festtreibstoff-Booster und weitere Treibstoffarten der zweiten und evtl. dritten Stufe werden nicht einbezogen.
Die Endung -lox steht für "Liquid Oxygen", also Flüssigsauerstoff.
- ''Hydrolox'' ist eine Kombination aus flüssigem Wasserstoff und Sauerstoff
- ''Kerolox'' ist eine Kombination aus Kerosin und flüssigem Sauerstoff
- ''Methalox'' ist eine Kombination aus flüssigem Methan und Sauerstoff
==== Orbit ====
Die Umlaufbahn, in welche die Nutzlast befördert werden soll.
- ''GTO'' steht für ''Geostationary Transfer Orbit''. Der Satellit umkreist die Erde synchron zur Erddrehung.
- ''LEO'' bedeutet ''Low Earth Orbit''. Dabei handelt es sich um einen sehr niedrigen Orbit. Die ISS befindet sich in einem LEO.
- ''SSO'' steht für ''Sun-synchronous Orbit'' und wird vor allem für Wettersatelliten verwendet.
== Kritische Reflexion zu Modellierung und Umsetzung ==
==== Zusammenarbeit zwischen Unternehmen ====
Oft arbeiten mehrere Unternehmen an der gleichen Nutzlast zusammen. Des Weiteren gibt es meist eine Vielzahl an Unternehmen, welche einzelne Teile produzieren und diese dann an das die Nutzlast herstellende Unternehmen verkaufen. Außerdem können für die Herstellung spezielle Einrichtungen oder Maschinen notwendig sein, welche von anderen Unternehmen gemietet werden müssen. Es sind also meist viele Unternehmen an der Herstellung einer Nutzlast beteiligt.
Diese komplexen Zusammenhänge werden in meinem Datenbank-Projekt stark vereinfacht. Es wird angenommen, dass nur ein Unternehmen an der Herstellung einer Nutzlast beteiligt ist.
==== Rideshare-Missionen ====
Sogenannte "Rideshare-Missionen" haben in den letzten Jahren stark an Bedeutung gewonnen.
Rideshare-Missionen bieten die Möglichkeit, die Kosten pro Kilogramm Nutzlast erheblich zu senken, indem mehrere Nutzlasten auf einer einzigen Raketenmission kombiniert werden. Dies ermöglicht es kleineren Unternehmen Zugang zum Weltraum zu erhalten, ohne die hohen Kosten einer eigenen Raketenmission tragen zu müssen. Somit können sich auch mehrere Unternehmen den Preis einer Rakete teilen.
Dieser Umstand wird in meinem Datenbank-Projekt vernachlässigt. Stattdessen wird angenommen, dass eine Rakete nur von einem Unternehmen gekauft werden kann.
==== Landungsfähige Nutzlasten ====
Landungsfähige Nutzlasten sind Satelliten oder andere Raumfahrzeuge, die so konstruiert sind, dass sie nach ihrer Mission sicher auf der Erde landen können, anstatt im Weltraum zu verbleiben oder kontrolliert zu verglühen. Diese Art von Nutzlasten ermöglicht es, wertvolle Ausrüstung oder Proben von Missionen im Weltraum zurückzubringen, was eine Reihe von praktischen Vorteilen bietet.
Da landungsfähige Nutzlasten mehrmals und von verschiedenen Raketen transportiert werden können, werden solche Nutzlasten vernachlässigt, um die daraus resultierende immense Komplexität der Datenbank zu vermeiden. Es wird davon ausgegangen, dass jegliche Nutzlast nur einmal in eine Umlaufbahn transportiert werden kann.
==== Zusammenarbeit zwischen Startanbietern ====
Für einen Startanbieter ist es meist nicht möglich, alle Teile einer Rakete selbst herzustellen. Deswegen sind meist mehrere Startanbieter und weitere Unternehmen an der Herstellung einer Rakete beteiligt. Zudem gibt es Startanbieter, welche ein Zusammenschluss aus mehreren kleinen Startanbietern sind.
Dieser Umstand wird mit der Annahme, dass nur ein Startanbieter an der Herstellung einer Rakete beteiligt ist, stark vereinfacht.
==== Herstellungsprozess einer Rakete ====
Raketen müssen äußerst präzise und zuverlässig sein, um ihre Nutzlast sicher in den Weltraum zu transportieren. Jeder Teil der Rakete muss mit sehr engen Toleranzen hergestellt werden, um sicherzustellen, dass sie ordnungsgemäß funktioniert und mögliche Probleme vermieden werden. Eine Rakete besteht zudem aus einer Vielzahl von Komponenten, darunter Triebwerke, Treibstofftanks, elektronische Systeme, Steuerungssysteme, Strukturteile und vieles mehr. Jede dieser Komponenten erfordert spezialisierte Herstellungsverfahren und Materialien. Im Zuge dessen ist der Herstellungsprozess einer Rakete sehr komplex und erfordert eine Vielzahl an verschiedenen Schritten.
Dieser lange und komplexe Herstellungsprozess wird in einem Schritt zusammengefasst, da es nicht möglich ist, ihn in einer angemessenen Zeitspanne realitätsnah darzustellen.
== Quellen und Tools ==
ERDplus
Word 2021
[https://en.wikipedia.org/wiki/Vulcan_Centaur Vulcan Centaur]
[https://en.wikipedia.org/wiki/ArianeGroup ArianeGroup]
[https://en.wikipedia.org/wiki/List_of_Ariane_launches_(2020%E2%80%932029) Liste aller Ariane-Missionen]
[https://en.wikipedia.org/wiki/List_of_Falcon_9_and_Falcon_Heavy_launches Liste aller Falcon-Missionen]