le 12/08/2007 à 08:17
LupusMic
Bonjour tout le monde,
J'ai créé les tables suivantes (j'élude volontairement les attributs qui ne sont pas pertinent ici :
Le principe est le suivant. Sur le site, on créé un compte (table accounts) pour pouvoir se loguer. Lors de l'inscription, un compte est créé ainsi qu'un profil (table peoples). Un compte ne correspond pas forcément à un profil (par exemple, les comptes god et admin ne sont pas des personnes), mais un profil est forcément créé par un compte.
Comme je m'en doutais lorsque j'ai écris ces tables, on a droit à un joli deadlock lorsqu'on veut supprimer un compte.
Est-ce que c'est le genre de cas où la table de jointure est obligatoire ? Et est-ce que mes tables sont mal analysées, ou est-ce une limitation du modèle des contraintes SQL ?
Merci de vos réflexions !
J'ai créé les tables suivantes (j'élude volontairement les attributs qui ne sont pas pertinent ici :
cre.sql
create table accounts
( id integer auto_increment
, people_id integer default null
, username varchar(255) unique not null
, foreign key (people_id) references peoples(id)
, primary key (id)
) type='innodb' ;
create table peoples
( id integer auto_increment
, creator_account_id integer not null
, foreign key (creator_account_id) references accounts(id)
, primary key (id)
) type='innodb' ;
Le principe est le suivant. Sur le site, on créé un compte (table accounts) pour pouvoir se loguer. Lors de l'inscription, un compte est créé ainsi qu'un profil (table peoples). Un compte ne correspond pas forcément à un profil (par exemple, les comptes god et admin ne sont pas des personnes), mais un profil est forcément créé par un compte.
Comme je m'en doutais lorsque j'ai écris ces tables, on a droit à un joli deadlock lorsqu'on veut supprimer un compte.
Est-ce que c'est le genre de cas où la table de jointure est obligatoire ? Et est-ce que mes tables sont mal analysées, ou est-ce une limitation du modèle des contraintes SQL ?
Merci de vos réflexions !