Why aren't there more foreign keys in the Discourse database?

I saw discourse db table schema only has several foreign keys, is there any reason to not use the foreign keys in most tables?

Привет,
Я пришел на форум задать тот же самый вопрос, посмотрев на таблицы.

С моими ограниченными знаниями, ограничения, вероятно, обрабатывались на уровне Rails с помощью моделей. Но я хотел бы узнать об этом больше.

Мы обдумываем эту проблему и пока не пришли к однозначному решению.

Некоторые из нас считают, что все внешние ключи должны быть определены в PostgreSQL, и полагают, что польза от этого значительно перевешивает риски. Другие же считают, что внесение столь радикальных изменений сейчас было бы рискованно.

Внешние ключи действительно вводят ограничения в базу данных. Например, если бы таблица category_users имела ограничение, согласно которому category_id должен быть корректным id в таблице categories, то при каждой вставке данных в category_users нам пришлось бы проверять это условие. Это добавляет накладные расходы, а у нас уже существует множество зависимостей.

В любом случае… мы осознаём эту проблему.