Каталог
Веб-разработка с нуля: четыре курса по порядку.
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Каталог
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Урок 43 из 52 · 8 мин
Связываем таблицы так, чтобы ссылки никогда не вели в пустоту.
Покупатель лайкает товар. Где это хранить?
Таблица пар: id покупателя, id товара. Объяви их внешними ключами, и я не дам сослаться на несуществующего покупателя.
А если покупатель удалит аккаунт?
Скажи ON DELETE CASCADE — уберу и его избранное.
FOREIGN KEY · REFERENCESстолбец integer REFERENCES таблица (id) — значение обязано существовать в другой таблице (или быть NULL).SELECT conname, pg_get_constraintdef(oid) AS rule
FROM pg_constraint
WHERE conrelid = 'orders'::regclass AND contype = 'f';ON DELETEON DELETE CASCADE — удалить ссылающиеся строки. SET NULL — обнулить ссылку. RESTRICT (по умолчанию) — запретить удаление.DELETE FROM orders WHERE id = 3;
SELECT count(*) AS items_left FROM order_items WHERE order_id = 3;PRIMARY KEY (customer_id, product_id) — уникальна пара значений. Так устроена и order_items.SELECT order_id, product_id FROM order_items WHERE order_id = 1;Каждый столбец что-то_id — внешний ключ. Без REFERENCES связь держится только на честном слове.
Создай таблицу favourites со столбцами customer_id (ссылка на customers, удаляется вместе с покупателем) и product_id (ссылка на products). Первичный ключ — пара столбцов.
categories — категории товаровid, nameproducts — товарыid, name, category_id, price, weight_g, is_available, added_oncustomers — покупателиid, name, email, city, phone, birthday, registered_onstaff — сотрудникиid, name, role, salary, hired_on, manager_idorders — заказыid, customer_id, staff_id, created_at, statusorder_items — позиции заказовorder_id, product_id, quantity, unit_pricereviews — отзывыid, customer_id, product_id, rating, comment, created_onВыберите один ответ.
Что происходит по умолчанию при удалении строки, на которую ссылаются?
Выберите один ответ.
Может ли внешний ключ быть NULL?
Проверяем состояние обучения…