Forum » Izdelava spletišč » MySQL Relacije
MySQL Relacije
echoman ::
Pozdravljeni,
Zanima me, kako v phpmyadmin nastavim relacije? Imam 2 tabeli imenovani seznam in izdelki, rad pa bi, da bi bili izdelki na seznamu.
Seznam:
id, ime, opis, kategorija, izdelek_id
Izdelki:
izdelek_id, ime, opis, kategorija
Relacija naj bi imela povezavo ena proti mnogo (Seznam - Izdelki).
Nekaj sem sicer že sam poskušal, vendar očitno ne delam pravilno, saj vedno dobim napako. Hvala za pomoč!
Zanima me, kako v phpmyadmin nastavim relacije? Imam 2 tabeli imenovani seznam in izdelki, rad pa bi, da bi bili izdelki na seznamu.
Seznam:
id, ime, opis, kategorija, izdelek_id
Izdelki:
izdelek_id, ime, opis, kategorija
Relacija naj bi imela povezavo ena proti mnogo (Seznam - Izdelki).
Nekaj sem sicer že sam poskušal, vendar očitno ne delam pravilno, saj vedno dobim napako. Hvala za pomoč!
echoman ::
To sem nastavil, pa sem pravtako dobil napako.
Nastavil pa sem:
Seznam:
id - primary key
izdelek_id - index
Izdelki:
izdelek_id - primary key
izdelek_id - index
Sprobal sem vse možne kombinacije, med temi opcijami. Kaj torej delam narobe?
Nastavil pa sem:
Seznam:
id - primary key
izdelek_id - index
Izdelki:
izdelek_id - primary key
izdelek_id - index
Sprobal sem vse možne kombinacije, med temi opcijami. Kaj torej delam narobe?
Iluvatar ::
Tu je ze majhen "vsebinski" problem, pises namrec da bi rad imel ena mnogo, se pravi en seznam ima lahko vec izdelkov. V tabeli seznam pa imas izdelek id. Ce hoces tako relacijo, kot si jo opisal in si tako postavil tuje kljuce, potem bos imel samo en izdelek na seznamu. Podatki bodo taksni potem:
Izelek
1, Matica m35, opis matice m35, kategorija matic
Seznam
1, Matice in sraufi, opis seznama matice in sraufi, kategorija seznama matic, 1 ---to je izdelek_id
Kako bos zdaj dal na isti seznam se eno matico? Ce bos vstavil, nov zapis v tabelo seznam, bo ta zapis dobil id 2, kar pa je ze nov seznam ane?
Ti bi rabil pomoje se eno tabelo s katero bi definiral kateri izdelki gredo h kateremu seznamu npr.
IzdelkiNaSeznamu
Id, izdelek_id, seznam_id
V tabeli seznam pa ne rabis izdelek_id
Tvoji podatki bodo potem taki:
izdelek:
1, Matica m35, opis, kateg.
2, Matica m55, opis, kateg.
3, Srauf 10, opis, kateg
Seznam
1, Matice in sraufi, opis, kateg.
2, Sraufi, opis, kateg.
IzdelkiNaSeznamu
Id, izdelek_id, seznam_id
1. 1. 1
2. 2. 1
3. 3. 1
4. 3. 2
S tem si povedal, da ima lahko en seznam vec izdelkov, celo to, da je lahko isti izdelek na vec sesznamih hkrati, v tvojem primeru je srauf na seznamu sraufi in na seznamu matice in sraufi.
Tako bo pomoje bolj logicno ane?
P.s. Sorry za typo, pisem iz telefona namrec ;-)
Izelek
1, Matica m35, opis matice m35, kategorija matic
Seznam
1, Matice in sraufi, opis seznama matice in sraufi, kategorija seznama matic, 1 ---to je izdelek_id
Kako bos zdaj dal na isti seznam se eno matico? Ce bos vstavil, nov zapis v tabelo seznam, bo ta zapis dobil id 2, kar pa je ze nov seznam ane?
Ti bi rabil pomoje se eno tabelo s katero bi definiral kateri izdelki gredo h kateremu seznamu npr.
IzdelkiNaSeznamu
Id, izdelek_id, seznam_id
V tabeli seznam pa ne rabis izdelek_id
Tvoji podatki bodo potem taki:
izdelek:
1, Matica m35, opis, kateg.
2, Matica m55, opis, kateg.
3, Srauf 10, opis, kateg
Seznam
1, Matice in sraufi, opis, kateg.
2, Sraufi, opis, kateg.
IzdelkiNaSeznamu
Id, izdelek_id, seznam_id
1. 1. 1
2. 2. 1
3. 3. 1
4. 3. 2
S tem si povedal, da ima lahko en seznam vec izdelkov, celo to, da je lahko isti izdelek na vec sesznamih hkrati, v tvojem primeru je srauf na seznamu sraufi in na seznamu matice in sraufi.
Tako bo pomoje bolj logicno ane?
P.s. Sorry za typo, pisem iz telefona namrec ;-)
Zgodovina sprememb…
- spremenil: Iluvatar ()
echoman ::
Hvala za vso pomoč!
Rešil sem sicer z drugačnim načinom in sicer z brisanjem vsebine v tabelah - potem so relacije začele delovati.
LP, echoman
Rešil sem sicer z drugačnim načinom in sicer z brisanjem vsebine v tabelah - potem so relacije začele delovati.
LP, echoman
Zgodovina sprememb…
- spremenil: echoman ()
mkos2 ::
mysql> show create table cd; +-------+----------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----------------------------------------------+ | Table | Create Table | +-------+----------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----------------------------------------------+ | cd | CREATE TABLE `cd` ( `CDID` int(11) NOT NULL, `NaslovCD` char(20) NOT NULL, `Cena` float DEFAULT NULL, `Opombe` char(100) DEFAULT NULL, `leto` int(11) DEFAULT NULL, PRIMARY KEY (`CDID`), UNIQUE KEY `uniq_ImeCD` (`NaslovCD`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +-------+----------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----------------------------------------------+ 1 row in set (0.00 sec) mysql> show create table posnetek; +----------+-------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----------------------------------------------------------------------+ | Table | Create Table | +----------+-------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----------------------------------------------------------------------+ | posnetek | CREATE TABLE `posnetek` ( `PID` int(11) NOT NULL AUTO_INCREMENT, `Naslov` char(20) NOT NULL, `Genre` char(10) NOT NULL, `Trajanje` time NOT NULL, `AvtorID` int(11) NOT NULL, PRIMARY KEY (`PID`), KEY `tujiKAvtor` (`AvtorID`), CONSTRAINT `tujiKAvtor` FOREIGN KEY (`AvtorID`) REFERENCES `avtor` (`AvtorID`) ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1 | +----------+-------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> show create table vsebina; +---------+--------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -+ | Table | Create Table | +---------+--------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -+ | vsebina | CREATE TABLE `vsebina` ( `CDID` int(11) NOT NULL, `PID` int(11) NOT NULL, PRIMARY KEY (`CDID`,`PID`), KEY `tujiKPID` (`PID`), CONSTRAINT `tujiKCD` FOREIGN KEY (`CDID`) REFERENCES `cd` (`CDID`) ON DELETE C ASCADE ON UPDATE CASCADE, CONSTRAINT `tujiKPID` FOREIGN KEY (`PID`) REFERENCES `posnetek` (`PID`) ON DEL ETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +---------+--------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -+ 1 row in set (0.00 sec) mysql> show create table avtor; +-------+----------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- --------+ | Table | Create Table | +-------+----------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- --------+ | avtor | CREATE TABLE `avtor` ( `AvtorID` int(11) NOT NULL, `Ime` char(10) NOT NULL, `Priimek` char(20) DEFAULT NULL, `drzava` char(3) NOT NULL, `rojen` date DEFAULT NULL, PRIMARY KEY (`AvtorID`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +-------+----------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- --------+ 1 row in set (0.00 sec) mysql> show tables; +--------------------+ | Tables_in_zbirkacd | +--------------------+ | avtor | | cd | | posnetek | | vsebina | +--------------------+ 4 rows in set (0.00 sec)
Izpišite priimke in imena vseh avtorjev in število njihovih posnetkov.
Zanima me kako naj tole izvedem?
Zgodovina sprememb…
- spremenil: Mavrik ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | SQL težavaOddelek: Programiranje | 5188 (4470) | joseti |
» | MySql Vprasanje - problem dupliciranih kljucevOddelek: Izdelava spletišč | 1436 (1258) | KernelPanic |
» | portal ostal, baza slaOddelek: Izdelava spletišč | 1830 (1715) | bombacina |
» | SQL problemOddelek: Programiranje | 1523 (1360) | Bossek |
» | anketa z vec moznostmiOddelek: Izdelava spletišč | 1628 (1507) | Packač |