Grundlegende Design-Fragen

zeppr

Neuer Benutzer
Beiträge
1
Hallo Leute,

folgende Gegebenheiten:
Ein Schädlingsbekämpfer betreut Kunden. Jeder Kunde hat eine gewisse Anzahl an Schädlings-Fallen bei sich stehen. Es gibt 3 Typen von Fallen, die alle unterschiedliche Attribute haben.
Beim Kontrollgang vor Ort wird zu jeder Falle des Kunden das Datum und ein Befund (=befüllen der Falllenattribute) vermerkt.

Bsp:
  1. Am 14.10.2014 wird bei Firma ACME eine Falle vom Typ A befundet, 3 von Typ B und 2 von Typ C
  2. Am 21.10.2014 wird bei Firma ACME eine Falle vom Typ A befundet, 3 von Typ B und 2 von Typ C
  3. Am 21.10.2014 wird bei Firma XYZ 3 Fallen vom Typ A befundet, 1 von Typ B und 4 von Typ C
Jede Falle lässt sich also eindeutig zu einer Firma und einem Tag zuweisen. Eine Falle muss aber auch eindeutig in der Fallen-Liste der Firma identifizierbar sein, auch wenn sie vom gleichen Typ ist.

Als Kern-Entities betrachte ich die Fallentypen, die ich per FK Constraint einer Firma zuordne.
Jetzt bräuchte ich Denkanstöße wie ich die Fallen-Liste verwalten könnte, bzw. ob meine Vorgehensweise so überhaupt sin ergibt.

Anbei auch ein Versuch eines ER Diagrams.

Danke für Eure Hilfe!
LG
 

Anhänge

  • ScreenShot_2014-10-14_10-20-55001.jpg
    ScreenShot_2014-10-14_10-20-55001.jpg
    49,5 KB · Aufrufe: 4
Werbung:
Als Kern-Entities betrachte ich die Fallentypen, die ich per FK Constraint einer Firma zuordne.
Jetzt bräuchte ich Denkanstöße wie ich die Fallen-Liste verwalten könnte, bzw. ob meine Vorgehensweise so überhaupt sin ergibt.

Anbei auch ein Versuch eines ER Diagrams.

Danke für Eure Hilfe!
LG

Wo genau ist Dein problem?

Code:
test=# create table fallen_haupttabelle(id int primary key, inv_nummer int);
CREATE TABLE   

test=*# create table fallen_typ1 (eigenschaft1_1 text) inherits (fallen_haupttabelle);
CREATE TABLE   
Time: 74,024 ms   
test=*# create table fallen_typ2 (eigenschaft2_1 int) inherits (fallen_haupttabelle);
CREATE TABLE   
Time: 0,809 ms   

test=*# insert into fallen_typ1 values (1, 1, 'Testfalle fallentyp1');
INSERT 0 1
Time: 0,434 ms
test=*# insert into fallen_typ1 values (2, 12, 'Testfalle fallentyp2');
INSERT 0 1
Time: 0,177 ms
test=*# select * from fallen_haupttabelle;
 id | inv_nummer
----+------------
  1 |  1
  2 |  12
(2 rows)

test=*# insert into fallen_typ2 values (3, 32, 120);
INSERT 0 1
Time: 20,321 ms
test=*# select * from fallen_haupttabelle;
 id | inv_nummer
----+------------
  1 |  1
  2 |  12
  3 |  32
(3 rows)

test=*# select * from fallen_typ2;
 id | inv_nummer | eigenschaft2_1
----+------------+----------------
  3 |  32 |  120
(1 row)

So gäbe es allerdings noch ein Problem: die ID als PK sollte aus einer globalen Sequence kommen.
So könnte man die Fallen halt trotz unterschiedlicher Typen sinnvoll verwalten.

Alternative: alles in eine Tabelle und die Eigenschaften in einem extra Feld als HSTORE oder JSON(B). Alles natürlich unter Verwendung von PostgreSQL als DB-System.

Oder hab ich Dich falsch verstanden?
 
Werbung:
Hi zeppr.

Eine Falle muss aber auch eindeutig in der Fallen-Liste der Firma identifizierbar sein, auch wenn sie vom gleichen Typ ist.

Dann braucht jede Falle eine eindeutiges, gegebenenfalls künstliches, Kennzeichen. Das muss allerdings keine Auto-ID sein, sondern kann sich zum Beispiel aus Fallentyp und Seriennummer zusammensetzen.

Die Attribute lassen sich dann durchaus in verschiedenen Tabellen per FK verwalten.

Gruß
Hony
 
Zurück
Oben