C'est un bon début, mais il faut affiner encore plus.
Chaque option est une donnée. Chaque statut est une donnée. Il faut donc tout lister.
Exception : par exemple, les options. Si elles sont variables, il faut modéliser leurs caractéristiques, de la même manière que tu modélises un client, une commande, etc.
Un client est défini par plusieurs propriétés, mais tu ne vas garder que celles qui t'intéressent (par exemple la couleur de ses cheveux est effectivement une propriété qui permet de définir un client, mais tu n'en as pas besoin) comme son nom, son prénom, son adresse, etc.
Si les options sont déterminées et représentent une liste finie d'éléments, alors tu les considères comme telles : des critères, au même titre que le prix, etc. Sinon, il s'agit de données que tu vas associer à d'autres données. A ce titre, il faut les définir. Il se peut qu'elles n'aient pas beaucoup de critères les définissant. Par exemple :
- un identifiant option_ID
- un nom option_NOM
On pourrait avoir besoin d'autres critères permettant de définir des options :
- option_ACTIVE : disponible ou pas ?
- option_DATE_AJOUT : date à laquelle elle a été créée
etc. Les deux exemples ci-dessus ne sont pas forcément pertinents, ce ne sont que des exemples.
Le prix TTC est-il vraiment indispensable ? Il peut être calculé à partir de la TVA : la TVA, par contre, il peut être intéressant de la présenter au client. Selon les produits, elle peut être de 5,5% , 19,6% , ou d'autres valeurs encore. Faut-il la stocker séparément ou laisser la possibilité de la saisir manuellement quand on crée un produit ?
Attention : les propriétés que tu énonces pour le panier ne sont pas vraiment applicables au panier, plutôt à un produit. Exemple :
PRODUIT
- identifiant unique
- nom
- coloris
- taille
- prix HT
- TVA applicable
- description
Pour savoir comment définir le panier, pense à un client dans un magasin avec un panier à la main. Il y place différents produits, lesquels sont définis par les propriétés énoncées ci-dessus.
Le panier est donc défini par :
PANIER
- produits contenus (identifiant de chaque produit + quantité)
- montant (la somme des prix de tous les produits)
on peut lui attribuer des propriétés utiles pour l'implémentation technique, comme la date de création (quand le client est entré dans le magasin), date de mise à jour (pour savoir, quand le magasin ferme, si le client n'est pas sorti sans rien acheter => pour un site, au bout d'un certain temps, on efface le panier, car on considère que le client a abandonné ses achats), etc
Une commande, quant à elle ressemble fortement à un panier, à quelques différences près :
- elle a un identifiant unique (qui peut être une entier qui s'incrémente ou une chaîne de caractères définie suivant certains critères : numéro d'ordre, année, type de client, etc)
- date d'émission
- date de règlement
- état : réglée, en attente de règlement, partiellement payée, etc
- mode de règlement
- adresse de facturation si différente de l'adresse du client (nom, prénom, adresse, code postal, ville, téléphone, indications supplémentaires)
- adresse de livraison (idem adresse facturation)
- liste des articles
Je n'ai peut-être pas poussé complètement dans les détails.
Si tu as quelques euros à dépenser (à partir de 11¤), je te recommande la lecture de
L'essentiel sur Merise de Dominique Dionisi chez Eyrolles, qui explique parfaitement comment concevoir une base de données avec la méthode Merise avec des phrases plus claires que les miennes (j'ai beau faire des efforts, je ne sais pas toujours si je parviens à faire passer tout ce que je veux dire).
D'une manière générale, l'acquisition de livres spécialisés n'est jamais un investissement vain, surtout si tu veux progresser. Je n'ai pas vraiment de références à donner pour PHP/MySQL, mais aux éditions Eyrolles ou Eni, on trouve rarement des bouses. Tiens, si, peut-être que
PHP 5 avancé pourrait être un bon choix (pour faire de la pub à Webdeb ^^). Je sais, les livres techniques sont toujours chers... Mais, je le répète, l'investissement vaut toujours le coup (et puis Noël approche... lol)
V'là ^^
--
Neige
Souvent la réponse à votre question se trouve dans la
doc. Commencez par là ;)