par
Berzemus » 14 août 2008, 12:00
Je regarde depuis tout à l'heure je pense que pour chaque jour je vais créer un array d'horaire, le serialize pour le mettre dans une chaine de caractere dans ma bd et vis versa pour les ressortir.
Une bonne idée ?
non.
Mettre un tableau serializé dans un champ, c'est contredire la première règle de la théorie de normalisation des bases de données[1]:
1)tout les attributs contiennent une valeur atomique
La meilleure chose, et la plus simple a faire, est de faire un second tableau ou seront enregistrés les horaires, liés chacun par ID à un type de cours.
Parce que sinon, que se passera-t-il s'il faudra modifier un horaire ? en effacer un ? Appeler le tableau, le désérialiser, enlever l'entrée, en mettre un nouveau (dans quel ordre ?), resérialiser, renvoyer dans le tableau.. compliqué. Alors que si bien normalisé, une simple requête SQL suffira.
Et quid d'un aperçu global de la semaine ? Il faudra appeler
chaque cours (donc, plein de données complètement inutiles), sortir a chaque fois l'horaire, le désérialiser, retirer les informations nécessaires et traiter ? Alors qu'a nouveau une seule requête SQL suffirait..
Et si on veut que les stages du lundi ? Ou tous les stages entre 8 et 22 heures ? Et comment vérifier que deux cours ne sont pas enregistrés aux mêmes heures ?
Bref, faire comme tu le propose certes, c'est facile à imaginer et à implenter. Mais, avec un minimum de de prévoyance, c'est aller droit dans le mur..
(mais bon, c'est pas une application critique non plus, fais ce qui te semble bien, mais si tu dois retravailler ou si quelqu'un un jour doit replonger dans tes données.. ça risque de faire mal).
[1]
http://fr.wikipedia.org/wiki/Forme_norm ... ionnelles)
[quote="nouveau"]Je regarde depuis tout à l'heure je pense que pour chaque jour je vais créer un array d'horaire, le serialize pour le mettre dans une chaine de caractere dans ma bd et vis versa pour les ressortir.
Une bonne idée ?[/quote]
non. :wink:
Mettre un tableau serializé dans un champ, c'est contredire la première règle de la théorie de normalisation des bases de données[1]:
[b]1)tout les attributs contiennent une valeur atomique[/b]
La meilleure chose, et la plus simple a faire, est de faire un second tableau ou seront enregistrés les horaires, liés chacun par ID à un type de cours.
Parce que sinon, que se passera-t-il s'il faudra modifier un horaire ? en effacer un ? Appeler le tableau, le désérialiser, enlever l'entrée, en mettre un nouveau (dans quel ordre ?), resérialiser, renvoyer dans le tableau.. compliqué. Alors que si bien normalisé, une simple requête SQL suffira.
Et quid d'un aperçu global de la semaine ? Il faudra appeler [i]chaque[/i] cours (donc, plein de données complètement inutiles), sortir a chaque fois l'horaire, le désérialiser, retirer les informations nécessaires et traiter ? Alors qu'a nouveau une seule requête SQL suffirait..
Et si on veut que les stages du lundi ? Ou tous les stages entre 8 et 22 heures ? Et comment vérifier que deux cours ne sont pas enregistrés aux mêmes heures ?
Bref, faire comme tu le propose certes, c'est facile à imaginer et à implenter. Mais, avec un minimum de de prévoyance, c'est aller droit dans le mur..
(mais bon, c'est pas une application critique non plus, fais ce qui te semble bien, mais si tu dois retravailler ou si quelqu'un un jour doit replonger dans tes données.. ça risque de faire mal).
[1] [url]http://fr.wikipedia.org/wiki/Forme_normale_(bases_de_donn%C3%A9es_relationnelles)[/url]