Opis baze bi bio sledeci ... Baza treba da evidentira CLANOVE, INSTRUKTORE i VRSTE_TRENINGA. Svaki "clan" ili vise njih, "treniraju" jednu ili vise "vrsta treninga", koju "vodi" jedan ili vise "instruktora". Recimo, jedna ista cura moze kod Marka da "trenira" fitnes, a potom kod Janka da "trenira" pilates ili teretanu, dok i Marko i Janko mogu da "vode" vise "vrsta treninga", recimo pilates, jogu, istezanje grcko-rimskim stilom isl... "Insturktori" su obavezni da "vode" bar jednu "vrstu treninga" da bi uopste bili "instruktori". "Clan" je obavezan da "trenira" barem jednu "vrstu treninga" da bi bio "clan". Jedino "vrsta treninga" moze da postoji ako za nju trenutno nema ni "clana" ni "instruktora" - situacija kad bi "instruktor" pilatesa bio jedini i da otkaz, nema potrebe brisati tu "vrstu treninga" vec samo zaposliti novog "instruktora" i dodijeliti mu vec postojecu "vrstu treninga" koju je vodio stari "instruktor".
Dijagram sam nacrtao ovako:

Pitanje: Ne znam da li sam ovu situaciju pravilno prepoznao kao gerund?
A ovako sam ga preveo:
CLAN (ID_CLANA, Ime, ...)
INSTRUKTOR (ID_INS, Ime, ...)
VRSTA_TRENINGA (ID_VT, Naziv, ...)
VODI (ID_VT, ID_INS, Period_Od, Period_Do)
TRENIRA(ID_CLANA, ID_VT, ID_INS,)
A ako je sve do sad ok, da vidimo kod koji mi je izgenerisao MySQL Administrator iz kojeg sam pravio tabele:
CREATE TABLE `clan` (
`ID_CLANA` int(10) unsigned NOT NULL AUTO_INCREMENT,
`PREZIME` varchar(25) NOT NULL,
`IME` varchar(20) NOT NULL,
`ADRESA` varchar(45) DEFAULT NULL,
`TELEFON` varchar(20) DEFAULT NULL,
PRIMARY KEY (`ID_CLANA`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
Instruktor i Vrste treninga su na isti kalup
CREATE TABLE `vodi` (
`Id_Ins` int(10) unsigned NOT NULL DEFAULT '0',
`Id_Vt` int(5) unsigned NOT NULL DEFAULT '0',
`Period_Od` date NOT NULL,
`Period_Do` date NOT NULL,
PRIMARY KEY (`Id_Ins`,`Id_Vt`) USING BTREE,
KEY `FK_vodi_vrstatreninga` (`Id_Vt`) USING BTREE,
CONSTRAINT `FK_vodi_instruktor` FOREIGN KEY (`Id_Ins`) REFERENCES `instruktor` (`ID_INS`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `FK_vodi_vrstatreninga` FOREIGN KEY (`Id_Vt`) REFERENCES `vrsta_treninga` (`ID_VT`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Pitanja:
- Posto je ovaj primarni kljuc takozvano “slozen” tj. sastoji se iz 2 vrijednosti, da li i spoljni kljuc moze uopste da sadrzi dvije vrijednosti i ako moze, moraju li one biti referencirane na istu tabelu ili mogu da referenciraju 2 vrijednosti iz razlicitih tabela, u fazonu ‘fk_primjer’ foreign key (‘id_ins’,’id_vt’)? Kako bi taj kod isao ako moze?
- Cemu mi sluzi ovo USING BTREE, i ostale vrijednosti koje se nude u Admin-u kao sto su HASH i RTREE – za ovo me samo uputite na neku literaturu da ne smaram previse..
- Sto sad sa tabelom “TRENIRA” ?! Treba da imam kljuc koji ce se sastojati iz vrijednosti kljuca tabele “CLAN” i tabele “VODI” koji je pritom slozen? Kako to da napisem?
Hvala unaprijed!