PMG2224 1/DB Beleg/Walter

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>SQL</language>
= Datenbank-Projekt: Kommerzieller Weltraumflug =

== Ziel der Datenbank ==

== Modellierung in einem ERM ==

[[Bild:Walter_ERM_3_(1).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_RM_sjd.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 ==

<run id="65bc9f20a0b83">

SELECT * FROM Unternehmen;
SELECT * FROM Startanbieter;
SELECT * FROM Rakete;
SELECT * FROM Nutzlast;

</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 jedoch in ihren verschiedenen Ausführungen nie.

==== 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. Dies 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 == 

- mehrere Unternehmen können an der gleichen Nutzlast zusammenarbeiten

- es gibt Rideshare-Missionen, bei denen sich Unternehmen den Preis der Rakete aufteilen

- mehrere Startanbieter können meist sogar länderübergreifend an einer Rakete teilhaben

== Quellen und Tools ==

ERDplus 

Word 2021