Ответы пользователя по тегу Базы данных
  • Сопоставление товаров в БД?

    @WaterSmith
    Android-разработчик. Java, Kotlin

    сопоставление - похожие товары
    Товарная позиция, товар, элемент номенклатуры и SKU - для меня это так же одно и тоже...

    Бизнес задача, нужно от разных поставщиков показывать походие товары по свойствам, категориям и параметрам.

    В этом случае, я бы ввел таблицы этих свойств и категорий, и затем делал бы выборку товаров по связи с этой таблицей.
    Например, таблицы:
    Типы категорий (cattypes): id, name
    Категории (categories): id, type_id, name
    Принадлежность товаров к категориям (product_categories): sku_id, kat_id
    Теперь, допустим у нас есть тип категории "Инструмент". У него есть категории: "Отвертки", "Пассатижи", "Молотки".
    И допустим есть тип категори "Виды отверток", с категориями: "крестовая", "звездочка", "шлицевая".
    В таблицу product_categories вы делаете записи по каждому товару и каждой категории, для крестовых отвертки это будет две записи, "Отвертки" и "крестовая". (нужно больше признаков, просто добавляете новые типы и значения категорий).
    В результате у вас в этой таблице product_categories будет столько записей, сколько у вас категорий по каждому товару. Для какого-то товара 5 записей, для какого-то одна, ну допустим в среднем 5 записей. Тогда размер этой таблицы будет КоличествоТоваров * 5
    Ответ написан
  • Как можно хранить фотографии в виде байтов?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Если вы хотите хранить или передавать двоичные данные в виде строки, то для этого придумали Base64.
    Для хранения в бд SQL есть тип varbinary, в других БД может быть тип BLOB.
    Ответ написан
    1 комментарий
  • Как создать динамический фильтр для товаров?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Например, есть таблица, со значениями фильтров, вида: productId, attrId, attrValue.
    У одного товара есть атрибуты: Производитель, Размер, Цвет
    У другого атрибуты: Мощность, Цвет, Длина кабеля.
    Вы отображаете те типы фильтров, которые есть у товаров попавших в выборку.
    Таким образом, пока у вас в выборке присутствуют все товары, вы отображаете все возможные фильтры, которые есть. Как только пользователь выполнил отбор скажем по цвету, В выборку попали только товары этого цвета, и опять доступны для выбора только те атрибуты которые есть у отобранных товаров.
    Ответ написан
    Комментировать
  • Как должен выглядеть запрос - так чтоб после анализа различных api и баз данных контрагентов, в ответ падал наиболее соответствующий вариант?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    В запросе должны содержаться все необходимые критерии отбора. Все эти 25 критериев.
    Ответ написан
    Комментировать
  • Задачка на сообразительность, как решить?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    При сохранении настроек пользователя, хешируем группу тегов на которую он подписался и сохраняем хеш. При добавлении контента с группой тегов, так же вычисляем хеш, и ищем всех подписчиков с таким же хешем.

    update:
    Кажется я понял.
    Создаете таблицу подписок (subscribers) вида: user, tag
    Далее, делаете выборку из этой таблицы, примерно так:
    SELECT user, count(tag) as tagcounter
    FROM subscribers 
    WHERE tag IN (%taglist)
    GROUP BY user
    HAVING tagcounter>1

    где %taglist - список тегов статьи
    Ответ написан
    4 комментария
  • Как можно правильно реализовать лайк/дизлайк в новостной сайте?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    IP адрес не годится в качестве идентификатора пользователя, он может измениться, он может быть выдан другому пользователю. Запись в куках (в кэше) тоже не годится, у пользователя может быть несколько компьютеров, пользователь может предоставить доступ со своего компьютера другому пользователю, в конце концов это может быть общедоступный компьютер. Если у вас на сайте предполагается система своих лайков, не привязанная к какой либо соцсети. То нужно делать авторизацию, присваивать пользователям идентификаторы, и регистрировать лайки по ним.
    В качестве счетчика лайков, логично будет хранить не просто счетчик у новости, а писать отдельную таблицу: id новости, id пользователя, лайк, дизлайк. Когда пользователь ставит лайк - искать его id + id новости, в этой таблице, и если есть, то ставить единицу либо в поле лайк, либо дизлайк.
    Для счетчика под новостью брать сумму лайков, дизлайков по id новости.
    Ответ написан
    Комментировать