[ Sasko69 @ 14.03.2009. 19:17 ] @
Molim Vas da mi pomognete oko uspostavljanja relacije 1:1 u MyISAM -u (MySQL). Nije mi jasno kako uspostaviti relaciju bez FOREIGN KEY-a. |
[ Sasko69 @ 14.03.2009. 19:17 ] @
[ bogdan.kecman @ 14.03.2009. 20:30 ] @
ako hoces da napravis constraint onda ti treba foreign key, ako samo hoces da napravis relaciju .. ne treba ti ...
na primer 1:1 Code: mysql> create table t2 (kola_id int primary key, kola_ime char(30)) engine=myisam; Query OK, 0 rows affected, 2 warnings (0.00 sec) mysql> create table t3 (kola_id int primary key, kola_boja char(30)) engine=myisam; Query OK, 0 rows affected, 2 warnings (0.01 sec) mysql> insert into t2 values (1, 'zelenko'), (2, 'sarenko'), (3, 'ladisa'); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> insert into t3 values (1, 'zeleno'), (2, 'sareno'), (3, 'belo'); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> select t2.kola_id, t2.kola_ime, t3.kola_boja from t2 join t3 using (kola_id); +---------+----------+-----------+ | kola_id | kola_ime | kola_boja | +---------+----------+-----------+ | 1 | zelenko | zeleno | | 2 | sarenko | sareno | | 3 | ladisa | belo | +---------+----------+-----------+ 3 rows in set (0.00 sec) mysql> select t2.kola_id, t2.kola_ime, t3.kola_boja from t2 join t3 on (t2.kola_id = t3.kola_id); +---------+----------+-----------+ | kola_id | kola_ime | kola_boja | +---------+----------+-----------+ | 1 | zelenko | zeleno | | 2 | sarenko | sareno | | 3 | ladisa | belo | +---------+----------+-----------+ 3 rows in set (0.00 sec) mysql> select t2.kola_id, t2.kola_ime, t3.kola_boja from t2,t3 where t2.kola_id = t3.kola_id; +---------+----------+-----------+ | kola_id | kola_ime | kola_boja | +---------+----------+-----------+ | 1 | zelenko | zeleno | | 2 | sarenko | sareno | | 3 | ladisa | belo | +---------+----------+-----------+ 3 rows in set (0.00 sec) jesi to hteo ? top ti je 1:1 .. ali NEMAS CONSTRAINT .. znaci .. moras da vodis racuna o referencijalnom integritetu programski Code: mysql> delete from t3 where kola_id = 2; Query OK, 1 row affected (0.00 sec) mysql> select t2.kola_id, t2.kola_ime, t3.kola_boja from t2 join t3 using (kola_id); +---------+----------+-----------+ | kola_id | kola_ime | kola_boja | +---------+----------+-----------+ | 1 | zelenko | zeleno | | 3 | ladisa | belo | +---------+----------+-----------+ 2 rows in set (0.00 sec) mysql> select t2.kola_id, t2.kola_ime, t3.kola_boja from t2 left outer join t3 on (t2.kola_id=t3.kola_id); +---------+----------+-----------+ | kola_id | kola_ime | kola_boja | +---------+----------+-----------+ | 1 | zelenko | zeleno | | 2 | sarenko | NULL | | 3 | ladisa | belo | +---------+----------+-----------+ 3 rows in set (0.00 sec) dakle - nema nista sto te sprecava da narusis referencijalni integritet .. ako ti je bitno da zadrziz referencijalni integritet onda mozes da ga nametnes ili u svojoj aplikaciji ili u mysql-u .. (evo stize objasnjenje samo da ga nacukam) [Ovu poruku je menjao bogdan.kecman dana 14.03.2009. u 21:55 GMT+1] [ bogdan.kecman @ 14.03.2009. 20:54 ] @
nadjoh da imamo vec objasnjano na mysql sajtu: http://dev.mysql.com/tech-reso...ql-enforcing-foreign-keys.html dakle, objasnjenje kako da odradis referencijalni integritet triggerima Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|