# Anfängerfrage MySQL: Primary Key/Foreign Key



## Tobias Köhler (5. November 2007)

Hallo.
Datenbanken sind für mich noch neues Gebiet. Daher sicherlich eine einfache Frage, die mich aber ziemlich aufhält^^

Ich habe folgende Datenbankstruktur:

```
/* Datenbank anlegen */
CREATE DATABASE IF NOT EXISTS 
	`bonusberechnung` DEFAULT CHARACTER SET ascii COLLATE ascii_general_ci;

/* Tabellen anlegen */

CREATE TABLE ERP_CLASS(
	CLASS_ID INT NOT NULL AUTO_INCREMENT,
	CLASSNAME VARCHAR(20),
	PRIMARY KEY(CLASS_ID)
); 

CREATE TABLE ERP_ARTICLE(
	ARTICLE_ID INT NOT NULL AUTO_INCREMENT, 
	CLASS_ID INT, ORDER_NR INT, 
	NOTATION VARCHAR(200), TYPE VARCHAR(10), 
	PRIMARY KEY(ARTICLE_ID),
	INDEX(CLASS_ID), 
	FOREIGN KEY(CLASS_ID) REFERENCES ERP_CLASS(CLASS_ID)
);
	
CREATE TABLE ERP_DG_LOT(
	DG_LOT_ID INT NOT NULL AUTO_INCREMENT,
	ARTICLE_ID INT, DG_LOT_NAME VARCHAR(200),
	PRIMARY KEY(DG_LOT_ID),
	INDEX(ARTICLE_ID), 
	FOREIGN KEY(ARTICLE_ID) REFERENCES ERP_ARTICLE(ARTICLE_ID)
);

CREATE TABLE ERP_DG_FORMAT(
	DG_FORMAT_ID INT NOT NULL AUTO_INCREMENT,
	X INT, Y INT,
	PRIMARY KEY(DG_FORMAT_ID)
);

CREATE TABLE ERP_DG_PRODUCTION(
	DG_PRODUCTION_ID INT NOT NULL AUTO_INCREMENT,
	DG_LOT_ID INT, DG_FORMAT_ID INT, 
	DG_PRODUCTION_DATE VARCHAR(100),
	DG_COUNT INT, DG_RELEASE VARCHAR(10),
	DG_AREA INT,
	PRIMARY KEY(DG_PRODUCTION_ID),
	INDEX(DG_LOT_ID, DG_FORMAT_ID), 
	FOREIGN KEY(DG_LOT_ID) REFERENCES ERP_DG_LOT(DG_LOT_ID),
	FOREIGN KEY(DG_FORMAT_ID) REFERENCES ERP_DG_FORMAT(DG_FORMAT_ID)
);
```

Nun habe ich das Problem, dass, wenn ich Daten einfüge, Sachen gemacht werden, die ich nicht möchte^^
Etwas konkreter:
Ich füge Dummydaten ein:

```
INSERT INTO ERP_DG_FORMAT VALUES(1, 76, 26);
INSERT INTO ERP_CLASS VALUES(1, 'FD')
INSERT INTO ERP_ARTICLE VALUES(1, 2, 1250, 'Leber Affe', 'DG')
```

So, weiter bin ich mit dem Einfügen noch nicht, denn hier tritt der Fehler bereits auf....
Was ich möchte:
automatisches Hochzählen der Primary Keys, automatisches Verweisen auf Foreign Keys, keine Angabe von Keys in meinen Inserts.
Was ich habe:
Ich füge momentan selber die Keys ein(ist doch nicht Sinn und Zweck der Sache, oder^^)
bei ERP_ARTICLE füge ich als FK für CLASS-ID ne 2 ein, die es ja eindeutig nicht gibt..... Dies ist aber zulässig... Ich blick da noch nicht durch. Wie kann ich mein Vorhaben durchführen? Habt ihr Tipps für mich? Zusatzfrage: Ist das DB-Modell so eigentlich ok?^^


----------

