Si je construis une solution e-commerce multi-boutiques et que la table des commandes doit gérer un ID séquentiel en magasin, quelle est la meilleure façon de procéder?Conception de base de données gérant de manière incrémentielle le champ ID, l'évolutivité - confus
Par exemple imaginer ces ID d'ordre dans l'ordre: -
UK0001
UK0002
UK0003
DE0001
UK0004
DE0002
etc.
par groupées ID PK MySQL/MyISAM
- MySQL gérer automatiquement si un champ de pays et un champ ID incrémentation automatique sont utilisé. Mais MyISAM a quelques problèmes inhérents tels que le verrouillage de table et cette fonctionnalité semble que c'est fonctionnalité qui est seulement disponible dans MyISAM donc moteur de base de données en mouvement ne serait pas possible avec cette solution.
Par programme. Disons que nous avons deux domaines: ORDER_ID (auto globale inc colonne PK géré par DB), NUMÉRO_COMMANDE (spécifique au pays champ ID séquentiel maintenu par code) et la table a également une colonne de shop_id associer les commandes aux commerces .
donc - après le nouvel ordre enregistrement a été créé et le moteur DB a attribué une carte d'identité au nouvel enregistrement, et le numéro de commande nouvellement créé a été récupéré dans le code comme newID variable $
select order_number+1 as new_order_number from orders where order_id < $newID and shop_id = UK order by order_id desc limit 1
(ce code est pseudo/sql BTW)
questions:
est-ce un feasi solution ble? Ou y a-t-il une meilleure façon plus efficace de le faire?
Lorsque la table contient plus de 1 million d'enregistrements, le surdébit de requête supplémentaire par soumission de commande peut-il causer des problèmes ou non?
Il semble qu'il y ait une chance de conflits de numéros de commande si deux commandes sont passées pour le même pays et qu'elles sont traitées simultanément. Si c'est une possibilité? si oui, y a-t-il un moyen de se protéger contre cela? (peut-être un index unique et une transaction?)
Réjouissez-vous de votre aide!
Merci