Как хранить text в БД?

Столкнулся со следующим вопросом, в базе данных намечаются следующие таблицы,
Например:

Users
Posts
Companies
Groups

У каждой из этих таблиц, помимо основных полей, должно быть поле description - краткое описание/пояснение соответствующей сущности. Тип этого поля - text.

Есть несколько вариантов:
1) Добавляем поле text в каждую из таблиц:
Users (description)
2) Создаем для каждой таблицы, дополнительную таблицы с описанием:
Users (description_id)
Users_description (id, description)
3) Создаем отдельную таблицу для полей descriptions всего сайта
Descriptions (id description)
Users (description_id)
Groups (description_id)
4) Вариация 3-его пункта, с вынесением связи в таблицу descriptions
Descriptions (id, sourceType, sourceId, description)
Где sourceType in ('users', 'groups', 'posts', ... ), a sourceId = идентификатор нужной entity

Мне нравится вариант номер 3 и 4.
Какой вариант предпочтительнее с вашей стороны?
  • Вопрос задан
  • 254 просмотра
Пригласить эксперта
Ответы на вопрос 2
compilator
@compilator
Senior Data Engineer
1) Да помоему тут очевидно все. У вас описание для каждой сущности свое, так и добавляйте его в кортеж. Соответственно первый вариант самый приемлимый.
2) Нафига ?
3) У вас в таком случае должны быть сквозные айдишники.
4) Ваще не понял.

Помоему вы просто перетрудились и в вашей голове мысли образовали протуберанцы :)
Ответ написан
Комментировать
@art_karetnikov
Лучший мой проект: Мобильный банк Сбербанка РФ.
Доброго.

Конечно, первый вариант. Остальные можно рассматривать только если уж хочется ну идеальнейшей оптимизации, но.

1. Эти поля у вас наверняка в запросах участвовать не будут, ни индексов, ни оптимизации им просто не нужно.
2. На выборку данных из них, если она все же потребуется, например, для создания описания базы, нужны будут запросы похитрей. На их создание и на реализацию всего, кроме первого варианта - потребуется время, которое лучше пустить на разработку базы
3. Все эти хитрые запросы не будут восприняты ни одной системой автоматической генерации описаний.
4. Вряд ли описания настолько часто совпадают и их настоль много, что оптимизация их ускорит выборку.

В общем, овчинка выделки не стоит, коллега.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы