Задать вопрос
Ответы пользователя по тегу Проектирование баз данных
  • Как сделать разные характеристики для разных категорий?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Навскидку, варианта 2:
    1. Использовать EAV;
    2. Если есть возможность переехать на Postgresql - jsonb;
    Ответ написан
    7 комментариев
  • Как правильно сделать таблицу в бд?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Намекну.
    Тогда можно хранить HTML верстку, но все же куда деть картинки?

    В HTML можно вставлять ссылки на изображения, но не сами изображения. HTML - просто текстовая разметка.
    Ответ написан
  • Как выбирать первичные ключи в БД?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Но часто всё-таки добавляют искусственный первичный ключ "Номер".

    Основная идея первичных ключей - неизменяемость и уникальность. В качестве ключа может использоваться, например, инвентарный номер или isbn, даже если содержит буквы/символы, т.к. он физически уникален и не изменяем. С другой стороны есть очень много вещей, которые могут меняться: фио, номера телефонов, логины. И если изменить это данные, то придется изменить их и во всех таблицах, которые ссылаются на эти данные. И чтобы избежать таких ситуаций и используют искусственные ключи.
    Ответ написан
    1 комментарий
  • Как лучше хранить блоки с однотипной информацией в бд?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Ну, вообще, ничего критически плохого во втором варианте с одной таблицей не вижу.
    Если смущает "бардак" - используйте вынесите поля в отдельную таблицу. Классическая реализация этого - EAV (Entity–attribute–value)
    Ответ написан
    Комментировать
  • Какие таблицы нужны для связи с филиалами?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Если между филиалами принципиальной разницы нет, то делить для них отдельные таблицы смысла нет.
    Города/филиалы вынести в отдельную таблицу ссылаться на них по первичному ключу.

    ---
    Но вообще, если это не реальная задача а не диплом/курсач/задание для универа, мой вам совет - используйте готовые решения или доверьте реализацию профессионалам. Судя по постановке вопроса, с разработкой подобных систем вы знакомы довольно слабо и потенциальные ошибки, допущенные на этапе проектирования или реализации могут стоит куда дороже суммы, которую вы потратите на специалистов.
    Ответ написан
    Комментировать
  • Что не так с первичным ключом в Базе Данных?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Приведу очень условный пример.
    Есть база данных банка;
    Клиент:
    - user_id
    - другие поля
    Кредит:
    - какие-то поля
    - user_id (Внешний ключ к Клиент)
    - сумма кредита

    И вод представьте - пришел условный Вася Пупкин и взял кредит на 10 лямов, чтобы открыть бизнес.
    Что-то происходит и запись о Васе из таблицы "Клиент" исчезает.
    И тут приходите вы, оформить кредит на 100к на условную мазду. Система, видя свободный Васин id присваивает его вам и теперь вы должны банку 10 миллионов 100 тысяч. Правда круто?
    Пример абсурдный, но суть, думаю, вы поняли.
    Ответ написан
    Комментировать
  • Как грамотно построить БД для заявок?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    1) Заявки прикреплены к компании по id.

    А в чем проблема? Если таблицы связаны через FK на уровне базы то все ок. Реляционные базы как раз для этого и делали.
    2) Для всех заявок создана всего лишь одна таблица.
    Мне кажется, что нужно делать отдельные таблицы для каждой компании. Как сделать правильно?

    Зачем такое извращение? Какую проблему вы хотите решить, добавляя для каждой компании новую таблицу?
    Если нет конкретной причины (при том - очень весомой), по которой нужно реализовывать подобное, используйте текущее решение, ибо как минимум встает вопрос: а как вы будете пилить запросы? Prepeared statments/pdo не позволяют подставлять названия таблиц. Без них - будет проблема с безопасностью. Чтобы ее решить нужно будет городить лишний код и т.д.
    Ответ написан
    1 комментарий
  • Какой язык выбрать для веб-приложения для работы с БД?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Субъективное мнение:
    Знаете html/css - попробуйте сделать веб-сайт.
    Для серверной части, если знаете шарп, можете попытаться на asp net.
    Хотя можете и любой другой ЯП:
    - php (Ну или фреймворк Laravel/Yii2)
    - NodeJS
    - Python (Выбирайте из django/flask)
    Ответ написан
    Комментировать
  • Как спроектировать базу для приложения заметочника?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Чисто навскидку:
    Tags
        -tag_id:int
        -tag:char/varchar
    Cagegories
        -category_id:int
        -category:char/varchar
    Notes:
        -note_id:int
        -note:text
        -created_at:datatime
        -updated_at:datetime
        -category:FK->Cagegories
    Notes_tag:
        note:FK->Notes
        tag:FK->Tags

    Схема запроса примерно следующая (очень условная, чисто показать принцип):
    select *.n, category.c, from Notes n, Cagegories c
    join JSON_ARRAYAGG (запрос к Notes_tag)
    order by created_at desc
    limit [from] [to]

    upd:
    При запросе динамически подставлять значения в [from] [to]
    Пример join`а JSON_ARRAYAGG (нашел в инете)
    https://www.db-fiddle.com/f/mUJLe4gPw9CZyLcfS3wrMY/0
    Ответ написан
    2 комментария
  • Как сделать отзывы для статей?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Допустим, вы сделаете так.
    Допустим, мне не понравится статья, но писать полотно текста я не хочу, и ограничусь словом "фигня". Как понять, к какому элементу будет относится отзыв?
    Для каждой сущности нужно создавать отдельную таблицу.
    Ответ написан