2016-04-27 19 views
0

Ich habe ein primäres Feld namens "Unit", und ich muss angeben, wie viele Objekte (mit großer Variabilität) in ihnen gefunden wurden. Es gibt 116 Arten dieser Objekte, die in 6 Kategorien unterteilt werden können. Jede Kategorie bestimmt, welche Attribute zur Beschreibung jedes Objekttyps verwendet werden können. Für jede Einheit muss ich aufzeichnen, wie viele Arten von Objekten darin gefunden werden, und dokumentieren, wie viele von ihnen jedes Attribut aufweisen. Ich skizzierte Beispiele für das Schema und wie ich es anwenden muss. Die einfachste Lösung wäre vielleicht, für jeden Typ eine Tabelle zu erstellen und sie mit der Tabelle in Beziehung zu setzen, die die Einheitenliste enthält, aber dann wird es so viele Tabellen geben (gibt es ein Limit in MS Access?). Ist es sonst möglich, 'geschachtelte Felder' im Zugriff zu erstellen? Ich habe gerade diesen Termin gemacht, aber es scheint zu beschreiben, was ich tun möchte."verschachtelte Felder" in MS Access

  • Kategorie 1 (attribs: a, b, c, d)

    • Typ 1
    • Typ 2
  • Kategorie 2 (attribs: x, y, z)

    • Typ 3
    • Typ 4

  • Einheit
    • Typ 1 | a | b | c | d |
    • Typ 2 | a | b | c | d |
    • Typ 3 | x | y | z |
    • Typ 4 | x | y | z |

UPDATE: Um zu klären, ich brauche im Wesentlichen untergeordnete Tabellen für jedes Feld meiner primären Tabelle zu erstellen. Jedes Feld hat Unterattribute, und ich muss in der Lage sein, die Verteilung von Objekten mit dieser feineren Auflösung zu spezifizieren.

Antwort

1

Was Sie wollen, ist dieser Frage auf SO ähnlich: Database design - multi category products with properties.

Sie haben also eine dritte Tabelle, die jeden Attributwert mit der Einheit in Beziehung setzt. Und um zu steuern, welche Attribute jede Kategorie haben kann, wird eine vierte Tabelle benötigt, die die Attribute (Namen) für jede Kategorie spezifiziert.

Unit: 
    .id 
    .categoryid 

Category: 
    .id 
    .cat_name 

Category_Attributes: 
    .attribID 
    .categoryid 
    .attribute_name 

Unit_Attributes: 
    .unitid 
    .attribID 
    .attrib_value 
+0

Ich bin mir nicht sicher, ob dies das Problem widerspiegelt, vor dem ich stehe. Um dies zu verdeutlichen, muss ich im Grunde Untertabellen für jedes Feld meiner Primärtabelle erstellen. Jedes Feld hat Unterattribute, und ich muss in der Lage sein, die Verteilung von Objekten mit dieser feineren Auflösung zu spezifizieren. –

+0

Sie müssen keine Untertabellen erstellen. Was Sie brauchen, ist eine Beziehung zwischen den Attributen der einzelnen Einheiten und den Werten dieser Werte herzustellen. Dies wird in 'Unit_Attributes' erledigt, was eine gültige' AttributID' von 'Category_Attributes' mit den gültigen Kombinationen von Kategorien und Attributnamen enthält. OTOH, die [2. Antwort in der verknüpften Frage] (http: // stackoverflow.com/a/1590460/1431750) bedeutet jedoch, dass das Erstellen einer Tabelle pro Kategorie besser ist, wenn für jede Spalte kein ** generischer Datentyp ** verwendet wird. Ansonsten geh mit [soln 1] (http://stackoverflow.com/a/1590453/1431750), wie oben beschrieben. – aneroid

+0

Ich denke, ich muss die zweite Lösung verwenden und eine neue Tabelle für jeden meiner 16 Typen erstellen. Man denkt, es scheint, dass Sie übersprungen haben, dass jeder Typ einen anderen Datentyp hat, abhängig von der Kategorie, nicht jede Einheit. Jede Einheit muss dann Werte enthalten, die das Vorhandensein von Objekten jedes Typs anzeigen (die meisten davon werden auf 0 gesetzt). Ich entschuldige mich für diese äußerst komplizierte Frage und die anschließende "Klärung". –