PMG2022/DB Beleg/Lukas

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>SQL</language>
__NOTOC__ 
<font size="6"><h3>Projekt SQL</h3></font>

===Idee===
 Idee: Verknüpfung Streamingdienste mit Verfügbarkeit von Filmen in Bezug auf Personen mit Abosystem

 Ich finde es heutzutage viel zu unübersichtlich, welcher Film bei welchem Streaminganbiter verfügbar ist.
 Zudem fände ich es sehr praktisch wenn es dazu eine Plattform gäbe, die eienem Auskunft darüber gibt. 
 Diese Plattfrom könnte ungefähr so aussehen...

===Modelle===
[[Bild:ERM-Bild.png|left|400px|thumb|ERM]]
[[Bild:ER-Bild.PNG|left|1000px|thumb|ER]]
























===Datenbank===
<code id="622b114a367c3">

DROP TABLE IF EXISTS Plattform;
CREATE TABLE Plattform(
  Name varchar(30),
  Preis integer(20)
   );



INSERT INTO Plattform VALUES ('Netflix', 7.99);
INSERT INTO Plattform VALUES ('PrimeVideo', 6.99);
INSERT INTO Plattform VALUES ('Disney+', 8.99);


-- SKY?

DROP TABLE IF EXISTS Person;
CREATE TABLE Person(
  Name varchar(30),
  KundenNr varchar(20)
   );



INSERT INTO Person VALUES ('Max', '001');
INSERT INTO Person VALUES ('Tim', '002');
INSERT INTO Person VALUES ('Lisa', '003');







DROP TABLE IF EXISTS Film;
CREATE TABLE Film(
  Titel varchar(30),
  FilmNr varchar(20)
   );



INSERT INTO Film VALUES ('Star Wars', '990');
INSERT INTO Film VALUES ('Harry Potter', '991');
INSERT INTO Film VALUES ('Herr der Ringe', '992');



DROP TABLE IF EXISTS VerknüpfungP;
CREATE TABLE VerknüpfungP(
  Nr varchar(30),
  Abo varchar (20)
   );



INSERT INTO VerknüpfungP VALUES ('001', 'Netflix');
INSERT INTO VerknüpfungP VALUES ('002', 'PrimeVideo' );
INSERT INTO VerknüpfungP VALUES ('003', 'Netflix');
INSERT INTO VerknüpfungP VALUES ('003', 'Disney+' );


DROP TABLE IF EXISTS VerknüpfungF;
CREATE TABLE VerknüpfungF(
  Nr varchar(30),
  Abo varchar (20)
   );




INSERT INTO VerknüpfungF VALUES ('990', 'Disney+');
INSERT INTO VerknüpfungF VALUES ('991', 'PrimeVideo' );
INSERT INTO VerknüpfungF VALUES ('991', 'Netflix');
INSERT INTO VerknüpfungF VALUES ('992', 'Netflix' );

</code>

<run id="622b114a3683d">

SELECT * FROM Plattform;
SELECT * FROM Person;
SELECT * FROM Film;
-- SELECT * FROM VerknüpfungP;
-- SELECT * FROM VerknüpfungF;


-- SELECT Person.Name,Person.Abo,Plattform.Preis FROM Person,Plattform WHERE Person.Abo Like Plattform.Name;
-- SELECT * FROM Person WHERE Abo LIKE '%Disney+%';
-- SELECT Person.Name,Film.Titel FROM Person,Film,Plattform 
-- WHERE Person.Abo Like Plattform.Name and Film.Verfügbar Like Plattform.Name;
SELECT Name,Abo FROM Person,VerknüpfungP 
WHERE Person.KundenNr=VerknüpfungP.Nr;
SELECT Person.Name,Abo,Preis FROM Person,Plattform,VerknüpfungP 
WHERE Person.KundenNr=VerknüpfungP.Nr and VerknüpfungP.Abo='Disney+' and Plattform.Name='Disney+';
SELECT Person.Name,Film.Titel FROM Person,VerknüpfungP,VerknüpfungF,Plattform,Film 
WHERE Person.KundenNr=VerknüpfungP.Nr and VerknüpfungP.Abo=VerknüpfungF.Abo and Film.FilmNr=VerknüpfungF.Nr ;


SELECT Person.Name,Preis FROM Person,VerknüpfungP,Plattform 
WHERE Person.KundenNr=VerknüpfungP.Nr and VerknüpfungP.Abo=Plattform.Name ;


-- SELECT Person.Name, SUM(a.Preis) FROM Person,VerknüpfungP,Plattform 
-- WHERE Person.KundenNr=VerknüpfungP.Nr and VerknüpfungP.Abo=Plattform.Name;


</run>



===Zusammenfassung===

 Ich denke das Prinzip ist erkennbar und funktioniert soweit auch. Die Datenbank kann leicht erweitert werden, sowohl bei den Streamingdiensten (da fehlt z.B. Sky oder AppleTV), bei den Filmen (da hab ich nur eine sehr geringe Auswahl geschaffen) und auch bei den Personen. Aufpassen müsste man dann jedoch, dass sich die Kundennummern und die Filmnummern nicht gleichen. Dies dürfte zwar eigentlcih nicht zu Problemen führen, könnte aber verwirren. Das lässt sich aber auch leicht beheben, indem man die Nummern vier- oder fünfstellig wählt.      bla bla


'''Verbesserungsmöglihkeiten'''

<ul>

<li>Personen mit mehreren Abos in eine Spalte packen</li>
<li>Preise bei Personen mit mehreren Abos summieren</li>
<li>Bei der Abfrage, welche Person welchen Film schauen kann die Dopplungen entfernen</li>
<li>...</li>
<li>...</li>
<li>...</li>
<li>...</li>    


</ul>