Hi.
Das heikle daran ist: es sind verschiedene „Produkte“ die man
sich in den Korb legen kann. Einerseits stinknormale wie z.b.:
Bücher, Skripten, Software, … aus dem eigentlichen
online-shop, aber auch Kurse, Seminare, … die natürlich ganz
andere Attribute aufweisen.
Eine eindeutige Produkt-ID sollte aber schon vorhanden sein.
Du kannst es ja mal mit einer Abstrahierung der Handelsware probieren. Die Trennung von Art eines Produkts von seinen Attributen. Ich spinne jetzt einfach mal:
HANDELSWARE\_TYPE
---------------------------------------------------
ID NAME DESCRIPTION
1 Buch Ein Buch
2 Seminar Ein Seminar
3 Software Ein Softwarepaket
HANDELSWARE\_ATTR
---------------------------------------------------
ID FIELDNAME DESCRIPTION
1 Seitenanzahl bla
2 Autor bla
3 Erscheinungsdatum bla
4 Anfangsdatum bla
5 Enddatum bla
6 Hersteller bla
7 Hardwarevorraussetzungen bla
HANDELSWARE\_TYPE\_HANDELSWARE\_ATTR
--------------------------------------
HANDELSWARE\_TYPE\_ID HANDELSWARE\_ATTR\_ID
1 1
1 2
1 3
2 4
2 5
3 6
3 7
HANDELSWARE
--------------------------------------------------------------
ID TITLE DESCRIPTION HANDELSWARE\_TYPE\_ID
1 Web-Design Das Trainingsbuch 1
2 Operation Rainbow Thriller 1
3 Basteln für jeden Der ultimative Kurs 2
4 Frontpage 98 Web Site Creation... 3
HANDELSWARE\_VALUES
----------------------------------------
ID HANDELSWARE\_ID HANDELSWARE\_ATTR\_ID VALUE
1 1 1 551
2 1 2 Mathias Nolden
3 1 3 1997
4 2 1 887
5 2 2 Tom Clancy
6 2 3 1998
7 3 4 10.01.2002
8 3 5 14.01.2002
9 4 6 Microsoft
10 4 7 Pentium8 1THz, 900GB HDD
Mit so einer Abstrahierung kannst du jetzt jedes beliebige Produkt darstellen und in die DB einpflegen. Diese Struktur kann aber keine verschiedenen Datentypen abspeichern. (Aber man kann ja exzellent Strings parsen
Vielleicht kommen ja Verbesserungsvorschläge…
Nun die Frage: Wie verbinde ich die beiden „Produkte“-Tabellen
mit meiner User-Tabelle? Ein ternäres Relationship
„Warenkorb“, eine „Warenkorb“-Tabelle mit Relationships zu
allen anderen drei Entities, überhaupt keinen Warenkorb (=
alles aus den Relationships die von „Kunde“ weggehen
auslesen), Warenkorb mit Textfiles, …
Mit zwei Tabellen geht das relativ sauber:
HTTP\_SESSION
-----------------------------
ID SESSION\_ID
1 xhds87sadlhj2khjdnb
2 owe2kjlöwqdj9asdkjl
3 eiu990asdjas12asd21
4 93lasüio23ljksd902j
HTTP\_SESSION\_HANDELSWARE
--------------------------------
ID HTTP\_SESSION\_ID HANDELSWARE\_ID
1 1 1
2 1 2
3 1 3
4 2 2
5 3 2
6 4 4
Wie macht man sowas in der Praxis? Wie kommen da die
Session_id’s ins Spiel? Es gibt da draussen ja Milliarden von
Seiten mit Warenkörben, und ich finde einfach nirgends
Informationen wie sowas gemacht wird! … Hat jemand ein paar
Tipps/Links?
Session ID’s kannst du austeilen (Cookie’s) oder holen (JavaScript).
Du brauchst einfach ein initiales Erkennungsmerkmal eines Users, um seine Session verfolgen zu können. Cookies sind eh einfach zu setzten und abzufragen. Schwierig wird es bloß, wenn der User keine Cookies zuläßt. Da ist dann z.B. die Funktion
trans_id = new Date().getTime();
sehr angenehm. Diese Funktin liefert die Systemzeit des Users als Anzahl der seit 1.1.1970 24:00 vergangenen Milisekunden zurück. Diese dürfte ziemlich unique sein. Die Wahrscheinlichkeit, das jemand in der gleichen Milisekunde die Seite des Kaufhauses im Browser angezeigt bekommt, ist ziemlich gering.
Immer für weitere Fragen offen,
J.P.Jarolim