BonBonSlick
@BonBonSlick
Vanilla Web Architect

Есть ли смысл вышеать foreign key для ER когда все запросы на чистом SQL?

По скольку по стольку джойны и прочее идут на прямую, то есть
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;


То есть ли какой смысл вешать foreign key
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)


ведь как я понимаю это надо для маппинга сущностей в коде когда он есть.
К примеру Doctrine 2 и Entity
class User{
// foreign key post.owner_id on user.id
public $posts;
// foreign key comments.owner_id on user.id
public $comments;
}

Что бы автоматом просто делать джойн
$query->(User::class)->join(Post::class)

Но мне все же интересно будет ли буст к скорости какой или какие иные преимущества?
  • Вопрос задан
  • 80 просмотров
Решения вопроса 3
BojackHorseman
@BojackHorseman Куратор тега SQL
...в творческом отпуске...
внешний ключ нужен для того, для чего он предназначен. для гарантирования ссылочной целостности. увеличение скорости выборки при связывании таблиц идет за счет индекса, который создается при задании внешнего ключа.
Ответ написан
FOREIGN KEY необходим для введения ограничений(CONSTRAINT). Если у вас есть связь между таблицами, стоит их установить.
К примеру, разъяснение в документации к MySQL https://metanit.com/sql/mysql/2.5.php
Ответ написан
@bacon
FOREIGN KEY как бы из чистого SQL и появился, а кому-то надо почитать основы реляционной БД и что такое нормализация (из вопроса не понятно, может ты там по обычным полям, а не про ключам джойнишь)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы