Это не круговая ссылка .
Было бы, если бы электронные письма имели тесную связь целостности с приглашениями, а приглашения - независимые отношения сильной целостности обратно к электронным письмам (например).
РЕДАКТИРОВАТЬ: в отношении дизайна
Как отмечает Хенк Холтерман, вопрос в том, является ли ваш дизайн нормализованным в желаемой степени.
Ассимиляция таблиц: первичные ключи , такие как
пользователи: id
электронные письма: id, users_id
приглашения: id, users_id, emails_id
и предполагая внешние ключи в полях table_id и , что никакие другие ограничения не налагаются на таблицы (например, только часть ключа является уникальной), тогда вы смоделировали следующее:
- для каждого пользователя может быть несколько электронных писем, и вы не можете иметь электронные письма без соответствующей записи пользователя
- для каждого электронного письма может быть несколько приглашений, и у вас не может быть приглашений без соответствующей электронной почты или записи пользователя (примечание: из приведенного выше определения мы не можем знать, относится ли user_id к записи в электронных письмах или в пользователях)
Теперь только вы можете сказать, соответствуют ли эти правила тем из реальной ситуации, которую вы пытаетесь смоделировать.
Один из способов взглянуть на дизайн базы данных - на самом деле нет неправильного дизайна базы данных, вы почти всегда можете найти данные, которые могут сделать что-то похожее на ошибку. Поэтому, не принимая и правила (в форме предложений), и таблицы (диаграмма ER, описание таблиц и взаимосвязей), невозможно сказать, есть ли проблема в дизайне (хотя можно давать предложения из личного опыта).
Для иллюстрации - приведенное выше замечание о том, что неясно, на какую таблицу ссылается user_id, может показаться простым. И общий ответ, учитывая, что вы сказали, что у каждого приглашения есть почта, это то, что оно должно ссылаться на user_id из почтовой таблицы.
В противном случае может существовать приглашение, для которого user_id, записанный в приглашении, и user_id, записанный для почты, различаются.
Обычно, это должно заставить вас вспыхнуть красным светом с надписью «нормализуйте ваши данные». Но часто негласное предположение здесь состоит в том, что email_id определяет user_id, и это может быть неверно (!).
Это зависит от семантики ваших данных (предикат каждой таблицы) - например, если вы пытаетесь смоделировать ситуацию, когда можно отправить приглашение одному человеку и получить ответ по электронной почте от другого человека (например, приглашая людей через секретаря и получая прямые ответы), затем красный свет выключается, и все в порядке - это то, что действительно произошло, и это то, что вы собираетесь учесть в своем дизайне.