Mi sembrava di aver trovato un giusto equilibrio, ma ecco che mi vengono in mente alcuni nuovi requisiti.
Intanto, avevo notato con estetico dispiacere che la struttura Item-User-Tag non è simmetrica, la relazione User-Item è di molti-a-uno, mentre le altre relazioni sono di molti-a-molti… ma mi ero arreso a questa bruttura.
Questa caratteristica strutturale comporta però una pesante limitazione, ogni utente può creare un solo ed unico Item per una risorsa (pagina web, ad esempio), rendendo quindi impossibile la creazione di applicazioni tipo “inferno”, ad esempio non si potrebbe taggare la pagina di un qualche amministratore “seriamente” e in un secondo tempo mandarlo all’inferno perché ha fatto una cavolata…
Da questa riflessione la nuova struttura:
* Tre tabelle: *User-Href-Tag*, collegate molti-a-molti
* Tre tabelle di collegamento: *UserHref*, *TagUser* e *HrefTag*
* Tre tabelle di informazioni:
– *Item*: il commento riguardo alla risorsa, anche multiplo
– *PersonalSign*: il segno di default del tag, ad esempio possiamo decidere di non vedere tutte le risorse taggate come “spam”
– *ResourceSign*: possiamo vefinire una risorsa come un “non-qualcosa”… se serve…