Secondly, if I dont use FKs I assume data will still be consistent
as long as the the corect ID is written?
Да.
Lastly, this will not effect joins right?
вправо.
When people say in the code, what exactly are we doing at the
code level to keep data linked together
Это реальный вопрос.На самом деле, действительно реальных двух вопросов:
1) Насколько вы уверены, что все входные значения действительны и не нуждаются в проверке.
2) Насколько велики ссылки на справочные таблицы?
Если ответы «не очень уверены» и «действительно малы», вы можете применить их в коде, кэшируя ответы в приложении.слой и просто выполнять поиск с использованием этих супер-быстрых таблиц в памяти перед вставкой.однако учтите, что база данных также будет кешировать эти небольшие таблицы, так что, возможно, все еще проще хранить fks.
Если ответы «не очень уверенные» и «действительно огромные», то у вас есть выбор,Вы можете удалить ограничения FK, сознательно вставить неверные значения и выполнить некоторую очистку после выполнения задания, или же вы можете сохранить эти fks в базе данных, потому что в противном случае у вас есть все эти неверные данные.
Для этой комбинации этокешировать таблицы в приложении непрактично, и если вы отбрасываете fks и делаете поиск из приложения, это даже медленнее, чем наличие fk в базе данных.
Если ответы «на 100% уверены», то2-й вопрос не имеет значения.Брось фк и вставь данные со скоростью и уверенностью.