PMG2426 1/DB Beleg/Sarah

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>SQL</language>
=='''''Musik-Streaming-Dienst-Datenbank'''''==

==='' Ziel der Datenbank ''===
<pre>
Das Ziel dieser Datenbank ist es, die notwendigen Daten für einen Musik-Streaming-Dienst oder eine Musik-App zu verwalten und zu organisieren.
</pre>

===''ERM''===
[[Bild:SaLng_Playlist_!.png|800px]]

         Kardinalitäten: 
         * 1:n (Eins zu Viele) &rarr; '''Ein''' Nutzer erstellt '''viele''' Playlists, '''viele''' Playlists können von '''einem''' Nutzer erstellt wurden sein
         * m:n (Viele zu Viele) &rarr; Eine Playlist enthält '''viele''' Songs, Ein Song kommt in '''vielen''' Playlists vor
                                &rarr; Ein Nutzer hört '''viele''' Songs, Ein Song wird von '''vielen''' Nutzern gehört
 
===''Transformation in RM''===

{| border="1"
|-
|'''Nutzer'''
|-
|''Nutzer_ID'' (Zahl,20)
|-
|Name (Text,20)
|-
|Vorname (Text,20)
|-
|Geb_datum (Zahl,10)
|-
|Email (Text,30)
|}


{| border="1"
|-
|'''Playlist'''
|-
|''Playlist_ID'' (Zahl,10)
|-
|Name (Text,20)
|-
|Nutzer_ID (Zahl,30)
|-
|Anzahl_S (Zahl,2)
|}


{| border="1"
|-
|'''Song'''
|-
|''Song_ID'' (Zahl,10)
|-
|Titel (Text,20)
|-
|Künstler_ID (Zahl,30)
|-
|Künstler_N (Text,20)
|-
|Dauer (Zahl,4)
|-
|Album_ID (Zahl,23)
|}


{| border="1"
|-
|'''enthält/kommt vor'''
|-
|Playlist_ID (Zahl,10)
|-
|Song_ID (Zahl,10)
|}


{| border="1"
|-
|'''hört'''
|-
|Nutzer_ID (Zahl,10)
|-
|Song_ID (Zahl,10)
|}


===''Datenbank''===
<code id="697094687f3b7">

DROP TABLE IF EXISTS Nutzer;
CREATE TABLE Nutzer (
 Nutzer_ID varchar (20),
 Name varchar (20),
 Vorname varchar (20),
 Geb_datum varchar (10),
 Email varchar (30),
PRIMARY KEY (Nutzer_ID)
);


INSERT INTO Nutzer VALUES ('123456', 'Meier', 'Fred', '12.04.1998','fred_meier235@gmail.com');
INSERT INTO Nutzer VALUES ('123457', 'Franz', 'Frieda', '01.01.1984', 'f_franz786@gmail.com');
INSERT INTO Nutzer VALUES ('123458', 'März', 'Paul', '22.12.2000', 'P_M12345@gmail.com');
INSERT INTO Nutzer VALUES ('123459', 'Mafai', 'Peter', '16.08.2005', 'P_M654mtr@gmail.com');
INSERT INTO Nutzer VALUES ('123451', 'Röhnsch', 'Lauren', '09.07.2001', 'L_Röhnsch123@gmail.com');

DROP TABLE IF EXISTS Playlist;
CREATE TABLE Playlist (
 Playlist_ID varchar (10),
 Name varchar (20),
 Nutzer_ID varchar (30),
 Anzahl_S varchar (2),
PRIMARY KEY (Playlist_ID),
FOREIGN KEY (Nutzer_ID) REFERENCES Nutzer(Nutzer_ID)
);


INSERT INTO playlist VALUES ('65989', 'Jazzy','123456 ', '80');
INSERT INTO playlist VALUES ('27385', 'Boogie', '123459', '34');
INSERT INTO playlist VALUES ('27384', 'Chillout', '123451', '13');
INSERT INTO playlist VALUES ('27389', 'Study musik', '123457', '67');
INSERT INTO playlist VALUES ('27386', 'Rock', '123456', '40');


DROP TABLE IF EXISTS Song;
CREATE TABLE Song (
 Song_ID varchar (10),
 Titel varchar (20),
 Künstler_ID varchar (30),
 Künstler_N varchar (20),
 Dauer varchar (4),
 Album_ID varchar (23),
PRIMARY KEY (Song_ID)
);


INSERT INTO Song VALUES ('098766', 'Starlight','65748 ', 'Rhianna', '2.34','08976');
INSERT INTO Song VALUES ('098764', 'party time', '68654', 'Paris Hilten', '5.00', '02534');
INSERT INTO Song VALUES ('095763', 'summertime', '62974', 'Ed Sheeran', '3.20', '03745');
INSERT INTO Song VALUES ('098762', 'hörst du die Regenwürmer husten', '62938', 'Mark Forster', '3.87', '01632');
INSERT INTO Song VALUES ('094763', 'Rocking Around the Tree', '61429', 'Arianna Grande', '4,21', '06025');
INSERT INTO Song VALUES ('098765', 'breakfast club','65249 ', 'Amy Winehouse', '5.64', '00617');
INSERT INTO Song VALUES ('098753', 'apple pen', '69352', 'Paul Panzer', '3.54', '08907');
INSERT INTO Song VALUES ('098763', 'hit the road jack', '63206', 'Eminem', '6,01', '03420' );


DROP TABLE IF EXISTS enthält;
CREATE TABLE enthält (
 Playlist_ID varchar (10),
 Song_ID varchar (10),
 FOREIGN KEY (Playlist_ID) REFERENCES Playlist(Playlist_ID),
 FOREIGN KEY (Song_ID) REFERENCES Song(Song_ID)
);

INSERT INTO enthält VALUES ('65989', '098765');
INSERT INTO enthält VALUES ('65989', '098764');
INSERT INTO enthält VALUES ('27385', '098765');
INSERT INTO enthält VALUES ('27385', '098763');
INSERT INTO enthält VALUES ('27385', '098766');
INSERT INTO enthält VALUES ('27384', '098765');
INSERT INTO enthält VALUES ('27384', '098762');
INSERT INTO enthält VALUES ('27389', '098762');
INSERT INTO enthält VALUES ('27389', '098764');
INSERT INTO enthält VALUES ('27389', '098753');
INSERT INTO enthält VALUES ('27386', '098763');
INSERT INTO enthält VALUES ('27386', '098763');

DROP TABLE IF EXISTS hört;
CREATE TABLE hört (
 Nutzer_ID varchar (10),
 Song_ID varchar (10),
 FOREIGN KEY (Nutzer_ID) REFERENCES Nutzer(Nutzer_ID),
 FOREIGN KEY (Song_ID) REFERENCES Song(Song_ID)
);


INSERT INTO hört VALUES ('123456', '098766');
INSERT INTO hört VALUES ('123456', '098764');
INSERT INTO hört VALUES ('123456', '098762');
INSERT INTO hört VALUES ('123457', '098753');
INSERT INTO hört VALUES ('123457', '098766');
INSERT INTO hört VALUES ('123457', '098763');
INSERT INTO hört VALUES ('123458', '098763');
INSERT INTO hört VALUES ('123458', '098764');
INSERT INTO hört VALUES ('123459', '098753');
INSERT INTO hört VALUES ('123459', '098762');
INSERT INTO hört VALUES ('123451', '098763');
INSERT INTO hört VALUES ('123451', '098766');
</code>

<run id="697094687f438">

SELECT Titel, Dauer
FROM Song
Where Künstler_ID = 63206;

SELECT Name, Anzahl_S
FROM Playlist 
Where Anzahl_S > 35;

SELECT *
FROM Playlist


</run>

===''Kritische Reflexion''===
<pre>
Die erstellte Datenbank für einen Musik-Streaming-Dienst bildet die wichtigsten Bereiche wie Nutzer, Songs und 
Playlists übersichtlich ab. Besonders positiv ist, dass Beziehungen zwischen den Tabellen sinnvoll umgesetzt wurden, zum Beispiel dass Nutzer 
Playlists erstellen können und Playlists mehrere Songs enthalten. Dadurch wirkt die Datenbank logisch aufgebaut und realitätsnah. Allerdings gibt es
auch einige Schwächen. Manche Attribute könnten genauer oder einheitlicher definiert werden, zum Beispiel die Speicherung der Dauer eines Songs als Text 
statt als Zahl. Außerdem könnten zusätzliche Informationen wie Genre oder Veröffentlichungsjahr ergänzt werden, um die Datenbank umfangreicher zu machen. 
Auch die Beziehung „hört“ enthält noch keine Beispieldaten, wodurch sie noch nicht vollständig getestet wurde. Insgesamt ist die Datenbank gut strukturiert
und erfüllt ihren grundlegenden Zweck, bietet aber noch Verbesserungsmöglichkeiten bei der Datentypwahl und beim Umfang der gespeicherten Informationen.
</pre>

===Quellen/Tools===
* https://www.canva.com/design/DAHAEstLXLQ/dmQ69DqQ3nIYrmUDGZlJUA/edit