Каталог
Веб-разработка с нуля: четыре курса по порядку.
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Каталог
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Урок 45 из 52 · 8 мин
Как разложить данные по таблицам, чтобы они не противоречили сами себе.
Добавлю в products столбец tags и буду писать «веган, хит».
А потом «Веган», «веган » и «вегн» — и поиск по меткам сломан. Метки — отдельная таблица, а связи — ещё одна.
Это связь «многие ко многим»: у товара много меток, у метки много товаров.
customers, а не в каждом заказе. Одно значение — одна ячейка, без списков через запятую.SELECT o.id, c.name
FROM orders o
JOIN customers c ON c.id = o.customer_id
WHERE c.id = 1;order_items — связка заказов и товаров.SELECT oi.order_id, p.name
FROM order_items oi
JOIN products p ON p.id = oi.product_id
WHERE oi.order_id IN (1, 3);order_items.unit_price хранит цену на момент заказа, хотя цена есть в products.SELECT oi.order_id, p.name, oi.unit_price, p.price
FROM order_items oi
JOIN products p ON p.id = oi.product_id
WHERE oi.order_id = 19;Видишь список через запятую в ячейке — нужна отдельная таблица. Дублируешь данные — объясни себе зачем.
Создай таблицу tags (id — identity и первичный ключ, name — text, уникальный и обязательный) и таблицу-связку product_tags (product_id → products, tag_id → tags, первичный ключ из пары). Добавь метку 'веган' и привяжи её к зелёному чаю (product_id = 9).
tags.name есть UNIQUE — пока нетproduct_tags две ссылки — пока нет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Выберите один ответ.
Почему плохо хранить метки строкой 'веган, хит'?
Выберите один ответ.
Как в реляционной базе хранят связь «многие ко многим»?
Проверяем состояние обучения…