Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2232 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Catégories et sous-catégories

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Catégories et sous-catégories

n°2003108
Balzard
Posté le 20-06-2010 à 17:09:45  profilanswer
 

Bonjour à tous :)
 
Je suis entrain de mettre au point dans ma base de données des catégories et sous catégories dans lesquelles se trouveront des objets.
Il y a quelques subtilités qui me compliquent la tâche.
En effet, chaque catégorie à un nom mais dans plusieurs langues !
Chaque catégorie peut avoir une ou aucune catégorie mère.
Mais chaque catégorie peut avoir aucune, une ou plusieurs sous catégories.
Par contre pour le moment en tout cas, un objet n'appartient qu'à une seule catégorie !
(Je pense qu'une table supplémentaire serait nécessaire si je le voulais).
 
Voilà comment je voix le truc pour le moment, j'aimerais avoir votre avis,
Pensez vous que je m'y prend bien où bien peut on faire plus simple ou plus propre ?
 
J'ai donc une table catégorie avec les champs suivants
- id (INT) : Simplement l'id de la catégorie (Primary Key)
- mere_id (INT) : Est l'id de la catégorie mère (peut être NULL) (Foreign Key)
- position (INT) : Simplement un paramètre pour l'ordre d'affichage des catégories
 
Et une table langue_categorie
- categorie_id : L'id de la catégorie dont on contient le nom (Fait partie de la Primary Key)
- langue : Simplement la langue de traduction. Exemple : fr en es etc... (Fait partie de la Primary Key)
- nom : Enfin, le nom de la catégorie dans la langue spécifiée au dessus.
 
http://img217.imageshack.us/img217/1230/bddg.jpg
 
Merci d'avance pour vos conseils !!
 
Bonne journée.
 
Balzard
 
Pour ceux qui préfère le SQL :

-- -----------------------------------------------------
-- Table `db`.`categorie`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `db`.`categorie` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `mere_id` INT NULL DEFAULT NULL ,
  `position` INT NOT NULL DEFAULT 0 ,
  PRIMARY KEY (`id`) ,
  INDEX `fk_categorie_categorie` (`mere_id` ASC) ,
  CONSTRAINT `fk_categorie_categorie`
    FOREIGN KEY (`mere_id` )
    REFERENCES `db`.`categorie` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;
 
 
-- -----------------------------------------------------
-- Table `db`.`langue_categorie`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `db`.`langue_categorie` (
  `categorie_id` INT NOT NULL ,
  `langue` VARCHAR(2) NOT NULL ,
  `nom` VARCHAR(45) NOT NULL ,
  PRIMARY KEY (`categorie_id`, `langue`) ,
  INDEX `fk_langue_categorie_categorie` (`categorie_id` ASC) ,
  CONSTRAINT `fk_langue_categorie_categorie`
    FOREIGN KEY (`categorie_id` )
    REFERENCES `db`.`categorie` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;



Message édité par Balzard le 20-06-2010 à 17:28:03
mood
Publicité
Posté le 20-06-2010 à 17:09:45  profilanswer
 

n°2003162
Oliiii
Posté le 21-06-2010 à 08:42:01  profilanswer
 

C'est la facon standard de gerer les données hierarchique, donc tu devrais pouvoir faire ce que tu veux sans trop de problemes.
 
Il y a quelques subtilité qui peuvent etre ajoutée mais seulement si tu trouves que tu as des problemes de performance (evidement les subtilités dependent de ce que tu veux comme resultat).

n°2003167
rufo
Pas me confondre avec Lycos!
Posté le 21-06-2010 à 09:33:12  profilanswer
 

Le principal pb avec cette modélisation (je l'ai employée dans mes soft Astres et Icare, cf ma signature), c'est l'affichage de l'arbo : t'es obligé de faire pas mal de requêtes, c'est récursif (même si tu peux mettre en oeuvre un algo itératif à base d'un tableau et de 2 indexes).
 
Une autre modélisation possible et plus pratique à manipuler, la représentation intervallaire : http://sqlpro.developpez.com/cours/arborescence/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Catégories et sous-catégories

 

Sujets relatifs
[PHP / SQL] Conception Menu Dynamique a sous Categories Variables[MCD] multiples catégories de produits
Lister catégories une seule foisWordpress : sous-catégories & co.
Comment gérer des catégories et sous catégories ?[php] Optimisation de ma classe 'Arbre de categories'
Créer les catégories d'un annuaireCréation de catégories en PHP
Script pour gestion de cours par catégoriesQuelles catégories dans un annuaire ?
Plus de sujets relatifs à : Catégories et sous-catégories


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)