Progettazione sito e-commerce

Rispondi
Roberto
Amministratore
Messaggi: 160
Iscritto il: 19/12/2009, 19:30

Progettazione sito e-commerce

Messaggio da Roberto »

Fin dalle prime volte che ho cominciato a programmare siti web, mi sono trovato di fronte alla gestione dei menu'. La gestione statica dei menu' e' quella che ogni principiante realizza, essa ha pero' lo svantaggio che la modifica di un menu' (aggiunta, modifica o cancellazione) va effettuata su ogni singola pagina del sito web.

Un'alternativa molto utilizzata tanti anni fa era quella della creazione di siti web che utilizzavano FRAME, tecnica col tempo diventata obsoleta.

Si e' passato successivamente all'inclusione di codice esterno nelle pagine dei siti, codice che faceva ovviamente riferimento ai menu' del sito web.

Le piu' recenti tecniche di programmazione prevedono invece l'uso di tecniche dinamiche attraverso l'utilizzo dei Database.

Riporto di seguito la mia piu' recente struttura per la gestione di menu' che sono raggruppati in categorie; l'attributo ORD serve per poter dare un ordine ai record, mentre l'attributo GROUP serve ad associare una categoria ad ogni menu.
Allegati

[L’estensione jpg è stata disattivata e non può essere visualizzata.]

Roberto
Amministratore
Messaggi: 160
Iscritto il: 19/12/2009, 19:30

Re: Progettazione di Menu' per siti web

Messaggio da Roberto »

Riporto di seguito una bozza di codice SQL che puo' essere personalizzato a piacimento.

Tabella Menu

Codice: Seleziona tutto

CREATE TABLE Menu
(
	id_menu INTEGER NOT NULL DEFAULT 1 AUTO_INCREMENT,
	name_menu VARCHAR(64) NOT NULL,
	link_menu VARCHAR(128) NOT NULL,
	image_menu VARCHAR(128) NOT NULL,
	ord_menu SMALLINT NOT NULL,
	group_menu INTEGER NOT NULL,
	PRIMARY KEY (id_menu),
	UNIQUE (link_menu),
	KEY (group_menu)
) 
;
Tabella Categorie

Codice: Seleziona tutto

CREATE TABLE Categorie
(
	id_cat INTEGER NOT NULL DEFAULT 1 AUTO_INCREMENT,
	name_cat VARCHAR(64) NOT NULL,
	link_cat VARCHAR(128) NOT NULL,
	ord_cat SMALLINT NOT NULL,
	PRIMARY KEY (id_cat),
	UNIQUE (link_cat)
) 
;
Legame tra le due tabelle

Codice: Seleziona tutto

ALTER TABLE Menu ADD CONSTRAINT FK_Menu_Categorie 
	FOREIGN KEY (group_menu) REFERENCES Categorie (id_cat)
;
Roberto
Amministratore
Messaggi: 160
Iscritto il: 19/12/2009, 19:30

Re: Progettazione varianti dei prodotti

Messaggio da Roberto »

Oggi tocca ad un altro aspetto importante di un sito di e-commerce, ovvero la gestione delle "varianti" (opzioni) dei prodotti. In molti casi infatti un prodotto potrebbe essere disponibile in varie varianti, come per esempio la scelta del colore.

Gli attributi "valore_opzione" e "etichetta_valore" sono necessari ai fini dela creazione della select nel codice html, mentre "prezzo_opzione" tiene conto del fatto che alcune varianti possono incidere sul prezzo d'acquisto del prodotto.
Allegati

[L’estensione jpg è stata disattivata e non può essere visualizzata.]

Roberto
Amministratore
Messaggi: 160
Iscritto il: 19/12/2009, 19:30

Re: Progettazione sito e-commerce

Messaggio da Roberto »

Riporto di seguito una bozza di codice SQL che puo' essere personalizzato a piacimento:

Codice: Seleziona tutto

CREATE TABLE opzione
(
	id_opzione INTEGER UNSIGNED NOT NULL DEFAULT 1 AUTO_INCREMENT,
	nome_opzione INTEGER UNSIGNED NOT NULL,
	valore_opzione VARCHAR(50) NOT NULL,
	etichetta_valore VARCHAR(128) NOT NULL,
	prezzo_opzione DECIMAL(10,2) NOT NULL DEFAULT 0,
	PRIMARY KEY (id_opzione),
	KEY (nome_opzione)
) 
;

Codice: Seleziona tutto

CREATE TABLE opzione_etichetta
(
	id_etichetta INTEGER UNSIGNED NOT NULL DEFAULT 1 AUTO_INCREMENT,
	etichetta VARCHAR(255) NOT NULL,
	PRIMARY KEY (id_etichetta),
	UNIQUE UQ_opzione_etichetta_etichetta(etichetta)
) 
;

Codice: Seleziona tutto

CREATE TABLE pro_opz
(
	prodotto INTEGER UNSIGNED NOT NULL,
	opzione INTEGER UNSIGNED NOT NULL,
	PRIMARY KEY (prodotto, opzione),
	KEY (opzione),
	KEY (prodotto)
) 
;

Codice: Seleziona tutto

CREATE TABLE prodotto
(
	id_prodotto INTEGER UNSIGNED NOT NULL DEFAULT 1 AUTO_INCREMENT,
	PRIMARY KEY (id_prodotto)
) 
;

Codice: Seleziona tutto

ALTER TABLE opzione ADD CONSTRAINT FK_nome_opzione 
	FOREIGN KEY (nome_opzione) REFERENCES opzione_etichetta (id_etichetta)
	ON UPDATE CASCADE
;

Codice: Seleziona tutto

ALTER TABLE pro_opz ADD CONSTRAINT FK_opzione 
	FOREIGN KEY (opzione) REFERENCES opzione (id_opzione)
	ON DELETE CASCADE ON UPDATE CASCADE
;

Codice: Seleziona tutto

ALTER TABLE pro_opz ADD CONSTRAINT FK_prodotto 
	FOREIGN KEY (prodotto) REFERENCES prodotto (id_prodotto)
	ON DELETE CASCADE ON UPDATE CASCADE
;
Roberto
Amministratore
Messaggi: 160
Iscritto il: 19/12/2009, 19:30

Re: Progettazione sito e-commerce

Messaggio da Roberto »

Ho aggiunto alla tabella menu' un nuovo attributo DESCRIPTION.

L'ho caratterizzato nel seguente modo:

Codice: Seleziona tutto

description VARCHAR(255) NOT NULL,
ed il suo scopo e' quello di fornire informazioni sui menu', magari sotto forma di meta-tag, alla pagina Html.

In asp un esempio potrebbe essere:

Codice: Seleziona tutto

<meta name="description" content="<%=description%>">
Eccovi la tabella aggiornata
Allegati

[L’estensione png è stata disattivata e non può essere visualizzata.]

Roberto
Amministratore
Messaggi: 160
Iscritto il: 19/12/2009, 19:30

Re: Progettazione sito e-commerce

Messaggio da Roberto »

Analizzando la struttura del codice risulta chiaro che trovandoci in presenza di pagine dinamiche e' utile che anche la tabella "categoria" sia dotata di un attributo dedicato alla descrizione delle varie categorie principali utili da inserire sempre nel meta-tag description per i vari motori di ricerca.

L'attributo e' sempre caratterizzato nello stesso modo:

Codice: Seleziona tutto

description VARCHAR(255) NOT NULL,
Ragionavo sull'utilita' di assegnargli la proprieta' NOT NULL e vi invito a considerarne vantaggi e svantaggi in quanto se e' vero che per buona norma sarebbe sempre consigliato inserire una descrizione per ogni menu' o categoria del sito, e' pure vero che in alcuni casi potrebbe anche non rendersi necessario come nel caso di pagine di cui non abbiamo alcun interesse che esse vengano indicizzate sui motori di ricerca.

Questa e' la tabella aggiornata:
Allegati

[L’estensione jpg è stata disattivata e non può essere visualizzata.]

Rispondi