Invité
Invité n'ayant pas de compte PHPfrance
02 sept. 2009, 08:42
Tout d'abord merci à tous pour vos conseils.
Alors voilà: dans mon modèle réel, j'ai types 3 d'utilisateurs, se trouvant dans 3 tables différentes:
CREATE TABLE `jos_abonnes` (
`id` int(10) NOT NULL auto_increment,
`userId` int(10) NOT NULL,
`profil` int(10) NOT NULL,
`societeId` int(10) NOT NULL,
`prenom` varchar(255) NOT NULL,
`adresse` text NOT NULL,
`cp` int(5) NOT NULL,
`ville` varchar(255) NOT NULL,
`tel` varchar(10) NOT NULL,
`fax` varchar(10) NOT NULL,
`published` tinyint(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
CREATE TABLE `jos_agences` (
`id` int(10) NOT NULL auto_increment,
`userId` int(10) NOT NULL,
`profil` int(10) NOT NULL,
`adresse` text NOT NULL,
`cp` int(5) NOT NULL,
`ville` varchar(255) NOT NULL,
`tel` varchar(10) NOT NULL,
`fax` varchar(10) NOT NULL,
`published` tinyint(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE `jos_prestataires` (
`id` int(10) NOT NULL auto_increment,
`userId` int(10) NOT NULL,
`profil` int(10) NOT NULL,
`agenceId` int(10) NOT NULL,
`socprestationId` int(10) NOT NULL,
`expertise` varchar(255) NOT NULL,
`prenom` varchar(255) NOT NULL,
`adresse` text NOT NULL,
`cp` int(5) NOT NULL,
`ville` varchar(255) NOT NULL,
`tel` varchar(10) NOT NULL,
`fax` varchar(10) NOT NULL,
`published` tinyint(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Chaque table d'utilisateur a un champ 'userId' qui renvoie vers un id dans la table jos_users
CREATE TABLE `jos_users` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
`username` varchar(150) NOT NULL default '',
`email` varchar(100) NOT NULL default '',
`password` varchar(100) NOT NULL default '',
`usertype` varchar(25) NOT NULL default '',
`block` tinyint(4) NOT NULL default '0',
`sendEmail` tinyint(4) default '0',
`gid` tinyint(3) unsigned NOT NULL default '1',
`registerDate` datetime NOT NULL default '0000-00-00 00:00:00',
`lastvisitDate` datetime NOT NULL default '0000-00-00 00:00:00',
`activation` varchar(100) NOT NULL default '',
`params` text NOT NULL,
PRIMARY KEY (`id`),
KEY `usertype` (`usertype`),
KEY `idx_name` (`name`),
KEY `gid_block` (`gid`,`block`),
KEY `username` (`username`),
KEY `email` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=64 ;
Il faut savoir que je ne peux pas modifier cette table users car elle fait partie d'une application plus large qui serait chamboulée. Je ne peux qu'organiser mes autres tables en fonction de cette table jos_users existante.
Ma question: sachant que chaque type d'utilisateur a des champs communs et des champs différents par rapport aux autres profils utilisateurs, quelle serait l'organisation optimale des données pour ne pas souffrir plus tard. Notamment, je galère déjà car quand je veux récupérer des données sur un utilisateur, impossible de dire dans la requete sql dans quelle table il faut aller.
Merci à tous pour votre aide.