CREATE DATABASE AgencjaArtystycznaZmiana
GO

use AgencjaArtystycznaZmiana
GO

CREATE TABLE Agenci (
	IDAgenta int IDENTITY (1, 1) NOT NULL ,
	ImieAgenta nvarchar (25) NULL ,
	NazwiskoAgenta nvarchar (25) NULL ,
	AdresAgenta nvarchar (50) NULL ,
	MiastoAgenta nvarchar (30) NULL ,
	StanZamAgenta nvarchar (2) NULL ,
	KodPocztowyAgenta nvarchar (10) NULL ,
	TelefonAgenta nvarchar (15) NULL ,
	DataZatrudnienia date NULL ,
	Wynagrodzenie money NULL ,
	Premia float(24) NULL ,
)
GO

CREATE TABLE Klienci (
	IDKlienta int IDENTITY (1, 1) NOT NULL ,
	ImieKlienta nvarchar (25) NULL ,
	NazwiskoKlienta nvarchar (25) NULL ,
	AdresKlienta nvarchar (50) NULL ,
	MiastoKlienta nvarchar (30) NULL ,
	StanZamKlienta nvarchar (2) NULL ,
	KodPocztowyKlienta nvarchar (10) NULL ,
	TelefonKlienta nvarchar (15) NULL 
)
GO

CREATE TABLE Imprezy (
	NumerImprezy int IDENTITY (1, 1) NOT NULL ,
	DzienRozpoczecia date NULL ,
	DzienZakonczenia date NULL ,
	GodzinaRozpoczecia time NULL ,
	GodzinaZakonczenia time NULL ,
	WartoscKontraktu money NULL ,
	IDKlienta int NULL ,
	IDAgenta int NULL ,
	IDWykonawcy int NULL 
)
GO

CREATE TABLE Imprezy_archiwum (
	NumerImprezy int NOT NULL ,
	DzienRozpoczecia date NULL ,
	DzienZakonczenia date NULL ,
	GodzinaRozpoczecia time NULL ,
	GodzinaZakonczenia time NULL ,
	WartoscKontraktu money NULL ,
	IDKlienta int NULL ,
	IDAgenta int NULL ,
	IDWykonawcy int NULL 
)
GO

CREATE TABLE Czlonkowie_zespolu (
	IDWykonawcy int NOT NULL ,
	IDCzlonka int NOT NULL ,
	Status smallint NULL 
)
GO

CREATE TABLE Style_wykonawcow (
	IDWykonawcy int NOT NULL ,
	IDStylu int NOT NULL 
)
GO

CREATE TABLE Wykonawcy (
	IDWykonawcy int IDENTITY (1, 1) NOT NULL ,
	NazwaScenicznaWykonawcy nvarchar (50) NULL ,
	NrUbezpWykonawcy nvarchar (12) NULL ,
	AdresWykonawcy nvarchar (50) NULL ,
	MiastoWykonawcy nvarchar (30) NULL ,
	StanZamWykonawcy nvarchar (2) NULL ,
	KodPocztowyWykonawcy nvarchar (10) NULL ,
	TelefonWykonawcy nvarchar (15) NULL ,
	StronaInterWykonawcy nvarchar (50) NULL ,
	EmailWykonawcy nvarchar (50) NULL ,
	DataRejestracji date NULL ,
	StawkaDziennaWykonawcy money NULL 
)
GO

CREATE TABLE Czlonkowie (
	IDCzlonka int IDENTITY (1, 1) NOT NULL ,
	ImieCzlonka nvarchar (25) NULL ,
	NazwiskoCzlonka nvarchar (25) NULL ,
	TelefonCzlonka nvarchar (15) NULL ,
	Plec nvarchar (2) NULL 
)
GO

CREATE TABLE Gusty_muzyczne (
	IDKlienta int NOT NULL ,
	IDStylu int NOT NULL 
)
GO

CREATE TABLE Style_muzyczne (
	IDStylu int IDENTITY (1, 1) NOT NULL ,
	NazwaStylu nvarchar (75) NULL 
)
GO

 ALTER TABLE Agenci ADD 
	CONSTRAINT Wynagrodzenie_domyslny DEFAULT (0) FOR Wynagrodzenie,
	CONSTRAINT Commision_Rate_domyslny DEFAULT (0) FOR Premia,
	CONSTRAINT Agents_PK PRIMARY KEY   
	(
		IDAgenta
	)  
GO

 CREATE  INDEX KodPocztowyAgenta ON Agenci(KodPocztowyAgenta)
GO

ALTER TABLE Klienci ADD 
	CONSTRAINT Klients_PK PRIMARY KEY   
	(
		IDKlienta
	)  
GO

 CREATE  INDEX KodPocztowyKlienta ON Klienci(KodPocztowyKlienta)
GO

ALTER TABLE Imprezy ADD 
	CONSTRAINT Contract_Price_domyslny DEFAULT (0) FOR WartoscKontraktu,
	CONSTRAINT EN_Klient_ID_domyslny DEFAULT (0) FOR IDKlienta,
	CONSTRAINT EN_Agent_ID_domyslny DEFAULT (0) FOR IDAgenta,
	CONSTRAINT EN_Entertainer_ID_domyslny DEFAULT (0) FOR IDWykonawcy,
	CONSTRAINT Imprezy_PK PRIMARY KEY   
	(
		NumerImprezy
	)  
GO

 CREATE  INDEX AgenciImprezy ON Imprezy(IDAgenta)
GO

 CREATE  INDEX IDKlienta ON Imprezy(IDKlienta)
GO

 CREATE  INDEX IDPracownika ON Imprezy(IDAgenta)
GO

 CREATE  INDEX IDWykonawcy ON Imprezy(IDWykonawcy)
GO

ALTER TABLE Imprezy_archiwum ADD
        CONSTRAINT Imprezy_archiwum_PK PRIMARY KEY 
        (
                NumerImprezy
        )
GO

CREATE  INDEX IDKlienta ON Imprezy_archiwum(IDKlienta)
GO

CREATE  INDEX IDPracownika ON Imprezy_archiwum(IDAgenta)
GO

CREATE  INDEX IDWykonawcy ON Imprezy_archiwum(IDWykonawcy)
GO

ALTER TABLE Czlonkowie_zespolu ADD 
	CONSTRAINT EM_Member_ID_domyslny DEFAULT (0) FOR IDCzlonka,
	CONSTRAINT EM_Status_domyslny DEFAULT (0) FOR Status,
	CONSTRAINT Czlonkowie_zespolu_PK PRIMARY KEY   
	(
		IDWykonawcy,
		IDCzlonka
	)  
GO

 CREATE  INDEX EntertainersEntertainerMembers ON Czlonkowie_zespolu(IDWykonawcy)
GO

 CREATE  INDEX CzlonkowieCzlonkowieWykonawcow ON Czlonkowie_zespolu(IDCzlonka)
GO

ALTER TABLE Style_wykonawcow ADD 
	CONSTRAINT ES_Style_ID_domyslny DEFAULT (0) FOR IDStylu,
	CONSTRAINT Style_wykonawcow_PK PRIMARY KEY   
	(
		IDWykonawcy,
		IDStylu
	)  
GO

 CREATE  INDEX EntertainersEntertainerStyles ON Style_wykonawcow(IDWykonawcy)
GO

 CREATE  INDEX StyleMuzyczneStyleWyk ON Style_wykonawcow(IDStylu)
GO

ALTER TABLE Wykonawcy ADD 
	CONSTRAINT Entertainers_PK PRIMARY KEY   
	(
		IDWykonawcy
	)  
GO

 CREATE  INDEX KodPocztowyWykonawcy ON Wykonawcy(KodPocztowyWykonawcy)
GO

ALTER TABLE Czlonkowie ADD 
	CONSTRAINT Members_PK PRIMARY KEY   
	(
		IDCzlonka
	)  
GO

ALTER TABLE Gusty_muzyczne ADD 
	CONSTRAINT MP_Klient_ID_domyslny DEFAULT (0) FOR IDKlienta,
	CONSTRAINT MP_Style_ID_domyslny DEFAULT (0) FOR IDStylu,
	CONSTRAINT Gusty_muzyczne_PK PRIMARY KEY   
	(
		IDKlienta,
		IDStylu
	)  
GO

 CREATE  INDEX IDKlienta ON Gusty_muzyczne(IDKlienta)
GO

 CREATE  INDEX IDStylu ON Gusty_muzyczne(IDStylu)
GO

ALTER TABLE Style_muzyczne ADD 
	CONSTRAINT Musical_Styles_PK PRIMARY KEY   
	(
		IDStylu
	)  
GO

ALTER TABLE Imprezy ADD 
	CONSTRAINT Imprezy_FK00 FOREIGN KEY 
	(
		IDAgenta
	) REFERENCES Agenci (
		IDAgenta
	),
	CONSTRAINT Imprezy_FK01 FOREIGN KEY 
	(
		IDKlienta
	) REFERENCES Klienci (
		IDKlienta
	),
	CONSTRAINT Imprezy_FK02 FOREIGN KEY 
	(
		IDWykonawcy
	) REFERENCES Wykonawcy (
		IDWykonawcy
	)
GO

ALTER TABLE Czlonkowie_zespolu ADD 
	CONSTRAINT Czlonkowie_zespolu_FK00 FOREIGN KEY 
	(
		IDWykonawcy
	) REFERENCES Wykonawcy (
		IDWykonawcy
	),
	CONSTRAINT Czlonkowie_zespolu_FK01 FOREIGN KEY 
	(
		IDCzlonka
	) REFERENCES Czlonkowie (
		IDCzlonka
	)
GO

ALTER TABLE Style_wykonawcow ADD 
	CONSTRAINT Style_wykonawcow_FK00 FOREIGN KEY 
	(
		IDWykonawcy
	) REFERENCES Wykonawcy (
		IDWykonawcy
	),
	CONSTRAINT Style_wykonawcow_FK01 FOREIGN KEY 
	(
		IDStylu
	) REFERENCES Style_muzyczne (
		IDStylu
	)
GO

ALTER TABLE Gusty_muzyczne ADD 
	CONSTRAINT Gusty_muzyczne_FK00 FOREIGN KEY 
	(
		IDKlienta
	) REFERENCES Klienci (
		IDKlienta
	),
	CONSTRAINT Gusty_muzyczne_FK01 FOREIGN KEY 
	(
		IDStylu
	) REFERENCES Style_muzyczne (
		IDStylu
	)
GO

