-- *********************************************
-- * Standard SQL generation
-- *
-- * - - - - - - - - - - - - - - - - - - - - - -*
-- * Generator date : Apr 29 2004
-- *
-- * Generation date : Mon May 17 17:30:38 2004 *
-- *********************************************

-- Table Section
-- _____________

create table Adressen (
	Adress_ID		numeric(10)	not null	primary key,
	Postleitzahl		numeric(5)	not null,
	Ort			varchar(255)	not null,
	Strae			varchar(255)	not null,
	Hausnummer		char(5)		not null,
	Staat			varchar(2)	not null);

create table Auftrag (
	Auftragsstatus		varchar(12)	not null,
	Auftragsdatum		date		not null,
	Auftragsnummer		char(10)	not null,
	Kundennummer		char(8)		not null,
	primary key(Auftragsnummer));

create table Auftrag_hat_Positionen (
	Produktnummer		char(8)		not null,
	Stueckzahl		numeric(10)	not null,
	Auftragsnummer		char(10)	not null);

create table Kunden (
	Kundennummer		char(8) 	not null,
	Name			varchar(30)	not null,
	Vorname			varchar(30)	not null,
	Geburtsdatum		date		not null,
	Geschlecht		char(1)		not null,
	primary key(Kundennummer));

create table Kunden_Profil (
	KundenProfil_ID		numeric(10)	not null,
	Kundennummer		char(8)		not null,
	Auftragsvolumen		numeric(10, 2)	not null,
	Zahlungsbilanz		char(1)		not null,
	Zahlungsverhalten	numeric(1)	not null,
	primary key(KundenProfil_ID),
	unique (Kundennummer));

create table Kunde_hat_Adresse (
	Adress_ID		numeric(10)	not null,
	Kundennummer		char(8)		not null);

create table Kunde_hat_Vorlieben (
	KundenProfil_ID		numeric(10)	not null,
	Vorlieben_ID		numeric(5)	not null,
	Anzahl			numeric(6)	not null);

create table Produktlager (
	Preis			numeric(10 ,2)	not null,
	Stueckzahl		numeric(10)	not null,
	Produktnummer		char(8)		not null,
	Bezeichnung		varchar(255)	not null,
	Produktionsdatum	date		not null,
	Material		varchar(255)	not null,
	Groesse			varchar(1)	not null,
	primary key(Produktnummer));

create table Rechnungsdaten (
	Anzahl_von_Mahnungen	char(1)		not null,
	Rechnungsbemerkung	varchar(1)	not null,
	Rechnungsnummer		char(10)	not null,
	Rechnungsdatum		date		not null,
	Eingegangene_Zahlungen	numeric(10, 2)	not null,
	Zahlungsdatum		date		not null,
	Auftragsnummer		char(10)	not null,
	primary key (Rechnungsnummer));

create table Vorlieben (
	Vorlieben_Kategorie	varchar(30)	not null,
	Vorlieben_ID		numeric(5)	not null,
	primary key(Vorlieben_ID));

create table Zu_Vorlieben_gehoeren_Produkte (
	Produktnummer		char(8)		not null,
	Vorlieben_ID		numeric(5)	not null);

alter table Auftrag add constraint FKKunde_hat_Auftrag
	foreign key(Kundennummer)
	references Kunden;

alter table Auftrag_hat_Positionen add constraint FKAuf_Pro
	foreign key (Produktnummer)
	references Produktlager;

alter table Auftrag_hat_Positionen add constraint FKAuf_Auf
	foreign key (Auftragsnummer)
	references Auftrag;

alter table Kunden_Profil add constraint FKKunde_hat_Profil
	foreign key(Kundennummer)
	references Kunden;

alter table Kunde_hat_Adresse add constraint FKKun_Kun_1
	foreign key (Kundennummer)
	references Kunden;

alter table Kunde_hat_Adresse add constraint FKKun_Adr
	foreign key (Adress_ID)
	references Adressen;

alter table Kunde_hat_Vorlieben add constraint FKKun_Vor
	foreign key (Vorlieben_ID)
	references Vorlieben;

alter table Kunde_hat_Vorlieben add constraint FKKun_Kun
	foreign key (KundenProfil_ID)
	references Kunden_Profil;

alter table Rechnungsdaten add constraint FKKundenkonto_hat_Auftrag
	foreign key (Auftragsnummer)
	references Auftrag;

alter table Zu_Vorlieben_gehoeren_Produkte add constraint FKZu_Vor
	foreign key (Vorlieben_ID)
	references Vorlieben;

alter table Zu_Vorlieben_gehoeren_Produkte add constraint FKZu_Pro
	foreign key (Produktnummer)
	references Produktlager;
