Dreidimensionale Tabellen?

Lukaro

Mitglied
Ich habe eine Datenbank mit einer mitglieder- und einer downloads-tabelle für die download area auf meiner homepage. Nun möchte ich, dass jeder User alle dls einmal bewerten kann. Sollte ich für jeden DL eine neue Spalte in der User-Tabelle einfügen, oder liebe eine neue Tablle anlegen?

CREATE TABLE `luk_dls_vote` (
`name` varchar(10) NOT NULL default '0',
`12` int(1) NOT NULL default '0',
) TYPE=MyISAM;

INSERT INTO `luk_dls_vote` VALUES ('dummy', 0);
INSERT INTO `luk_dls_vote` VALUES ('Lukaro', 0);
So sieht das jetzt aus. Wie ihr seht, wird immer eine neue spalte mit der download-id hinzugefügt.
Meine Frage ist nun: Gibt es so etwas wir dreidimensionale Tabellen, oder eine elegantere Lösung für mein Problem ?

mfg Lukaro

Edit: natürlich MySQL

Edit2: Kannt sich jemand mit Foren wie diesem hier aus? Wo wird z.b. gespeichert, welchen Beitrag man schon gelesen hat, und welcher neuer ist? Dass kann doch unmöglich alles in der user-tabelle gespeichert werden Oder sind die anz. der spalten egal ? *malquellcodeanalysierenmüsste*
 
Zuletzt bearbeitet:
Hi,

das ist ne n:m Beziehung, die du da aufbauen möchtest und das geht in relationalen Datenbanksystemen nur über eine Zwischentabelle... Also speichere dir das in einer gesonderten Tabelle, wer was herunter geladen hat ;)

Zu deiner Frage ganz unten: Die Foren gleichen ab, wann du dich das letzte Mal eingeloggt hast und wann die Themen / Beiträge verfasst wurden. Logg dich mal ein, dann siehst du die neuen Beiträge. Dann logg dich aus, und gleich wieder ein (Cookie mal löschen am besten) und schwups, sind alle Beiträge gelesen, obwohl du sie noch gar nicht gelesen hast... Also gespeichert wird das imo nirgends, außer in einem Cookie bei dir.
 
Weiß jetzt nicht, was das Attribut '12' in deiner Relation zu bedeuten hat, aber ich poste mal, wie ich mir das vorstelle:

Relation 1: User (Attribute: UserID, Name, such dir was aus ;) )
Relation 2: Downloads (Attribute DownloadID, Link, irgendwas ;) )
Relation 3: User_2_Downloads (Attribute F_UserID, F_DownloadID)

In die 3. Relation kommen nur Datensätze, wenn ein bestimmter User einen bestimmten Download ausgeführt hat. Tuste noch nen Zeitpunkt hinzu, kannst du damit sogar abbilden, wann und wie oft ein User etwas runter lädt...

Hoffe, das ist einigermaßen nachvollziehbar.

Bitte auch die Primärschlüssel bedenken...
 
TMKILLA hat gesagt.:
Weiß jetzt nicht, was das Attribut '12' in deiner Relation zu bedeuten hat, aber ich poste mal, wie ich mir das vorstelle:

Relation 1: User (Attribute: UserID, Name, such dir was aus ;) )
Relation 2: Downloads (Attribute DownloadID, Link, irgendwas ;) )
Relation 3: User_2_Downloads (Attribute F_UserID, F_DownloadID)

In die 3. Relation kommen nur Datensätze, wenn ein bestimmter User einen bestimmten Download ausgeführt hat. Tuste noch nen Zeitpunkt hinzu, kannst du damit sogar abbilden, wann und wie oft ein User etwas runter lädt...

Hoffe, das ist einigermaßen nachvollziehbar.

Bitte auch die Primärschlüssel bedenken...
Also für jede "Relation" eine neue Tabelle?
Ja, so hatte ich mir das auch vorgestellt

name | 12 | 14 | 21 | 17
dummy | 0 | 0 | 0 | 0
Lukaro | 0 | 0 | 0 | 0

so ist sie jetz, und wenn ich dich richtig verstanden habe, würdest du sie auch so machen.
die 12, 14 usw. sind in der tat die Download-id`s

ok, soweit das!
wenn ich jetz noch gleichzeitig das datum zum letzten download der datei machen möchte, kann da ja dann ein array weiterhelfen (oder wäre dann eine neue spalte ressourcenschonender?)

naja, wie auch immer, danke für die Hilfe

Lukaro

Edit:
Moment, mit "Relation 3: User_2_Downloads (Attribute F_UserID, F_DownloadID)", wie meinst du das genau? userid dann als zeile? downid als spalte? wär ja logisch...
 
Zuletzt bearbeitet:
So, ich habs

TMKILLA hat gesagt.:
Relation 3: User_2_Download-Tabelle

F_UserID | F_DownloadID | DownloadDatum
1 | 2 | 11.11.2004
1 | 1 | 15.11.2004
2 | 1 | 19.11.2004

So könnte des aussehen
ahh, *klick* also müsste die (php)abfrage etwa so aussehen:
SELECT * FROM User_2_Download-Tabelle WHERE F_UserID = $userid


Ich bin eben nur etwas verwirrt gewesen *g*

Aber theoretisch könnte man diese minitabelle ja auch an die membertabelle dranhängen, aber lassen wir das ;)

großes Dankeschön für TMKILLA :)
 
Wenn dir die IDs reichen, dann is die Abfrage richtig, ansonsten müsstest du joinen, aber das is nen andres Thema :p

Das Problem ist, dass du nur auf die Weise mit den 3 Tabellen wirklich unbegrenzt bist. Du kannst soviele User und Downloads haben wie du möchtest, du musst nicht mehr ans DB-Design ran und das ist sehr sehr wichtig ;)
 

Neue Beiträge

Zurück