Bonjour,
Je fais ce sujet car j'hésite entre deux façons de stocker des données dans l'application que je programme.
En fait mon application va regrouper plusieurs petites applications pour une entreprise. Les utilisateurs seront répartis en groupe, chaque groupe ayant des autorisations pour une ou plusieurs applications.
Ex : le groupe employé à les droits de lecture et modification pour l'appli 1 et de lecture seule pour l'appli 2. Le groupe secrétaire a les mêmes droits + celui de faire un mailing depuis l'appli 1.
Là où j'hésite, c'est :
Premier choix :
Je crée une table GROUPES avec une colonne id_groupe et nom_groupe, puis une colonne par autorisation (donc s'il y a 8 autorisations possibles sur l'appli 1 et 5 pour l'appli 2, ça fera un total de 2+8+5 colonnes).
(Je n'ai pas été très inspiré pour les noms d'autorisation pour cet exemple !).
Deuxième choix :
Je crée une table GROUPES avec une colonne id_groupe et nom_groupe
Je crée une table AUTORISATIONS avec une colonne id_autorisation, appli_autorisation (l'application à laquelle l'autorisation est reliée) et nom_autorisation. Je pré-remplis cette table avec une ligne par autorisation.
Je crée une table GROUPES_AUTORISATION avec une colonne id_groupe et id_autorisation (le tout avec les liaisons étrangères bien entendu). Et lorsque l'utilisateur attribue une autorisation à un groupe, une nouvelle ligne est créée.
Le second choix me paraît plus "propre". Ceci dit, dans la mesure où l'utilisateur ne va pas créer des nouvelles autorisations, que celles-ci n'arrivent que par mise-à-jour, et que donc le nombre d'autorisations est connu, la première me paraît tout à fait valable et nettement plus optimisée (si ce n'est qu'au fur et à mesure du développement, je pourrais me retrouver avec cinquante colonnes, mais ça resterait largement utilisable).
Je sais que les deux solutions fonctionnent, néanmoins, je veux faire le choix le plus propre possible.
Je vous remercie pour votre attention !
Partager