[ morpheusscg @ 15.12.2008. 19:59 ] @
Pravim bazu za projekat iz ispita, pa mi treba mala pomoc u vezi pravljenja spoljasnjeg kljuca u tabeli Narudzba, hocu da pospajam ove dve tabele pomocu spoljasnjegkljuca, ali stalno mi izbacuje gresku broj 1064 mySQL server. Ne znam gde gresim. Ako neko ima neku ideju, unapred hvala svima.


create table maticnaPloca(
idMaticna int unsigned not null auto_increment primary key,
nazivMaticna varchar(100) not null,
kolicinaMaticna int unsigned not null,
cena decimal
)type=InnoDB;


create table narudzba(
idNarudzba int unsigned not null auto_increment primary key,
idMaticna int unsigned not null ,
idHD int unsigned not null ,
idCdrom int unsigned not null ,
idNapajanje int unsigned not null ,
idCooler int unsigned not null ,
idRam int unsigned not null primary ,

primary key (idNarudzba),
foreign key (idMaticna) references maticnaPloca(idMaticna) on delete cascade on update cascade
)type=InnoDB;




[ bogdan.kecman @ 15.12.2008. 22:01 ] @
nevezano za problem, koristi float ili double, nemoj da koristis decimal!

Code:

CREATE  TABLE IF NOT EXISTS `maticnaPloca` (
  `idMaticna` INT NOT NULL AUTO_INCREMENT ,
  `nazivMaticna` VARCHAR(100) NOT NULL ,
  `kolicinaMaticna` INT UNSIGNED NOT NULL ,
  `cena` FLOAT NULL ,
  PRIMARY KEY (`idMaticna`) 
) ENGINE = InnoDB;

CREATE  TABLE IF NOT EXISTS `narudzba` (
  `idNarudzba` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  `idHD` INT UNSIGNED NOT NULL ,
  `idCdrom` INT UNSIGNED NOT NULL ,
  `idNapajanje` INT UNSIGNED NOT NULL ,
  `idCooler` INT UNSIGNED NOT NULL ,
  `idRam` INT UNSIGNED NOT NULL ,
  `idMaticna` INT UNSIGNED NOT NULL ,
  PRIMARY KEY (`idNarudzba`) ,
  CONSTRAINT `fk_narudzba_maticnaPloca`
    FOREIGN KEY (`idMaticna` )
    REFERENCES `maticnaPloca` (`idMaticna` )
    ON DELETE CASCADE
    ON UPDATE CASCADE
) ENGINE = InnoDB;

CREATE INDEX `fk_narudzba_maticnaPloca` ON `narudzba` (`idMaticna` ASC) ;


inace, skini workbench ( http://dev.mysql.com/workbench/ ) nacrtaj u njemu tabelu i on ce ti izgenerisati SQL koji radi :) (free verzija ce ti ga izgenerisati u fajl, ona verzija "za pare" moze i da ga posalje direkt u bazu)
[ Miroslav Ćurčić @ 15.12.2008. 22:14 ] @
Nevezano za problem,
a zašto izbegavati DECIMAL?

Radi mi u par projekata bez problema, jesam li nešto propustio ?
Ili da otvorimo novu temu ?
[ bogdan.kecman @ 15.12.2008. 22:36 ] @
Citat:
a zašto izbegavati DECIMAL?


ukratko, ako upisujes (a,b) onda su vise manje svi isti,
ako koristis bez (a,b) dakle ..

...
float F,
decimal D,
...

ovaj D je u stvari (10,0)

ako upises u D neki broj mysql ce ga pre upisa "skratiti" na 10,0 ...

dakle, ako oces "razlomljen broj" koristi float ili double (zavisno od toga kolika ti preciznost treba), ako oces ceo broj onda INT ili BIGINT ili ... decimal je tip koji je vrlo nezgodan, spor i generalno tu samo zbog kompatibilnosti sa sql standardom

za "dalje" otvori novu :)