«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Может ли внешний ключ ссылаться на несколько таблиц в полиморфных ассоциациях?

Может ли внешний ключ ссылаться на несколько таблиц в полиморфных ассоциациях?

Опубликовано 16 ноября 2024 г.
Просматривать:664

Can a Foreign Key Reference Multiple Tables in Polymorphic Associations?

Полиморфные внешние ключи: может ли внешний ключ ссылаться на несколько таблиц?

Концепция внешних ключей в реляционных базах данных обычно предполагает указание точной цели таблица, на которую должен указывать ссылочный столбец. Однако при работе с полиморфными ассоциациями, когда таблица имеет связь с несколькими другими таблицами в наборе, возникает вопрос: возможно ли иметь внешний ключ, который может ссылаться на любую из этих таблиц?

Ответ: Нет

И в MySQL, и в PostgreSQL ограничение внешнего ключа может ссылаться только на одну родительскую таблицу. Это ограничение обеспечивает целостность данных, поддерживая четкую связь между ссылающимися строками и строками, на которые ссылаются в родительской таблице.

Альтернативы для полиморфных ассоциаций

Поскольку внешний ключ не может напрямую указывают на несколько таблиц, для моделирования полиморфных ассоциаций необходимы альтернативные решения:

  • Joined Наследование: Создайте одну таблицу, содержащую все столбцы из дочерних таблиц, а также столбец дискриминатора, чтобы определить, какой таблице принадлежит каждая строка.
  • Иерархия таблиц для каждого класса: Создать отдельную таблицу таблицы для каждой дочерней таблицы и устанавливать связи между ними посредством наследования.
  • Типы объединения: Используйте один столбец, в котором можно разместить данные значения из разных доменов, что позволяет ссылаться на несколько дочерних таблиц.

Дополнительные ресурсы

Для получения дополнительной информации о полиморфных ассоциациях и их решениях обратитесь к следующим ресурсы:

  • Практические объектно-ориентированные модели в SQL
  • Антипаттерны SQL, Том 1: Как избежать ошибок программирования баз данных
Заявление о выпуске Эта статья перепечатана по адресу: 1729692085. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3