Petite question de logique

Mammouth du PHP | 1511 Messages

23 déc. 2006, 01:02

Bonsoir,
je me posais une petite question quant a l'élaboration d'un projet dont j'ai pris les rennes récemment.
Je dois gerer une plateforme multisite comportant des modules répertoriés dans une base mysql, mais je me posais quelques petites questions nottament a cause du fait que certains modules sont disponibles sur certains sites et pas sur d'autres, donc je me demandais si il était possible de rentrer plusieurs valeurs dans un champ, et lors de la requete SELECT, que si la valeur est contenue dans le champ, le module soit consideré comme valide pour le site ?
Merci d'avance ;)

ViPHP
ViPHP | 1961 Messages

23 déc. 2006, 01:47

Bonsoir,

Personnellement je te conseillerai deux tables et une relation n, n entre les deux.
De façon très, très simpliste

Table site
id_site
nom
.....
Table modules
id_module
nom
......
Relation (table) modules_site
id_site
id_module
....

Réfléchis à la souplesse de cette architecture.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Mammouth du PHP | 1511 Messages

23 déc. 2006, 13:45

Oui mais un problème se pose pour moi, c'est que le module peut être actif pour plusieurs sites, donc si je suis ta logique, ca va me faire une redondance entre les tables ...
@+

ViPHP
ViPHP | 1961 Messages

23 déc. 2006, 13:55

Bonjour,

Pas du tout, c'est le contraire tu l'évites cette redondance.

Un exemple
Table site
id_site = s1, s2, s3
Table modules
id_module = m1, m2, m3.

On va dire que le site s1 a droit à tous les modules
que le site s2 a droit aux modules m1 et m3
et que le site s3 n'a lui droit qu'a m2
tu aurais dans modules_site
s1 - m1
s1 - m2
s1 - m3
s2 - m1
s2 - m3
s3 - m2
Si maintenant tu veux récupérer les modules pour le site s1,
une simple requête sur modules_site te les donnera
SELECT id_module FROM modules_site WHERE id_site = s1;
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Mammouth du PHP | 1511 Messages

23 déc. 2006, 14:29

Ah ok, pas trop mauvaise idée, j'avais pas percu ca dans ce sens ^^
Merci :P
@+

Eléphant du PHP | 377 Messages

23 déc. 2006, 15:00

hello
je profite de ce post pour poser une question qui me taraude : dans le cas d'une cardinalité n:n, faut-il indexer la table de liaison et/ou créer une clé primaire dans cette table? à première vue je dirais que non, mais j'aimerais votre avis là dessus
Petit scarabée deviendra grand

ViPHP
ViPHP | 1961 Messages

23 déc. 2006, 15:09

Dans le cas de l'exemple dans la table modules_site les deux champs id_site et id_module doivent, à eux deux former la clé primaire.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein