Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
raido357
HV veteran
liitunud: 26.09.2002
|
09.12.2008 20:25:44
KUSTUTADA: mysql laused olem-seos diagrammi järgi |
|
|
Tere,
kuna ei ole andmebaaside alal väga tugev, sooviks natuke abi. On ehk keegi nii hea ja tekitab create table laused järgnevale seosele.
Spoiler 
Tänan
viimati muutis raido357 19.12.2008 15:53:09, muudetud 1 kord |
|
Kommentaarid: 78 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
70 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
09.12.2008 21:58:59
|
|
|
Eriti su joonisest aru ei saa, kuid kui tahad tabelit, kus oleksid õpilased ja vanemad siis selle saad nii.
CREATE TABLE kool (
id int(11) NOT NULL auto_increment,
opilased text NOT NULL,
vanemad text NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM; |
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
raido357
HV veteran
liitunud: 26.09.2002
|
09.12.2008 22:04:45
|
|
|
Tegu peaks olema siis M:M seosega, vähemalt nii on mulle õpetatud.
õpilase ja vanemate vahel on lingitabel, milles peaksid olema kasutusel foreign key'd. vms.
|
|
Kommentaarid: 78 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
70 |
|
tagasi üles |
|
 |
troglodyte
Kreisi kasutaja

liitunud: 09.08.2002
|
09.12.2008 23:16:15
|
|
|
Mingi abi tabel peab jah kasutusel olema, kuid täpse tabeli definitsiooni jaoks oleks vaja ka Õpilane ja Vanemad tabelite definitsiooni teada.
NB: MySQL-i puhul pead MyISAM tabeli tüübi asemel näiteks INNODB-d kasutama, kuna MyISAM ei toeta foreign key constrainte.
_________________ ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn |
|
Kommentaarid: 34 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
34 |
|
tagasi üles |
|
 |
ref
Kreisi kasutaja
liitunud: 10.08.2003
|
19.12.2008 12:29:23
|
|
|
MySQLi kood:
Spoiler 
;;Loome tabeli õpilaste andmete hoidmiseks (kuna andmemudel puudu siis suvaline tabel vaid primary key'ga, vajalikud väljad lisa ise)
CREATE TABLE opilane (
ID int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY(ID)
) ENGINE=INNODB;
;;Loome tabeli vanemate andmete hoidmiseks (kuna andmemudel puudu siis suvaline tabel vaid primary key'ga, vajalikud väljad lisa ise)
CREATE TABLE vanem (
ID int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY(ID)
) ENGINE=INNODB;
;;Loome tabeli mitu-mitu seose defineerimiseks
CREATE TABLE opilane_vanem_seos(
ID int(11) NOT NULL AUTO_INCREMENT,
opilane_id int(11) NOT NULL,
vanem_id int(11) NOT NULL,
PRIMARY KEY(ID),
INDEX (opilane_id),
INDEX (vanem_id),
FOREIGN KEY (opilane_id) REFERENCES opilane(id) ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (vanem_id) REFERENCES vanem(id) ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=INNODB;
|
Muude süsteemide jaoks peaksid põhimõtteliselt sobima sarnased lausendid, AUTO_INCREMET asemel tuleb mõni sequence tekitada ja see külge pookida, ning engine=innodb osa võib normaalse andmebaasisüsteemi (PostgreSQL, Oracle, SQLite) puhul ära unustada
Ja üldiselt, kui sa juba kasutad mõnd korralikku modelleerimistarkvara siis sellel on alati juures mingi vidin, mis võimaldab sul SQL lausendid olemasolevast mudelist genereerida (kui ei genereeru on mudel vale!).
|
|
Kommentaarid: 17 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
15 |
|
tagasi üles |
|
 |
Subu
HV veteran

liitunud: 16.10.2003
|
19.12.2008 12:33:20
|
|
|
see on natuke paha lugu kui semestri lõpus nii liihtsaid tabeleid ei oska koostada
http://www.tucows.com/preview/362977 Qsee superlite , tasuta ja enam vähem proge.
|
|
Kommentaarid: 60 loe/lisa |
Kasutajad arvavad: |
   |
:: |
2 :: |
0 :: |
56 |
|
tagasi üles |
|
 |
daman
Kreisi kasutaja
liitunud: 05.11.2001
|
19.12.2008 13:23:10
|
|
|
ref-i kood natuke kahtlane, M:M seoste hoidmise tabelis ei poea eraldi primaarvõtme välja defineerima, primaarvõtmeks määrata seostetabeli id-d.
Spoiler 
;;Loome tabeli mitu-mitu seose defineerimiseks
CREATE TABLE opilane_vanem_seos(
opilane_id int(11) NOT NULL,
vanem_id int(11) NOT NULL,
PRIMARY KEY(opilane_id, vanem_id),
FOREIGN KEY (opilane_id) REFERENCES opilane(id) ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (vanem_id) REFERENCES vanem(id) ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=INNODB;
|
_________________ Täna on see homme, mida sa eile kartsid. |
|
Kommentaarid: 47 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
44 |
|
tagasi üles |
|
 |
ref
Kreisi kasutaja
liitunud: 10.08.2003
|
19.12.2008 13:51:55
|
|
|
daman, tõesti, ei pea, AGA päris mitmeaastane kogemus MySQL andmebaasiga (mille maht pole teps mitte väike) on näidanud, et päring jookseb kiiremini, kui mitu-mitu seosetabelil on eraldi primaarvõti ja mõlemad välisvõtmed on ERALDI indekseeritud (manuaal ja MySQL AB ekspert soovitavad mõlemad teha ühisindeks, kuid paari miljoni kirje juures tuli juba poole sekundiline vahe päringusse...).
Kuigi jah, tõepoolest, SQL standardi järgi võttes on sul õigus, nii on ka elegantsem (kahjuks on mulle igapäevane töö külge jäänud )
|
|
Kommentaarid: 17 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
15 |
|
tagasi üles |
|
 |
raido357
HV veteran
liitunud: 26.09.2002
|
19.12.2008 15:52:57
|
|
|
Unustasin selle teema täielikult siin, sain oma asjadega siiski ise hakkama, lõpuks hakkas koitma
Võib teema kustutada minupoolest.
|
|
Kommentaarid: 78 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
70 |
|
tagasi üles |
|
 |
daman
Kreisi kasutaja
liitunud: 05.11.2001
|
19.12.2008 23:15:08
|
|
|
Mh, ma mõtlen seda, et tegelikult, teoreetiliselt küll, ei ole indeksi ehitus sugugi aeglasem kui kasutada rohkem kui ühte välja. Prakika võib teinekord olla mitte nii mustvalge ja kuna ma kasutan MysQLi suht vähe, kuna ei pea teda just eriti tõsiseltvõetavaks andmebaasisüsteemiks, siis ma ei oska praktilise koha pealt kaasa rääkida
_________________ Täna on see homme, mida sa eile kartsid. |
|
Kommentaarid: 47 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
44 |
|
tagasi üles |
|
 |
tanzanite
HV kasutaja

liitunud: 13.05.2006
|
22.12.2008 12:39:23
|
|
|
Andmebaasi terviklikkus/rikkumatus on reeglina olulisem kui need lisasekundid. Kui seos korduda ei või siis ei tohiks seda ka lubada.
|
|
tagasi üles |
|
 |
|