J'ai des instances de Item
que j'aimerais avoir dans les groupes ItemGroup
. Mais si un Item
est déplacé vers un autre groupe d'articles, j'aimerais garder une trace du changement pour des raisons de responsabilité. Par exemple. J'ai besoin de savoir si un Item
était dans un ItemGroup
en octobre et un autre en septembre.Comment modéliser une relation de groupe dans la base de données et dans la POO?
Comment dois-je modéliser ceci dans la base de données? Comment dois-je modéliser cela dans mes cours, OOP? Je peux voir quelques solutions différentes, mais elles sont toutes compliquées d'une certaine façon, donc je ne sais pas comment l'implémenter.
Soit je pourrais aller avec trois tables, Item
ItemGroup
GroupRelation
et de garder un horodatage sur le GroupRelation
. Si les informations sur l'élément sont mises à jour, je dois créer un nouvel élément et un nouveau GroupRelation. Si le groupe change d'élément, je dois créer un nouveau GroupRelation. Et si les informations du groupe sont modifiées, je dois créer un nouveau groupe et un nouveau GroupRelation. C'est complexe car je dois créer plusieurs nouveaux objets lors du changement.
Item
+----+---------+-----+------+
| id | item_nr | ean | name |
+----+---------+-----+------+
ItemGroup
+----+------------+-----+
| id | group_name | vat |
+----+------------+-----+
GroupRelation
+----+---------+----------+-----------+
| id | item_id | group_id | timestamp |
+----+---------+----------+-----------+
Une autre solution pourrait être d'avoir que deux classes Item
et ItemGroup
mais je dois avoir un horodatage dans les deux d'entre eux, je sais quand ils sont changés. Si le groupe est mis à jour, je dois mettre à jour tous les éléments qui appartiennent à ce groupe, donc c'est aussi complexe.
Item
+----+---------+-----+------+----------+-----------+
| id | item_nr | ean | name | group_id | timestamp |
+----+---------+-----+------+----------+-----------+
ItemGroup
+----+------------+-----+-----------+
| id | group_name | vat | timestamp |
+----+------------+-----+-----------+
Et il y a probablement d'autres solutions, l'une est peut-être de déplacer les anciennes versions vers une autre table. Mais alors est-il complexe de rechercher des données lorsque les données actuelles et anciennes doivent être recherchées. Ou je pourrais avoir une colonne prev_id
ce lien vers l'ancienne version.
Y a-t-il quelqu'un qui a l'expérience de modèles de données similaires et qui a des recommandations? Y a-t-il des meilleures pratiques pour ce genre de problème?
Je ne suis pas une partie de votre logique. Pourquoi devriez-vous créer un nouvel élément/groupe lorsque certaines de ses informations sont mises à jour? –
@Joe: Pour des raisons de responsabilité. L'ancienne version doit être sauvegardée. – Jonas