1 PK 3 Tabellen

DarkAlex

Neuer Benutzer
Beiträge
1
Hallo :-),
bin neu hier und Stell mich mal fix vor: Ich bin 18 und fang im Sommer mit einer Lehre zum Fachinformatiker/ Anwendungsentwicklung an.
Ich bin gerade dabei eine MySQL Datenbank für einen befreundeten Kleinunternehmer zu erstellen. Ich geb auch zu das mehr Hobby als Notwendigkeit dahintersteckt. Arbeiten tu ich mit MySQL Workbench.
Aber nun zum Problem:

Es geht um 4 Tabellen. Eine mit Kundeninformationen und 3 mit verschieden Auftragstypen
In der ersten sind die Kundeninformationen und pro Eintrag eine Kundennummer als Primery Key. In den anderen 3 sind Details zu den unterschiedlichen Aufträgen der Kategorie A, B und C, die leider nur teilweise identisch sind, ich habe jetzt für jede Kategorie eine Tabelle erstellt. Für diese ist die Auftragsnummer der Primery Key. Ebenfalls ist eine Spalte mit der Kundennummer vorhanden, um die Aufträge den Kunden zu ordnen zu können. Es soll keine Auftragsnummer identisch sein und später anhand einer Abfrage festgestellt werden können ob der Auftrag mit der Auftragsnummer x ein Auftrag der Kategorie A, B oder C ist.
Was ich schon versucht habe ist eine extra Tabelle mit der Kundennummer und der Auftragsnummer als AI und PK. Bringt mir aber immer beim Importieren eine 1022er Fehlermeldung.

Jetzt die Frage wie kann ich einen PK auf 3 Tabellen verteilen oder bin ich gerade auf dem Holzweg?


Wenn ihr noch Informationen braucht sagt bitte welche.
Ich bin auch offen für komplett andere Konzepte.

Grüße Alex
 
Werbung:
Hallo :),
bin neu hier und Stell mich mal fix vor: Ich bin 18 und fang im Sommer mit einer Lehre zum Fachinformatiker/ Anwendungsentwicklung an.

Jünger also als fast alle meine Kinder ;-)

Ich bin gerade dabei eine MySQL Datenbank für einen befreundeten Kleinunternehmer zu erstellen.

Warum dann im M$SQL-Forum? Verlaufen?

Es soll keine Auftragsnummer identisch sein und später anhand einer Abfrage festgestellt werden können ob der Auftrag mit der Auftragsnummer x ein Auftrag der Kategorie A, B oder C ist.
Was ich schon versucht habe ist eine extra Tabelle mit der Kundennummer und der Auftragsnummer als AI und PK. Bringt mir aber immer beim Importieren eine 1022er Fehlermeldung.

Jetzt die Frage wie kann ich einen PK auf 3 Tabellen verteilen oder bin ich gerade auf dem Holzweg?

Das wird mit MySQL schwer bis unmöglich. Eine saubere Lösung dafür bieten fast alle Datenbanken mit Sequencen.

Code:
test=# create sequence meine_sequence;
CREATE SEQUENCE
test=*# create table t1 (id int default nextval('meine_sequence'));
CREATE TABLE
test=*# create table t2 (id int default nextval('meine_sequence'));
CREATE TABLE
test=*# create table t3 (id int default nextval('meine_sequence'));
CREATE TABLE
test=*# insert into t1 values (default);
INSERT 0 1
test=*# insert into t1 values (default);
INSERT 0 1
test=*# insert into t3 values (default);
INSERT 0 1
test=*# insert into t2 values (default);
INSERT 0 1
test=*# insert into t3 values (default);
INSERT 0 1
test=*# select * from t1;
 id
----
  1
  2
(2 rows)

test=*# select * from t2;
 id
----
  4
(1 row)

test=*# select * from t3;
 id
----
  3
  5
(2 rows)

In MySQL müßtest Du das irgendwie simulieren. Eine Tabelle, die als Sequencegenerator dient. Immer 1 erhöhen. Dabei aber schön mit Sperren etc. arbeiten. Und damit das richtig funktioniert, mit TRIGGERN auf den 3 einzelnen Tabellen, damit da immer die Prozedur anläuft, mit der diese Erhöhung gemacht wird. Viel Spaß.

Evtl. wäre es aber noch sauberer, hier mit vererbung zu arbeiten:

Code:
test=*# create table auftraege (id serial primary key, name text);
CREATE TABLE
test=*# create table auftrag_typ1 (inherits auftraege);
CREATE TABLE
test=*# create table auftrag_typ2 (inherits auftraege);
CREATE TABLE
test=*# create table auftrag_typ3 (inherits auftraege);
CREATE TABLE

Mal so als Grundgerüst. Dann kannst Du auch z.B. über alle Aufträge aggregieren und so. Die einzelnen Kindtabellen können dann weitere Felder mit den für sie spezifischen Eigenschaften haben.
 
Zurück
Oben