2010-05-19 5 views
0

Je sais stocker plusieurs valeurs dans une colonne. Pas une bonne idée.SQL Server - Stockage de plusieurs valeurs décimales dans une colonne?

Il viole la première forme normale --- qui n'indique AUCUN attribut multi-valeur. Normaliser période ...

J'utilise SQL Server 2005

J'ai une table qui nécessitent de stocker limite inférieure et limite uppper pour une mesure, pensez comme une limite de vitesse minimale et maximale ... seulement le problème est seulement de 2% de hundread j'ai besoin de limite supérieure. Je n'aurai que des données pour la limite inférieure.

Je pensais à stocker les deux valeurs dans une colonne (colonne Sparse introduit en 2008 afin de ne pas pour moi)

Est-il possible ...? Vous ne savez pas à propos de XML ..

Répondre

2

Vous devez stocker une quantité folle de lignes pour que cela soit important. Le prix d'un disque de 1 téraoctet est maintenant de 60 dollars!

Deux flotteurs utilisent jusqu'à 8 octets; une chaîne XML en utilisera un multiple juste pour stocker un flottant. Ainsi, même si XML n'enregistre qu'une seule colonne au lieu de deux, elle consomme toujours plus d'espace.

Utilisez simplement une colonne nullable.

+2

Multipliez par votre configuration RAID. Et combien coûte le matériel pour héberger ce 1 To? De telle sorte que toutes les personnes (peut-être les utilisateurs d'Internet 1M) ont un accès continu et simultané? Et les gens pour soutenir ce matériel? Source de courant? La planification des catastrophes, sur le hasard de votre entreprise va mourir si vous perdez ces données? L'espace sur le disque dur est bon marché. L'espace disque dur au niveau de l'entreprise ne l'est pas. –

+0

@Philip Kelley: Ce que vous lister peut coûter (beaucoup) d'argent, mais il est à peine lié à la taille du disque dur. Une alimentation coûte autant pour un disque de 1 Go que pour un disque de 1 To – Andomar

2

Pour répondre à votre question, vous pouvez la stocker sous forme de chaîne avec un format particulier que vous savez comment analyser (par exemple "low: high").

Mais ... ce n'est vraiment pas une bonne idée. Traitant de 98% des lignes ayant une valeur nulle pour la limite supérieure est totalement à mon humble avis. Gardez-le propre, et vous ne le regretterez pas plus tard.

1

Même ainsi, je suis d'accord avec Andomar. Utilisez deux colonnes, limite basse et limite haute. Si l'une ou l'autre valeur peut être inconnue, rendez ces colonnes nullables.

Vous pouvez également désigner des valeurs minimales et maximales arbitraires par défaut et utiliser ces valeurs à la place des valeurs null. (Cela signifie que vous n'aurez jamais à manipuler la logique trinaire, par exemple avoir à tout emballer avec ISNULL ou COALESCE.)

Une fois que vous définissez votre schéma, il y a des astuces que vous pouvez utiliser pour réduire l'espace de stockage (comme la compression et la sparce) colonnes).

Questions connexes