2016-08-04 13 views
0

Sagen wir, ich habe N Unternehmen (N < = 15). Jedes Unternehmen verkauft Äpfel. Ich möchte Apple-Eigenschaften in einer Datenbank speichern.Tabelle Design für ähnliche Produkte

Firma A beschreibt folgende Eigenschaften ihrer Früchte: type, field1, field2,

Firma B - type, field1, field3.

Für Unternehmen A und Feld type gibt es 3 mögliche Werte: 1, 2 und 3. Für Unternehmen B sie 1 sind, 2 und 4 I max 10 möglichen Werte für das Feld type insgesamt haben wird, rund 20 möglich Felder insgesamt und eine Unmenge von Einträgen für Apple-Eigenschaften. Wie sollen meine Tische aussehen?

Version 1: Erstellen Sie eine Enum für type Feld, mit allen möglichen Werten zusammengeführt (1,2,3,4). Erstellen Sie die Tabelle apples mit allen möglichen Feldern (type, field1, field2, field3).

Version 2: Erstellen Sie separate Enums für type Feld für jede Firma. Erstellen Sie separate Tabellen für Apple-Eigenschaften für jede Firma.

Version 3: Das gleiche wie Version 2, aber gemeinsame Eigenschaften in nächste Tabelle verschieben.

Version 4: Vesion 1 + Tabelle type_config sagen, welche type Werte für jede Firma zulässig sind. Es würde company_id Feld (fk zu irgendeiner Tabelle) und ein Feld mit möglichem Wert/oder fk zu diesem Wert haben.

Alle von ihnen scheinen mir schlecht. Was wäre die beste Lösung im wirklichen Leben?

Antwort

0

Verwenden Sie keine Enums dafür. Verwenden Sie eine geeignete Referenztabelle:

create table Properties (
    PropertyId serial primary key, 
    Name varchar(255) 
); 

Dann erstellen Sie eine Tabelle von Eigenschaften für jedes Unternehmen:

create table CompanyProperties (
    CompanyPropertyId serial primary key, 
    CompanyId int references Companies(CompanyId), 
    PropertyId int references Properties(Property), 
    value ??? 
); 
0

Der Versuch, Entity-Beziehungen zu setzen:

  1. Es gibt n Anzahl der Apfeltypen in der Welt
  2. Jeder Typ kann ähnlich sein/verschiedene Attribute
  3. Eine Firma kann mit 1..n verschiedenen Apfeltypen umgehen
  4. Dort können 1.m Firmen.
  5. Transaktion von Äpfeln von verschiedenen Firmen

Sie würden für Unternehmen benötigen;

  1. Company (Für 4. Artikel oben erwähnt)
  2. Verschiedene Arten von Apfeltypen in Welt (für 1. Artikel)
  3. Typen von Äpfeln mit, welche Attribute sie haben (2. Artikel oben erwähnt)

    (a) Es ist besser Differenzierung als obligatorischen Attribute für Typen zu haben - Sie können diese Nicht-null-Spalte (b) Nicht-obligatorischen Attribute über Typen machen - machen Sie sie auf nULL festlegbare Spalten

  4. Firma verkaufen, was Äpfel (für dritten Artikel oben erwähnt)
  5. Transaktionstabelle, die alle Arten von Apfel Transaktionen
    • Company, Apple-Typ & andere Transaktionselemente halten kann.
Verwandte Themen