Je construis une petite base de données pour un laboratoire. Nous avons quelques règles pour faire une chaîne d'identification pour chaque article, donc je ne veux pas le stocker dans ma base de données. Le problème est que parfois des changements dans les données, par exemple la réponse de la personne pour cet élément a changé, provoque le changement de chaîne d'identification. Mais je ne peux pas le corriger pour les documents imprimés. Comment puis-je stocker l'ancienne version de cette chaîne d'identification. Je peux simplement ne pas le changer mais cela va enfreindre les règles. Aucune suggestion?Comment stocker l'ancienne version de la chaîne d'ID dans Database Design?
Répondre
Il est important de distinguer entre une clé primaire qui est censée identifier de façon unique une ligne dans une table et une sorte de clé intelligente que les produits des catalogues ont habituellement.
Pour une clé primaire, utilisez un entier auto-incrémenté - très peu d'exceptions à celle-ci.
Ajouter des colonnes pour des choses que vous essayez de représenter dans cette clé intelligente, comme: Person
, Project
, Response
etc.
Ajouter une colonne séparée pour cette clé et de le traiter comme tout autre champ dans la table - - Cela devrait garder les gens habitués à ce genre de pensée heureux. La clé intelligente est un abus de langage ici, à partir d'un point de conception db, cette clé est plutôt bête.
Merci Damir. Je ferai probablement comme tu l'as dit. Et j'ajouterai un champ de note. Donc, ils peuvent stocker la version actuelle de l'ID là-bas. Mais alors je ne peux pas chercher avec un nouvel ID, je dois chercher avec le champ Personne, Projet, Réponse ... peut-être que j'ai besoin d'une Table d'IdVersions ?? – gstar2002
Vous pouvez ajouter une colonne de version pour la ligne. Chaque nouvelle version peut ajouter une ligne et incrémenter la version. De cette façon, vous préservez l'histoire. Toutes les valeurs FK précédentes de cette table restent inchangées. Toutes les nouvelles valeurs FK pointent vers la dernière version. –
par exemple la réponse de personne pour cet élément a changé, provoque l'chang ID chaîne
On dirait que le flux de travail dans votre laboratoire est cassé. Les identifiants ne devraient jamais changer. Essayez d'attirer l'attention de vos supérieurs.
@eveloper Art. L'ID ressemble à 'abc/12/xzy', abc est l'abréviation du nom du projet, xzy est l'abréviation du nom de la personne. Les gens l'utilisent parce qu'ils peuvent obtenir des informations sur cette chaîne. Mais vous avez raison, peut-être que nous devrions seulement utiliser cette règle pour créer cet ID. – gstar2002
Pour développer le point
A "Smart Key" de Damir est ce que vous dites quand
Nous avons des règles pour une chaîne d'identification pour chaque article
Vous êtes prendre le nom de l'article, peut-être un code de catégorie et ajouter
réponse de la personne à cet objet
Donc, si je responsable de béchers cet élément ID peut être
VERRERIE-bechers SPAGE
Ce « code » devient une « clé intelligente » lorsque vous l'utilisez dans votre base de données en tant que Clé primaire.
Ceci est un anti-pattern. Comme la plupart des anti-modèles, c'est séduisant. Les gens aiment l'idée de simplement regarder la clé et savoir quel genre de chose c'est, comment on l'appelle et à qui je demande d'en avoir plus. Toutes ces informations sur un rapport ou une étiquette avec juste quelques caractères. Mais c'est un anti-pattern pour la raison que vous avez mentionnée - il a un sens et une signification peut être changé. Comme Damir le suggère, vous pouvez stocker cette valeur dans une autre colonne que nous appellerions une ALTERNATE KEY ou CANDIDATE KEY ... c'est unique, ça pourrait être un PK mais ce n'est pas le cas. Vous aurez besoin d'une contrainte unique sur la colonne mais pas de contrainte de clé primaire.
- 1. SVN Database Design
- 2. Django Database Design - Null pour
- 3. SQL Database Design - Tables de cache?
- 4. Database Design: commander plusieurs-à-plusieurs
- 5. Database Design et performance: mySQL et PHP
- 6. Visual Database Design Composants Delphi VCL?
- 7. stocker de grandes données dans la chaîne
- 8. comment stocker la chaîne de connexion mysql
- 9. Mysql Database Design Un catalogue d'achats complexes Part
- 10. Chaîne de connexion pour Ms Access Database
- 11. Visual Studio Database Edition - Ai-je la version actuelle?
- 12. Database Design: par exemple la relation entre la carte de crédit et carte de crédit type
- 13. Comment stocker un numéro de version dans une bibliothèque statique?
- 14. Good Database-Design n'a pas de colonnes d'identité dans les tables, n'est-ce pas?
- 15. DB design pour stocker les champs personnalisés pour une table
- 16. Version chaîne de term_to_binary
- 17. Comment modifier la version SDK de la version dans Xcode?
- 18. Comment puis-je vérifier si UIViewController "Did Dismiss"?
- 19. Comment séparer la valeur de chaîne et de créer temporaire pour stocker la chaîne séparée dans la table temporaire
- 20. Comment capturer la sortie de la fonction "present" et la stocker dans une chaîne
- 21. Comment stocker l'objet (pas de chaîne) dans la session dans le cadre de jeu?
- 22. Django Database design - Est-ce un bon stragety pour les défauts par défaut
- 23. Comment stocker le résultat d'une JSP dans une chaîne?
- 24. Comment stocker la valeur wchar dans la chaîne de guillemets double
- 25. Comment créer DataBase:
- 26. comment drop database
- 27. Comment créer une chaîne "Version 1.0" en C#
- 28. Comment interroger SQLite Database dans Android?
- 29. Comment fonctionne la licence GNU GPL Version 3 pour CSS/Design?
- 30. comment stocker une chaîne en utilisant array dans c?
question n'a pas de sens (pour moi, au moins) –
@Mitch Wheat. Oui, cela n'a aucun sens si nous n'essayons pas de changer cette identification. Mais si vous respectez les règles, nous devrions les changer. – gstar2002