Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

On se mord la queue.... comment faire....

11 réponses
Avatar
PRORIOL Fabien
Bonjours,

Je travail avec MySQL 4.1.7.
J'utilise des table InnoDB et je gère donc mes relations.

Ma question :
J'ai deux tables :

CREATE TABLE `contact` (
`id` int unsigned NOT NULL auto_increment,
`nom` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`prenom` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`email` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`adresse` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`tel` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci,
`portable` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci,
`fax` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci,
`login` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY (`ID`)
) TYPE=InnoDB;

CREATE TABLE `users` (
`login` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`motdepass` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci
NOT NULL,
`fonction` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci
NOT NULL,
`contact` int unsigned NOT NULL,
PRIMARY KEY (`login`),
KEY `contact` (`contact`),
FOREIGN KEY (`contact`) REFERENCES `contact` (`id`)
) TYPE=InnoDB;

En effet, le 'users' est un 'contact' particulier; d'ou la clé étrangère.

Mais voila, le 'contact' est lui même créé par un 'users' sauf 1 qui est
le root.
Je voulais donc avoir une clé étrangère dans la table contact (le champ
'login') qui relie a la table users, mais voila, on se mord la queue!!!!!

Comment faut-t-il faire?

Merci,
@+Fab

1 réponse

1 2
Avatar
PRORIOL Fabien
Cela permet de gérer en plus le cas où vous donnez à un moment un accès à
un contact comme utilisateur du site donc, et après vous lui enlevez son
accès (mais le conservez en tant que personne donc).
Dans ce cas de figure, vous le faite disparaitre de la table users, et
toutes les liaisons de contact sur elle-même (pour noter quels contacts
ont été créés par cette personne) continuent d'être bonnes.
Vous aurez bien plus de problèmes à gérer ce cas de figures en cas de
références croisées entre 2 tables.



Bsoir;
Vraiment merci pour ta solution ;-)

Franchement des fois on se prend la tête pour des truc super balaise alors que la solution est vraiment trivial!!!

Encore merci; et c'est cette solution que je vais utiliser je pense.
C'est vrais que le truc des référence circulaire, sa ne m'enchantait pas trop!!!

@+Fab
1 2