Ответы пользователя по тегу Базы данных
  • Какую структуру таблиц выбрать для описания некоторой сущности, у представителей которой часть атрибутов совпадает, а часть - различна?

    hint000
    @hint000
    у админа три руки
    Как быть в этом случае? Создавать единую таблицу с кучей null или же несколько раздельных таблиц? Или делать таблицу для общих свойств и вспомогательные таблицы для дополнительных свойств? Может, есть некая общепринятая практика в этом случае?
    Нет чёткой общепринятой практики, потому что в разных случаях оптимальное решение может быть разное, в зависимости от постановки задачи.
    Иногда "единую таблицу с кучей null", иногда json, иногда EAV (не рекомендуется, но всё же лучше иметь возможность (знать о возможности), чем не иметь возможность): https://qna.habr.com/q/1224626
    У каждого варианта свои минусы и плюсы.

    Например, если "общих параметров" больше, чем "особых параметров", то куча null выглядит разумным выбором.
    Ответ написан
    1 комментарий
  • Запись файлов или информации в одностороннем порядке?

    hint000
    @hint000
    у админа три руки
    Задача настолько проста, что её можно решить даже скриптом на bash или cmd (т.е. в условиях, когда у вас под рукой есть только голая операционная система и больше никакого ПО). От имени первого пользователя файлики с введёнными данными записываются во временную папку; от имени второго пользователя файлики вытаскиваются из временной папки и заливаются в другое место (папка или один большой файл или даже БД), куда есть доступ у второго пользователя, но нет у первого.
    На любом другом языке эту задачу можно решить лучше (красивее, удобнее) (поскольку я привёл пример реализации задачи довольно примитивными средствами).
    Ответ написан
    Комментировать
  • Как решается проблема запуска по расписанию с нескольких реплик?

    hint000
    @hint000
    у админа три руки
    Если в силу каких-то обстоятельств непреодолимой силы окажется невозможно изменение архитектуры, которое (вполне здравомысленно) предложил Дмитрий Шицков, то могу предложить костыль. Каждая реплика перед созданием записи делает паузу на random(0..10.0) секунд, потом делает запрос, нет ли уже такой записи, если нет, то создаёт.
    В случае ежесекундных записей пауза может быть на random(0..1000) миллисекунд.
    Так-то можно и без рандомной паузы, транзакции знают своё дело и одна из реплик в любом случае окажется первой. Просто мы хотим чуток размазать всплески нагрузки (а вдруг у нас тысячи или миллионы реплик?)

    Подчеркну: костыль - это лишь костыль. Не следует его воспринимать как нормальное решение.
    Ответ написан
    Комментировать
  • В чем отличие реляционных от нереляционных БД?

    hint000
    @hint000
    у админа три руки
    ...потому что везде акцент на то, как хранятся данные - структурированно в таблицах

    ...как уже сказал, везде акцент на таблицы, не на связи
    Как же так? Я вот отрыл вики, и там сразу акцент на связи (отношения), даже явно говорится, что делать акцент на таблицах - это неправильно:
    https://ru.wikipedia.org/wiki/Реляционная_модель_данных
    Термин «реляционный» означает, что теория основана на математическом понятии отношение (relation). В качестве неформального синонима термину «отношение» часто встречается слово таблица. Необходимо помнить, что «таблица» есть понятие нестрогое и неформальное и часто означает не «отношение» как абстрактное понятие, а визуальное представление отношения на бумаге или экране. Некорректное и нестрогое использование термина «таблица» вместо термина «отношение» нередко приводит к недопониманию. Наиболее частая ошибка состоит в рассуждениях о том, что РМД имеет дело с «плоскими», или «двумерными» таблицами, тогда как таковыми могут быть только визуальные представления таблиц. Отношения же являются абстракциями и не могут быть ни «плоскими», ни «неплоскими».

    Для лучшего понимания РМД следует отметить три важных обстоятельства:

    • модель является логической, то есть отношения являются логическими (абстрактными), а не физическими (хранимыми) структурами;
    • для реляционных баз данных верен информационный принцип: всё информационное наполнение базы данных представлено одним и только одним способом, а именно — явным заданием значений атрибутов в кортежах отношений; в частности, нет никаких указателей (адресов), связывающих одно значение с другим;
    • наличие реляционной алгебры позволяет реализовать декларативное программирование и декларативное описание ограничений целостности, в дополнение к навигационному (процедурному) программированию и процедурной проверке условий.
    Ответ написан
    2 комментария
  • Какой профессии человек мне нужен?

    hint000
    @hint000
    у админа три руки
    Можно получить среднее и максимальное количество и среднюю и максимальную выручку по продавцам за период. Можно построить графики изменения по времени продаж в штуках и в стоимости для всех продавцов. Можно найти дисперсию по этим графикам для каждого продавца и попытаться понять, почему и Петя, и Вася продают по 8 штук товара за 8 часов, но Петя продаёт по 1 штуке каждый час, а Вася продаёт сразу 8 штук, а в остальное время ничего. Ну и т.д. Вообще, нельзя заранее сформулировать все вопросы. У аналитика новые вопросы появляются по мере того, как он изучает данные и получает ответы на предыдущие вопросы.
    Ответ написан
    1 комментарий
  • Как правильно описать работу клиент-серверной архитектуры?

    hint000
    @hint000
    у админа три руки
    Например, сервис2 - это заказ такси, а сервис1 - это картография с построением маршрута из точки А в точку Б, потому что это нужно для рассчёта стоимости поездки. Почему эти два сервиса не объединены в один? Например, потому, что картографический сервис можно использовать и для многих других целей.
    Ответ написан
    Комментировать
  • Как правильно реализовать бронь товара до оплаты в интернет магазине цифровых товаров?

    hint000
    @hint000
    у админа три руки
    Посмотрите на существующие интернет-магазины. Чтобы оформить заказ, нужно подтвердить регистрацию через e-mail или через SMS. Это уже потребует некоторой упоротости от ботовода, чтобы обойти. В отдельных случаях менеджер перезванивает покупателю для подтверждения заказа. Это отсекает 99.9% шутников, хотя плохо работает при большом количестве нормальных заказов.

    А вообще давайте вспомним старую историю "Хакер в столовой" или "Хакер против директора столовой" https://xakep.ru/2006/12/16/35784/ Особенно день 194-ый похож на ваш вопрос. Лучше не уподобляться персонажу этой истории.
    Ответ написан
    Комментировать
  • Как правильно реализовать вложенность в database?

    hint000
    @hint000
    у админа три руки
    (уровень подкатегорий не ограничен)
    Как раз на этот случай когда-то давно придумали универсальную штуковину:
    https://www.google.com/search?q=entity+attribute+value

    Возможно даже есть библиотеки
    Не нужно для этого библиотек, но имейте в виду, что количество программного кода у вас может получиться на порядок больше, чем для случая с чёткой фиксированной структурой. Поэтому таких архитектур (когда уровень подкатегорий не ограничен) нужно избегать по возможности.
    Ответ написан
  • Есть ли база данных или API продуктов питания или ингредиентов?

    hint000
    @hint000
    у админа три руки
    https://solutions.1c.ru/food
    https://solutions.1c.ru/catalog/public-catering-mn...
    Поищите какую-нибудь пробную версию.
    Я сам не сталкивался с этой темой, но по идее там должен быть какой-то справочник Номенклатура. Вот понятия не имею, заполнен ли он изначально. В крайнем случае можно пойти на форум 1С-ников и поклянчить у тех, кто работает с этими конфигурациями экспорт справочника.
    Ответ написан
  • Как понять принцип работы с БД?

    hint000
    @hint000
    у админа три руки
    В моем сознании укрепилось мнение, что бд - это такой файлик

    В простейшем случае так и есть. БД действительно может храниться в одном файле. В более сложных случаях БД хранится в нескольких файлах, или в папке с множеством файлов, или в множестве папок с файлами, или может целиком занимать раздел диска или весь диск (так что никаких файлов и папок нельзя увидеть) или даже может занимать тысячи дисков, в том числе диски, на которых хранится одна БД могут находиться в разных городах.

    Что касается переноса. Например, база данных на MSSQL содержится в двух файлах (сама БД и лог транзакций) или в большем количестве файлов (на усмотрение администратора); действительно, достаточно перенести эти файлы и подключить (attach) их к СУБД на новом месте. Другой вариант переноса - сделать бэкап (дамп) базы (в один файл), перенести этот бэкап и на новом месте сделать восстановление из бэкапа.
    Третий вариант, о котором говорит Dr. Bacon - миграция. Это делают либо в случае сложной структуры, либо в случае очень большой БД и недопустимости остановки работы. Например, крупная торговая сеть хочет перенести свою БД, но у них круглосуточная работа, и руководители разрешают остановку только на одну минуту (например), а перенос БД займёт три дня (например).
    Ответ написан
    Комментировать
  • Как открыть базу данных dat?

    hint000
    @hint000
    у админа три руки
    *.dat переименуйте в *.mdb и открывайте в Access.
    Ответ написан
    Комментировать