ok donc j'ai ce problème que je dois réaliser ... Voici mon siteUn schéma de base de données bonne
Ce que je dois faire est pour chaque produit vendu je dois avoir 2 autres produits qui sont soit un mise à niveau ou une rétrogradation.
donc il chaque produit a 3 classes standard, les entreprises et la prime et en fonction de ce que le produit actuel, ils sont soit augmentation ou une diminution du prix ..
donc en gros ils personnalisent chaque solution. Donc, ce que je dois comprendre est la meilleure façon de structurer ma db pour ce ... ici est la requête que je l'utilise pour tirer ce que j'ai maintenant
$query = "SELECT p.ProductName, p.price, pc.quantity, p.ProductImage, p.Features
FROM productinfo as p
join preconfig_categories as pc on p.ProductID = pc.product_id
join preconfig as c on c.id = pc.category_id
join subcategory as sc on p.SubCategoryID = sc.SubCategoryID
WHERE c.code = '{$type}_{$count}_{$class}'
order by sc.ordering";
Je pensais dans la table ProductInfo qui est actuellement structuré comme celui-ci
CREATE TABLE `productinfo` (
`ProductID` int(11) NOT NULL AUTO_INCREMENT,
`ProductName` varchar(255) NOT NULL,
`ProductImage` varchar(255) NOT NULL,
`CategoryID` int(11) NOT NULL,
`SubCategoryID` int(11) NOT NULL,
`ProductBrief` varchar(255) NOT NULL,
`Features` text NOT NULL,
`Specifications` text NOT NULL,
`Reviews` text NOT NULL,
`Price` varchar(255) NOT NULL,
`Status` tinyint(4) NOT NULL,
`PartName` varchar(255) NOT NULL,
`skip_step` tinyint(1) DEFAULT NULL,
PRIMARY KEY (`ProductID`)
) ENGINE=MyISAM AUTO_INCREMENT=164 DEFAULT CHARSET=latin1;
Je pensais hors ajouter trois champs supplémentaires
class
product1
product2
donc en gros je peux utiliser la classe pour dire ce que le produit actuel est, puis les deux autres champs Product1 une d product2 qui aura le ProductID des deux autres produits ... Cela semble fonctionner, mais je pense qu'il y a probablement une meilleure solution là-bas, alors on peut travailler un peu mieux ... toute contribution d'idées serait fortement appréciée
Une extension de la réponse de M. Horgan: mettez un champ Sequence dans votre table ProductClasses, de sorte que vous puissiez identifier les produits qui sont des mises à niveau et les downgrades. Cela peut sembler un travail supplémentaire d'ajouter une table entière, mais votre idée d'ajouter des champs supplémentaires ne sera pas bien mise à l'échelle. Comme l'a souligné Horgan, vous aurez certainement besoin d'un quatrième niveau de produit un jour. –
alors disons que j'ai une table ProductClasses ... quels champs seraient les meilleurs pour cela – Trace
Pour une table ProductClasses, je suggère que vous ayez le ProductClassName (Standard, Business etc) et un ProductClassId INTEGER NOT NULL. Dans la table de mappage, vous mappez le ProductClassID, le ProductTypeId et l'ID de transaction client ou l'ID client. –