Hola Lorgenome:
Lo que está pasando en realidad no es un error, sino un mal planteamiento de cómo estás haciendo tus relaciones. Al estar relacionando la tabla intermedia con tu tabla3, estás obligando a que sólo las parejas que existan en la tabla intermedia se puedan asignar a la tabla3... veamos si queda claro con un ejemplo (no mencionas qué manejador de BD estás utilizando, pongo el ejemplo en MySQL pero debería aplicar a cualquier BD):
Código MySQL:
Ver original+--------+----------------+
| ID_APP | Nombre |
+--------+----------------+
| 1 | Aplicacion uno |
| 2 | Aplicacion dos |
+--------+----------------+
+--------+-------------+
| ID_PKG | Nombre |
+--------+-------------+
| 1 | Package uno |
| 2 | Package dos |
+--------+-------------+
+--------+--------+
| id_app | id_pkg |
+--------+--------+
| 1 | 1 |
| 2 | 2 |
+--------+--------+
mysql> #insertamos dos registros con una pareja de valores que exista en la
mysql> #tabla intermedia
-> (1, 1, 'Otro campo 1, 1'),
-> (2, 2, 'Otro campo 2, 2');
Query OK, 2 rows affected (0.09 sec)
+--------+--------+-----------------+
| id_app | id_pkg | otro_campo |
+--------+--------+-----------------+
| 1 | 1 | Otro campo 1, 1 |
| 2 | 2 | Otro campo 2, 2 |
+--------+--------+-----------------+
mysql> #intentamos insertar un registro donde los valores
mysql> #existen en las tablas 1 y 2, pero no existen
mysql> #en la tabla intermedia
`id_pkg`) REFERENCES `table_app_pkg` (`id_app`, `id_pkg`)) mysql>
Observa que en la tabla intermedia existen las parejas (1, 1) y (2, 2), pero en el ultimo de los casos se está intentando insertar una pareja (1, 2). Aunque estos dos valores EXISTEN EN LAS TABLAS 1 Y 2,
NO EXISTEN EN LA TABLA INTERMEDIA, por lo tanto se está respetando la integridad de la información... pues la relación está dada sobre la tabla intermedia, no sobre las tablas 1 y 2.
Ahora bien, te repito que esto no está bien o mal, depende de lo que en realidad quieras hacer. Si fuera el caso de que en tu tabla projects puedas poner parejas de valores QUE NO EXISTAN EN LA TABLA INTERMEDIA, pero que existan en las tablas 1 y 2, entonces las relaciones las tienes que hacer justamente sobre las tablas 1 y 2...
Sería conveniente que pusieras también la sentencia de creación de tus tablas, para revisar cómo estás definiendo las relaciones. Para el ejemplo que puse así quedaron definidas las tablas:
Código MySQL:
Ver original
KEY `FK_table_app_pkg2` (`id_pkg`),
KEY `FK_project` (`id_app`,`id_pkg`),