vrijdag 18 november 2016

Database van 2D naar 3D

Ik ga proberen te visualiseren hoe een database van 2D naar 3D gaat aan de hand van deze antieke sheet uit de begintijd van mijn webwinkel.
Alle data van de producten stonden in een excelsheet. Deze sheet hield ik offline bij, en uploadde ik naar mijn winkelhost.
Producten konden maar op 1 afdeling staan. Als ik ze op meerdere afdelingen wilde laten zien moest ik een rij toevoegen.


Grappig detail is de afdeling "momenteel op". Ik wilde niet dat klanten tijdens het rondneuzen uitverkochte artikelen tegen kwamen die ze niet konden bestellen, dus die zette ik tijdelijk op een andere afdeling. Als ze geen haast hadden, konden ze de artikelen met levertijd reserveren.
Ook kon ik toendertijd maar 1 foto per artikel tonen. Hetzelfde artikel in een andere kleur staat daarom op een aparte rij en verscheen op die manier met foto en bestelknop er onder.
Er staan nummertjes voor de afdelingen. Noodzakelijk omdat de afdelingen destijds in alfabetische volgorde verschenen en ik de grootste afdeling bovenaan wilde hebben.

Ik heb jarenlang mijn winkelhost gesmeekt om het mogelijk te maken een artikel op meerdere afdelingen tegelijk te plaatsen zonder dat ik er een extra rij voor moet aanmaken. Omdat ik een extra rij overbodig vond:
  • Mijn database werd langer met gedupliceerde producten. Rijen waar alleen de waarde van kolom B anders was.
  • Ik moest de voorraad van een identiek product verdelen over meerdere plaatsen.
  • Bij een zoekopdracht in de winkel werd hetzelfde product meerdere keren getoond.
  • Je hebt hetzelfde product er meerdere keren in staan waardoor duplicate content ontstaat.
Op een gegeven moment heb ik het zelf ingebouwd. In kolom B kon ik meerdere afdelingen zetten en de producten van een afdeling werden in de webwinkel aangeroepen met een "search" op die kolom. Daarmee veranderde kolom B van een afdeling (ook wel categorie genoemd) naar een label (tag). Het product staat niet langer op één afdeling, maar meerdere afdelingen hangen als een label vast aan het product.
Vanaf dat moment is kolom B een kolom met labels. In kolom B wordt geen vaste waarde meer getoond maar een variabele. De excelsheet gaat van 2D naar 3D. Van het platte vlak naar een kubus. De variabelen van kolom B staan dwars, haaks op de rijen en kolommen. De kolom krijgt diepte. Als de kolommen de x-as vormen, de rijen de y-as dan heb je bij kolom B een z-as die loodrecht op de x- en y-as staat.

Als de afdeling een label is geworden is kun je niet meer eenduidig, lineair, via een broodkruimel of url aan Google of de bezoeker vertellen op welke afdeling iets staat omdat het op meerdere afdelingen tegelijk staat. In een url of broodkruimel kun je geen variabele opnemen.
Dat is de reden waarom ik in mijn webwinkel de variabele weglaat in de urls.
Dat is de reden waarom ik in mijn webwinkel geen broodkruimel aanbied maar een bezoeker de keuze geef uit alle opties.

Ik laat de artikelen als het ware op een ongestructureerde hoop liggen, en Google of de bezoeker kan ze met een "search" aanroepen. Google of de bezoeker hoeft niet te weten op welke afdeling een product staat, het artikel moet verschijnen op elke willekeurige afdeling waar ze het verwachten.

Structuur
Een structuur, hiërarchie, lineair aangeven waar iets staat is mijn inziens in de virtuele wereld overbodig. Een vaste plaats geven heeft alleen zin als je je artikelen in een papieren catalogus of magazijn zet en terug wilt kunnen vinden. Dan moet je precies weten waar het staat.
Het is ook handig voor jezelf als je een excel-achtige database bijhoudt. Maar voor de bezoeker of Google heeft het geen functie.

Geforceerde structuur
Om toch een structuur te handhaven, een broodkruimel te kunnen weergeven in een url, zijn er 2 opties:
  • Je blijft 2D werken. Bij webwinkels waar producten niet op meerdere afdelingen hoeven te staan kan dat probleemloos. Bij webwinkels waar dat wel moet dupliceer je de producten om ze op meerdere afdelingen te kunnen tonen.
  • Je gaat met een voorkeurs- of standaardurl werken waarin je een vaste waarde voor de variabele afdeling kiest. Je zegt tegen Google dat dit de afdeling is waar jij het artikel hebt ingedeeld en op de andere afdelingen waar het product kan staan zet je een no-index of canonical.
Met de eerste optie krijg je of een langere database met alle nadelen van dien (duplicate content, voorraad moeten verdelen) of je verstopt je producten voor de bezoeker en Google door ze niet te tonen waar hij ze denkt te kunnen vinden.
De tweede optie voegt niets toe voor de bezoeker terwijl het wèl extra werk is voor de developer en meer code vergt. Het is een fabel dat Google een lineair pad nodig heeft om het te kunnen vinden, Google zoekt zijn eigen weg in de ongeordende chaos. Het is een fabel dat de bezoeker een url moet kunnen hakken of een broodkruimel nodig heeft. Hakken van een url doen alleen de mensen die weten dát ze kunnen hakken èn die de aangeboden navigatie op de site dusdanig belabberd vinden dat ze hakken preferen. Met broodkruimels stuur je de bezoeker dezelfde weg terug, terwijl hij met goede navigatie misschien wel sneller kan vinden wat hij zocht en onderweg nog wat interessants tegen komt.

Feit is dat je een variabele niet kunt opnemen in de url van een productpagina.
Natuurlijk kun je van de variabele een vaste waarde maken. Maar dan krijg je een langere lijst met producten omdat je ze moet dupliceren om op meerdere afdelingen te tonen. Of het product is minder goed vindbaar omdat het maar op 1 afdeling te vinden is.
Je kunt ook tegen de bezoeker en Google zeggen het is weliswaar een variabele maar ik heb het toch maar een vaste waarde gegeven. Maar ik kan geen argumenten bedenken wat dat toevoegt voor de bezoeker of Google. Voor jezelf is het misschien handig omdat er een fysiek magazijn achter je winkel hangt, maar dat is niet de plaats waar de bezoeker komt.

Volgorde
Vaste waardes (merk, maat, jaartal e.d.) kunnen wèl in de url van een productpagina opgenomen worden. Doch dat hoeft niet in een hakbare broodkruimel omdat de bezoeker en Google met de juiste navigatie hun eigen volgorde moeten kunnen bepalen. En het storend is als ze alleen in dezelfde volgorde terug kunnen gaan of in de volgorde die jij bepaalt hebt.

Meerdere kolommen met variabelen
In dit stuk heb ik het simpel gehouden. Er is 1 kolom met een variable waarde. Bij kleine winkels is dat voldoende. Bij een uitgebreid assortiment echter niet. Dan wil je de bezoeker eerst laten kiezen uit een hoofdafdeling en dan leiden naar een subafdeling. Je krijgt dan 2 kolommen met een variabele waarde (4D). En daar gaat het mis bij de meeste winkelhosts, je kunt een product wèl op meerdere afdelingen zetten (=labelen). Maar de subafdelingen hangen lineair onder de hoofdafdeling.
(Stop hier maar Martine, anders komt er nooit een eind aan).

Wordpress
Blogger heeft 1 kolom met variabele waarde, dat zijn de labels (=tags). Die labels gebruik je om een bezoeker met trefwoorden door je blog te leiden; het navigatie-menu maak je met labels.
Wordpress heeft 2 kolommen met variabele waarde; category en tags. De term category is misleidend, het wekt de indruk dat je een structuur maakt, categoriseert. Bovendien kun je de category bij Wordpress opnemen in de url van het bericht. Waardoor het lijkt alsof het geen variabele is, alsof er een lineair pad bestaat. Wordpressgebruikers denken daarom soms dat het beter is om maar 1 category aan een bericht toe te kennen terwijl een bericht juist beter vindbaar is als het bij elke category staat waar de bezoeker het verwacht. Een betere naam voor category was main tag geweest.

Geen touw aan vast te knopen? Ik heb er eerder over geschreven:
Google en de bezoeker hoeft niet te weten waar het staat, als ze het maar kunnen vinden.
Laat de producten op een hoop liggen, een structuur aanbrengen is overbodig.
Over broodkruimels

Of bekijk ze allemaal met het label tagging.