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]