2010-03-16 5 views
1

J'ai besoin d'un moyen de stocker un int pour N colonnes. En fait ce que j'ai est le suivant:Comment stocker des données avec N colonnes

Armies: 
ArmyID - UINT 
UnitCount1 - UINT 
UnitCount2 - UINT 
UnitCount3 - UINT 
UnitCount4 - UINT 
... 

Je ne peux pas possible d'ajouter une colonne pour chaque unité, donc je besoin d'un moyen rapide pour stocker le nombre de chaque unité dans une armée (vous pourriez avoir deviner c'est pour un jeu maintenant). L'utilisation de XML n'est pas une option car elle sera lente lente.

Répondre

2
 
Armies 
------ 
ArmyID 


Units 
----- 
UnitID 
Description 
Strength 
Hitpoints 


ArmyUnits 
--------- 
ArmyID 
UnitID 
Count
+0

Très bien, merci à vous et à tous les autres! – CMircea

+0

Vous devriez en apprendre plus sur la troisième forme normale http://en.wikipedia.org/wiki/Third_normal_form pour les bases de données. Cette solytion est exactement le 3NF pour vos données. Vous devriez faire toutes vos tables de cette façon. – naugtur

1

Vous pouvez utiliser la table comme ceci:

Armies 
(
    ArmyID 
    UnitID 
    UnitCount 
) 
0

Définition d'une relation 1: n (3ème forme normale)

Table Armies 
    ArmyID 

Table Units 
    ArmyId 
    UnitId 
    UnitCount 

Ou le faire dans une table

Table ArmyUnits 
    ArmyId 
    UnitId 
    UnitCount 

Cette signifie évidemment que vous avez plus d'une entrée par ArmyId.

0

Vous pouvez utiliser deux tables:

Armies: 
ArmyID - UINT 

Units: 
ArmyID - UINT 
UnitIndex - UINT 
UnitCount - UINT 
0

Cela vous permettra de stocker vos comptes dans une relation un à plusieurs. Avec la UnitID dans la table UnitCount étant une clé étrangère à la table Armies.

Armies 
(
    ArmyID 
    UnitID 
) 

UnitCount 
(
    UnitID 
    UnitCount 
) 
Questions connexes