Вы можете иметь отношения между таблицами без объявления внешнего ключа. Вы просто делаете
SELECT a.*, t.* FROM artist a INNER JOIN track t ON a.artistid = t.trackartist;
(вместо a.*, t.*
подставляются нужные столбцы).
Вы можете сделать это, не заявляя, что trackartist является внешним ключом для исполнителя (artistid). Если вы сделаете это объявление, разница в том, что SQLite гарантирует, что вы никогда не поместите в trackartist значение, которое не является допустимым artistid, и что вы никогда не измените или не удалите artistid, который используется в trackartist.
Внешние ключи - это механизм для поддержания целостности ассоциации между таблицами, но вы можете «создать» любую ассоциацию, какую захотите, в операторе SELECT независимо от любых первичных или внешних ключей, объявленных в базе данных.