PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Array in Datenbank?


[Dirk]
2012-10-11, 21:31:54
Hallo,

Ich habe eine kleine Frage. Mein Problem: Ich habe eine SQL Tabelle die verschiedene Videos beinhaltet. Dann eine weitere Tabelle, die alle angemeldeten User beinhaltet. Jetzt möchte ich, dass wenn ein User ein Video gekauft hat, sich dieses über einen Monat hinweg kostenlos anschauen kann.

Wie gehe ich dabei am besten vor? Bisher würde er bei mir jedesmal wieder zahlen müssen.

Meine Idee war, dass ich irgendwie alle von ihm angesehen Videos (Array) in einem Feld der User Tabelle Speicher und auch jeweils das zugehörige Datum (auch ein Array) und dann jedesmal schaue ob das entsprechende Video in seiner liste auftaucht. Usw.

Gibt es da bessere Methoden? Ich hoffe, es ist klar, was ich meine :)

Lg Dirk

noid
2012-10-11, 21:58:04
Ich habe meine letzten SQL-Tabellen zwar im Studium erzeugt, aber sowas würde ich bei sowas aus dem Ärmel über eine dritte Tabelle machen, die die Käufe beinhaltet (mit UserID, FilmID, Datum, Gültigkeit etc.)

Sprich: Kundendaten, Filmdaten, Kaufdaten. Sowas in der Art. Tabelle in Tabelle, das ist sowas von pimp my SQL (I heard you like arrays so we put an array in an array.)

edit: am besten gehst du vor in dem du dir mal nen Plan in einer passenden Metasprache machst was deine Anwendung überhaupt alles leisten must damit du eine Architektur erzeugen kannst und diese dann weiter verfeinerst.

Marscel
2012-10-11, 22:03:34
Aller erste Faustregel einer vernünftigen Datenbankstruktur: eine Information pro Zelle. Dazu siehe noids Ansatz.

ezzemm
2012-10-12, 07:16:43
Arrays und Objekte können, wenn man sie Struktur nicht in einer DB-Tabelle nachstellen lassen kann, mittels serialize (http://php.net/manual/de/function.serialize.php) gespeichert werden.

Gohan
2012-10-12, 18:43:21
;9498225']Hallo,

Ich habe eine kleine Frage. Mein Problem: Ich habe eine SQL Tabelle die verschiedene Videos beinhaltet. Dann eine weitere Tabelle, die alle angemeldeten User beinhaltet. Jetzt möchte ich, dass wenn ein User ein Video gekauft hat, sich dieses über einen Monat hinweg kostenlos anschauen kann.

Wie gehe ich dabei am besten vor? Bisher würde er bei mir jedesmal wieder zahlen müssen.

Meine Idee war, dass ich irgendwie alle von ihm angesehen Videos (Array) in einem Feld der User Tabelle Speicher und auch jeweils das zugehörige Datum (auch ein Array) und dann jedesmal schaue ob das entsprechende Video in seiner liste auftaucht. Usw.

Gibt es da bessere Methoden? Ich hoffe, es ist klar, was ich meine :)

Lg Dirk

Bitte nicht so, das Stichwort lautet Normalisierung. In deinem Fall bräuchtest du drei Tabellen:

Eine Tabelle mit Filmen, eine Tabelle mit Personen und eine dritte Tabelle, welche Personen und Filme, zusammen mit dem Datum speichert. Filme und Personen werden dabei über (hoffentlich) vorhanden IDs referenziert.

Das ganze Konstrukt nennt sich anschließend N:M Beziehung (N Personen können M Filme ausleihen) und gehört zum kleinen Einmaleins der Datenbankentwicklung.

[Dirk]
2012-10-13, 16:02:59
Ich habe meine letzten SQL-Tabellen zwar im Studium erzeugt, aber sowas würde ich bei sowas aus dem Ärmel über eine dritte Tabelle machen, die die Käufe beinhaltet (mit UserID, FilmID, Datum, Gültigkeit etc.)

Sprich: Kundendaten, Filmdaten, Kaufdaten. Sowas in der Art. Tabelle in Tabelle, das ist sowas von pimp my SQL (I heard you like arrays so we put an array in an array.)


Ok, ich habe deine Idee, die mir nach einigen Überlegungen als die Beste erschien, umgesetzt. Es funktioniert einwandfrei.

Ich danke euch :)

noid
2012-10-13, 21:12:46
Bitte, Gohans Vorschlag ist eigentlich der Gleiche - nur hat er das mit etwas mehr Begrifflichkeiten erklärt.

[Dirk]
2012-10-14, 02:03:19
Ok, bevor ich hier noch Tausend Beiträge erstelle, mach ich das mal hier im Anschluss:

Eine weitere Frage: wenn ich jetzt die Videos noch kommentieren lassen möchte, wie mache ich das am Besten? Eine Tabelle für jedes Video anlegen wird da wohl nicht die beste Lösung sein...

Edit : Ach Quark :) eine Tabelle genügt ja, muss dann halt nur die Video-iD mit aufnehmen :)

Gohan
2012-10-14, 08:13:47
;9501106']Ok, bevor ich hier noch Tausend Beiträge erstelle, mach ich das mal hier im Anschluss:

Eine weitere Frage: wenn ich jetzt die Videos noch kommentieren lassen möchte, wie mache ich das am Besten? Eine Tabelle für jedes Video anlegen wird da wohl nicht die beste Lösung sein...

Edit : Ach Quark :) eine Tabelle genügt ja, muss dann halt nur die Video-iD mit aufnehmen :)

Genau! 1:N Beziehung. Ein Video hat N Kommentare. Wenn du immer in diesen Beziehungen denkst, ist es gar nicht so schwer eine halbwegs gute Datenbank zu entwerfen.