Добавляют ли внешние ключи что-то к запросам PHP PHP? - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть база данных с некоторыми таблицами и внешними ключами.

persons
+----------+----------+----------+
|id_person |     name |      age |
+----------+----------+----------+
| 1        |    Smith | 45       |
+----------+----------+----------+
| 2        |    Maure | 76       |
+----------+----------+----------+

cars
+----------+----------+----------+
|   id_car |    color | id_owner*|
+----------+----------+----------+
| 1        |      red | 1        |
+----------+----------+----------+
| 2        |     gray | 2        |
+----------+----------+----------+
| 3        |    white | 2        |
+----------+----------+----------+
*id_owner has a FOREIGN KEY constraint to persons.id_person

Я знаю, как это влияет на INSERT запросы, ограничивая возможные значения внешнего ключа значениями указанного ключа.

INSERT INTO cars (id_car, color, id_owner) VALUES (NULL, "darkGray", 2) -- will add a car to the cars table.
INSERT INTO cars (id_car, color, id_owner) VALUES (NULL, "rainbow", 3) -- won't work because "3" is not a valid id_person

Но изменит ли это что-либо в запросе select?

SELECT c.color, p.name
FROM cars c
    LEFT JOIN persons p ON p.id_person = c.id_owner -- returns [["red", "Smith"], ["gray", "Maure"], ["white", "Maure"]]

1 Ответ

0 голосов
/ 07 декабря 2018

Нет, наличие отношения внешнего ключа между двумя таблицами не приведет к каким-либо изменениям / дополнениям в данных, возвращаемых выбором, использующим эти таблицы, по сравнению с установкой, которая имеет идентичные таблицы, но не имеет отношения fk

Попробуйте сами: запустите выбор на одной вкладке, удалите внешний ключ и повторно запустите тот же выбор на другой вкладке.Выход будет идентичным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...