Dre.hz
Active Member
Ок, тогда по порядку.
1. Как нарушить целостность данных в этой БД.
Редактируем Кефир, сохраняем его со значениями Химия > Молочные.
Тогда в таблице продуктов кефиру будет соответствовать пара Химия > Молочные, а в таблицах категорий будет пара Продукты > Молочные, а значит данные в БД противоречат самим себе.
2. Как нужно, Lite-версия.
Нужно просто убрать поле idCategoryProduct. Если нужно вывести все продукты из категории, то просто запросом типа:
3. Как нужно, расширенная версия, за что лично я бью по рукам.
- Если называете поля в lowerCamelCase, то называте все поля так. касается fileNameOwner.
- из названий полей можно смело убрать название таблицы. Нет смысла его повторять. Если хочетяс использовать его в запросах для наглядности, можно писать `categories.name`.
- Если названия полей на английском, то нужно заглянуть в словарь и перевести неизвестные слова. Касается idPodCategory -> idSubCategory
- Собственно, категории и подкатегории это одно и то же. У них даже таблицы одинаковые. Нет смысла хранить их в двух таблицах - должна быть одна. В ней будет поле типа parent, где будет указан ID родительской категории. В запросе таблицу можно джоинить саму с собой.
1. Как нарушить целостность данных в этой БД.
Редактируем Кефир, сохраняем его со значениями Химия > Молочные.
Тогда в таблице продуктов кефиру будет соответствовать пара Химия > Молочные, а в таблицах категорий будет пара Продукты > Молочные, а значит данные в БД противоречат самим себе.
2. Как нужно, Lite-версия.
Нужно просто убрать поле idCategoryProduct. Если нужно вывести все продукты из категории, то просто запросом типа:
Код:
SELECT p.* FROM products p, categories c, subcategories s WHERE c.idCategory=123 AND c.idCategory = s.idCategory AND s.idPodCategory = p.idPodCategory
- Если называете поля в lowerCamelCase, то называте все поля так. касается fileNameOwner.
- из названий полей можно смело убрать название таблицы. Нет смысла его повторять. Если хочетяс использовать его в запросах для наглядности, можно писать `categories.name`.
- Если названия полей на английском, то нужно заглянуть в словарь и перевести неизвестные слова. Касается idPodCategory -> idSubCategory
- Собственно, категории и подкатегории это одно и то же. У них даже таблицы одинаковые. Нет смысла хранить их в двух таблицах - должна быть одна. В ней будет поле типа parent, где будет указан ID родительской категории. В запросе таблицу можно джоинить саму с собой.