2013-03-29 2 views
0

J'ai besoin de concevoir une table "Tag" où certaines valeurs seront uniques (par exemple 123456), mais où certaines seront une combinaison de la couleur de l'étiquette plus un nombre (par exemple Red 1234).Meilleure façon de concevoir la table de base de données pour la couleur + numéro pour l'unicité?

Je pourrais le faire comme ci-dessous et, si TagColor n'est pas nul alors factoriser cela dans la logique, mais de cette façon ne me semble pas juste. D'autres pensées comment je pourrais concevoir cela mieux?

TagId TagNumber TagColor 
(guid) 123456  (null) 
(guid) 234567  (null) 
(guid) ABC123  (null) 
(guid) 1234  Red 
(guid) 2345  Blue 
(guid) 2345  Green

Merci.

Répondre

0

TagNumber et TagColor sont des propriétés séparées et doivent être définies comme telles. Ensemble, ils font un tuple unique. Vous auriez alors un indice composite sur (TagNumber, TagColor). Quel est le point de la clé de substitution?

+0

Mais certains nombres n'auront pas de couleurs à combiner, ils seront uniques sans la propriété de couleur. Et la raison de l'ID GUID est que nous faisons cela pour toutes les tables ... une valeur unique arbitraire qui identifie le RECORD. Je crois très fort à cela. Ayant comme GUID permet la création d'objet avant l'insertion de la base de données et est également préférable pour la réplication. – user1761600

Questions connexes