Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Das ist nicht schlecht... Aber wer als Hobby hier ein paar technische Fragen beantwortet hat wohl nicht immer Lust mehrere Stunden ein geeignetes Datenmodell zu erstellen ^^Ist das gut oder schlecht? Ich meine, die PKs und FKs sind ja nun mal Bestandteil einer jeden gut strukturierten Datenbank?
Richtig wäre eine zusätzliche Tabelle... Aber man kann es mMn auch übertreiben mit der Normalisierung. Ist aber nur meine Meinung und das könnte theoretisch später auch zu einem Problem werden, wenn dein Modell noch mehr Daten beinhaltet. Mir fällt derzeit nur kein konkretes Beispiel ein ^^Du würdest den FK von der Tabelle FilmAllgemein in die Tabellen Person_Rolle und Person_Funktion hinterlegen? Ich wär beinahe dazu übergegangen und hätte noch zwei weitere Zwischentabellen zwischen den Zwischentabellen Person_Rolle und Person_Funktion erstellt. So das es am Ende eine Zwischen-Zwischentabelle wär. Aber das wäre zu viel des Guten und würde den Sinn der Datenbank gänzlich verfehlen oder?
Ja, du hättest dann eine Tabelle voller FK... Was spricht dagegen ?Zunächst einmal finde ich deine »Paint-Kunst« ziemlich gut. Du hast dadurch wesentlich schnell was ausgesagt und wesentlich mehr Zeilen gespart. Ich liebe visuelle Darstellungen.
Aber nun eine Frage. Ist es unwichtig in welcher Reihenfolge die Schlüssel in einer Zwischentabelle abgelegt werden? Zum Beispiel bei der Tabelle Person_Rolle ist der Schlüssel FilmAllgemein_ID an letzter Stelle. Ich nach meiner Überlegung würde ihn an erster Stelle setzten, denn ich denke mir so, ich will vom Film XYZ (FilmAllgemein_ID) die Person XYZ (Person_ID) und die dazugehörige Rolle XYZ (Rolle_ID). Und dann fiel mir noch was auf: Wenn wir es auf deine Weise machen, dann sind die Schlüssel in den Zwischentabellen wieder PK, richtig? Ich bin nur etwas verwirrt, weil du die Schlüssel der FilmAllgemein_ID als FK deklariert hast. In meiner Art und Weise habe ich sie nur deshalb als FK deklariert, weil ich ja eine »künstliche ID« erzeugt habe.
Weniger Tabellen = Weniger Joins = Weniger komplexe Abfragen = Weniger ArbeitAber ich habe eine allgemeine Frage an dich. Was spricht gegen meine Variante? Verstehe mich nicht falsch. Ich frage dich nicht, weil ich deine Kompetenz in Frage stelle, sondern, weil ich neugierig bin und auch was aus meinen Fehlern lernen will.
Ja, du hättest dann eine Tabelle voller FK... Was spricht dagegen ?
Kannst dann ja einfach den PK so über die FKs legen {Person_ID, Rolle_ID, FilmAllgemein_ID} und schon hast du dir eine künstliche ID gespart ^^
Das ist definitiv nicht egal!Ich habe an Sich nichts gegen FK oder PK. Die Datenbank weißt ja sowieso nicht ab wann ein Schlüssel PK oder FK ist. Mir ist es nur aufgefallen, weil in den Zwischentabellen Person_Rolle und Person_Funktion alle Schlüssel als PK deklariert wurden, und bei dir nun alle auf einmal FK sind. Da kam ich etwas ins Stolpern. Nochmal zum Mitschreiben, es ist ganz gleich, ob ich sie nun als PK oder FK deklariere? Ich möchte ja, dass man am Ende noch durchsteigt, denn es kommen noch allerhand Tabellen hinzu
Die Datenbank weißt ja sowieso nicht ab wann ein Schlüssel PK oder FK ist.
test=*# create table master (id int primary key);
CREATE TABLE
test=*# create table slave1 (fk int references master);
CREATE TABLE
test=*# create table slave2 (fk int references master);
CREATE TABLE
test=*# \d master
Table "public.master"
Column | Type | Modifiers
--------+---------+-----------
id | integer | not null
Indexes:
"master_pkey" PRIMARY KEY, btree (id)
Referenced by:
TABLE "slave1" CONSTRAINT "slave1_fk_fkey" FOREIGN KEY (fk) REFERENCES master(id)
TABLE "slave2" CONSTRAINT "slave2_fk_fkey" FOREIGN KEY (fk) REFERENCES master(id)
test=*#
test=*# drop table master;
ERROR: cannot drop table master because other objects depend on it
DETAIL: constraint slave1_fk_fkey on table slave1 depends on table master
constraint slave2_fk_fkey on table slave2 depends on table master
HINT: Use DROP ... CASCADE to drop the dependent objects too.
STATEMENT: drop table master;
ERROR: cannot drop table master because other objects depend on it
DETAIL: constraint slave1_fk_fkey on table slave1 depends on table master
constraint slave2_fk_fkey on table slave2 depends on table master
HINT: Use DROP ... CASCADE to drop the dependent objects too.
test=*#