[ 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.
[ 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