pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Каким образом запустить nodejs приложение на vps, чтобы оно продолжало жить при закрытии терминала?

Лучший ответ: есть много вариантов
перенаправление потока  >/dev/null 2>&1
pm2
запуск в screen

Худший ответ: https://habr.com/ru/post/480670/

Есть и другие менеджеры процессов. Но я этим пользуюсь.
Вопрос: Выдает непонятный синтакс error, как исправить?

Лучший ответ: Кто-нибудь может мне объяснить, откуда взялась эта армия неумех, и почему они все пишут или парсеры, или ботов?

Худший ответ: Невооружённым глазом видно неправильные отступы.
Вопрос: Как решить ошибку подключения к бд mysql 8.0.13 через php 5.6.40?

Лучший ответ: а консоль работает из той же среды, что и скрипт? mysql точно готов принимать запросы из интернета?

Худший ответ: PHP использует порт 3306 для соединения с mysql
Вопрос: Как удалить вредоносное ПО с Linux?

Лучший ответ: Универсальный ответ - переустанови систему. Если ты поимел глупость под суперъюзером запустить левый код, значит невозможно наверняка убедиться, что полностью выпилил все вредоносные артефакты.
Проще и быстрее полностью переустановить систему.
Домашний каталог можно забэкапить полностью (если нет привыки с него что-то запускать под рутом), иначе нужно взять только документы и настройки.
Можно склонировать всю файловую систему в примонтированный файл, чтобы потом достать то, что забыл забэкапить.

Худший ответ: только восстановить систему из резервной копии полностью
Вопрос: Сравнение «буквенных» и «числовых» строк. Как происходит?

Лучший ответ: В вашем случае 123 не число а строка, при сравнении строк запускается цикл который переводит символ строки в юникод если не ошибаюсь, и сравнивается номер этих юникод символов
P.S

Худший ответ: Про сравнение лексики https://ru.wikipedia.org/wiki/%D0%9B%D0%B5%D0%BA%D...

Результат NaN считается за 0? Начальным значением NaN является Not-A-Number (не-число) — то же самое значение, что и у Number.NaN. Грубо говоря если в JS чего-то нет, то это == 0
Вопрос: Какой специалист мне нужен?

Лучший ответ: Тут 2 человека нужно. 1 бизнес аналитик собственно он создаст документ что хотят клиенты, дальше нужен тимлид он выберет стек технологий даст оценки по срокам, выберет нужных спецов.

Худший ответ: Тебе нужен хороший Менеджер Проекта. Как правило такие люди стОят как хорошие программисты, по зарплате.
Вопрос: Как сделать общий background на два блока?

Лучший ответ: Может быть для этих двух блоков сделать один общий родительский, для родителя сделать целевой фон, а у обоих дочерних блоков фон сделать прозрачным.
Получится, что-то вроде <section class="parent">
<div class="child-1"></div>
<div class="child-2"></div>
</section>

Худший ответ: Попробуй данный код с css запихать на подобный сайт как этот https://codepen.io/ 
Я думаю легче будет тебе помочь.
Вопрос: Достаточно ли таких проектов на github, чтобы можно было искать первую работу?

Лучший ответ: Поиграл в Snake Game. Что могу сказать: отличный сюжет, но слишком медленная завязка. Казалось бы, открытый мир, но миссии заскриптованы и нет побочных. Т.е. игрок или должен неуклонно следовать сюжетной линии, либо искать развлечения в игровом мире сам, а их не очень много. В том же Witcher 3 пободрей игровой процесс. Боссы не впечатлили, но на высоких уровнях сложности слишком быстро разворачивается действие игры. И ещё - сейчас уже считается моветоном единственная возможная концовка без альтернативных вариантов.

Худший ответ: лучшим вариантом будет удаленная работа
Не будет. 

Вопросов про "джуна на удаленку" - тут зиллионище, в прошлом году прям обвал был. А сейчас из-за кара-кара-карантина все "модно-стильно-молодежные" проекты просто растворятся в небытии (как фотостудия, снимавшая в нашем корпусе приличный такой обьем помещений)...

Нафига спрашивать-то? Ищите вакансии, отправляйте ссылки на портфолио - мы же тут не кадровики, не психологи :)
Вопрос: Какие преимущества использования react?

Лучший ответ: React в основном применяется при создании пользовательских интерфейсов приложений на js. так же react использует компонентный подход, можно разбить UI на несколько компонентов которые можно использовать много раз, что помогает избежать копирования кода. использовать его с wordpress скорее всего смысла нет у wordpress свой подход к созданию веб страниц. Суть данной библиотеки отделить front end в отдельное приложение которое общается с back end по API. какой язык используется в back end не важно. Если вы хотите создавать сайты, блоги и single page приложения можно  посмотреть в сторону связок React + Firebase, или React + GraphQL(API) + MongoDB(NoSQL). 
Учить всё это стоит, это современные технологии которые применяются сейчас везде.
Есть отличный youtube канал webDev посвящённый react.
Желаю вам удачи и продуктивных рабочих дней)

Худший ответ: У нас react это SPA. И преимущество (это не только react но и любой front фреймворк)
1. Разделение труда. 
2. Увеличение скорости разработки (из п.1)*
3. Большая профессиональная подготовка персонала. Если каждый отвечает за определенный пул технологий*
4. Большая скорость работы приложений. Мы ушли с web forms и это было правильно.
5. И асинхронность и порционная загрузка данных это п. 4
* если конечно не один человек делает все
Вопрос: Как настроить автоматическое выполнение SSh команд?

Лучший ответ: Отредактировать Bashrc, profile

Худший ответ: Как сделать, чтоб при подключении пользователя к SSH серверу в его сессии автоматически выполнялась команда (для каждого пользователя своя).
Окей, Гугл, bashrc.
Вопрос: Если качать игру через торрент, а скачка будет жрать весь трафик?

Лучший ответ: Настраивается в настройках роутера.
К сожалению, нам отсюда не видно как у вас сейчас настроено. Может забьет весь канал, а может и не забьет. Проще всего будет вам просто это проверить.

Худший ответ: Смотря, какой роутер, но тормозить будет в любом случае.
Вопрос: Как максимально упростить работу с MySQL?

Лучший ответ: Конечно существуют. Я думаю Вам идеально зайдет RedBean ORM:
<?php
    require 'rb.php';
    R::setup();

    //for version 5.3 and higher
    //optional but recommended
    R::useFeatureSet( 'novice/latest' );

    $post = R::dispense( 'post' );
    $post->text = 'Hello World';

    //create or update
    $id = R::store( $post );

    //retrieve
    $post = R::load( 'post', $id );
    
    //delete
    R::trash( $post );

Худший ответ: Согласен с двумя предыдущими оракулами.
Вообще такое можно слепить и на коленке:
setItem('ключ', 'значение') {
// предпологаем что база существует
$db->sql('insert ... on duplicate key update ')
}
getItem('ключ'){
$db->sql("select value where key LIKE 'ключ' ")
}
---
Вот только проблемы начнуться при увеличения количества записей. Так же вопросы чистки данных, к примеру
$db->sql("delete  where key LIKE '%ru%' ")
и все Русланы полетели в корзину (пример высосан из пальца, но надеюсь понятно).
В целом для ключ значение лучше использовать к примеру redis, либо задуматься о структуре данных.
Если это какой-то словарь с  метаданным для страницы (к примеру опять же) то имеет смысл заложить мультиязыность на этапе зачатия так же добавить связь к чему этот словарь
select * where post_id = 1 AND  lang_id = 1;
delete  where lang_id = 3;
delete  where post_id IN (1,2,3)
я уж не говорю об удобстве поиска и выборки при таком подходе (строка заканчивается словом "тест")
select * where some_meta_value LIKE '%тест' AND  lang_id = 1;
Вопрос: Какие наушники выбрать, чтобы никого не слышать в open space офисе?

Лучший ответ: Air Pods Pro. И шумодав хороший, и не давят на уши, и звук ничего для офиса.

Худший ответ: Сочувствую.
Насчет музыкальных  с активным шумоподавлением - они хорошо справляются с монотонным шумом (мотор, стройка) и не очень - с разговорами. Но все же в них намного лучше.
Лучшие из них - Bose  (QC25 подешевле, QA35 покруче), Sony (WH1000 и т.п.). Хорошо сидят на голове.

Другой вариант - пластиковые затычки в уши или "строительные" наушники.
Есть много вариантов - от дешевого поролона до всяких продвинутых. У меня есть https://www.alpinehearingprotection.com/earplugs/s...
иногда по вечерам втыкаю когда соседи шумят.
Вопрос: Как правильно расчитать стоимость своего часа работы?

Лучший ответ: Рассчитать стоимость часа логично поделив стоимость проекта на количество потерянных часов, благо у вас есть оттуда данные взять

Все мелкие задачи делать скопом раз в сутки если много или раз в неделю если свои

Если человек хочет адхок решения то минимальный биллинг для этого у меня полчаса, плюс есть обязательная часть за то что я доступен. То есть скажем в месяц 200 баксов, и полчаса за каждую мелочь решению сразу то есть 15 баксов например, если час стоит 30. Если считать две минуты и отрыв из потока, и заказчик не согласен, я его всегда отправлять поискать человека который готов в любую минуту поднять жопу и потратить минуту времени на него.

Худший ответ: Берете коридор зарплат по технологии по рынку и переводите в коридор нормо-часов. А далее в зависимости от жадности/скиллов/загруженности и т.д. - варьируете.
Вопрос: Какой ssd взять лучше?

Лучший ответ: При желании наверное можно найти на каждый диск обзор, тесты, отзывы. Разложить их в рядок и сравнивать. И это наверное правильный путь.
Лично я бы из этих взял самсунг, а как альтернативу рассматривал интел. И 120 - мало. Это уж совсем "голая" система должна быть. 240-250 уже нормально. Впрочем сейчас народ всё чаще ещё большие размеры рассматривает, чтобы совсем отказаться от hdd.

Худший ответ: Берите Плекстор, у них гарантия хорошая.
Вопрос: Как позвонить человеку используя пайтон?

Лучший ответ: Ну вот первый попавшийся док по запросу "voip python api"
https://most-voip.readthedocs.io/en/latest/python_...

Вы же понимаете, что большинство VOIP сервисов не бесплатные, и надо не просто скопировать код из примера, но еще и зарегистирироваться и подставить свой ключик.
И вероятно еще и денег забросить, если демо-доступ не дают.

Худший ответ: Можно использовать pjsua от библиотеки pjsip, если нужен sip-клиент просто позвонить. https://www.pjsip.org/python/pjsua.htm
Есть примеры для регистрации, исходящие и входящие вызова
Вопрос: Инкрементальное или дифференциальное копирование штатными средствами Windows. Кто как реализовывал?

Лучший ответ: - встроенный бекап есть и на серверах (включить роль), и на про редакциях винды (Backup and restore (Windows 7) в панели управления)
- veeam предоставляет вообще то и бесплатный вариант (upd поправил ссылку - список всех фришек от veeam) https://www.veeam.com/ru/free-virtualization-softw...
- как отмечено  Константин Цветков, если речь о СУБД, все взрослые СУБД имеют свои штатные средства создания резервных копий. при чем для БД предпочтительно использовать именно их
- в 1С тоже есть свои средства, и они тоже предпочтительнее

Худший ответ: Файлы можно бэкапить с помощью xcopy, используя аттрибут файла "Архивный" как сигнал о том, что файл был модифицирован после последней архивации. После любой модификации файла аттрибут установится автоматически.
Если надо сжимать, то консольный rar умеет так же работать с этим атрибутом. После архивации файла атрибут сбрасывается. Если правильно помню флаг -ac у него за это отвечает. На счет других архиваторов не знаю, есть ли у них поддержка такой возможности (вроде у старого доброго arj еще была такая фишка).
Собственно, основывая бэкап на использовании этого аттрибута можно накидать не сложный батник для бэкапа, который будет архивировать любым нужным архиватором выбранные файлы. Отбирать файлы по атрибутам можно с помощью dir, архивируем файл, сбрасываем аттрибут, профит.
Вопрос: На какой CMS лучше сделать сайт шахматного класса с возможностью оплаты занятий?

Лучший ответ: https://kassa.yandex.ru/integration/cms/
Вот список cms с оплатой из коробки яндекс кассы(как пример).
Выбор cms для такого небольшого проекта - будет признаком вкусовщины. Все примерно выдают одно и тоже. Самые простые - WP, Modx, Opencart, OctoberCMS

Худший ответ: Зачем нужна онлайн оплата, если могут принести её на занятия? Вам будет достаточно формы обратной связи. 
Ваша задача решается буквально за 2 вечера, начинающим программистом. Включая приём онлайн оплаты.
Вопрос: Логирование ввода с клавиатуры Linux?

Лучший ответ: Дурацкое решение вы придумали.
Просто не давайте человеку админских прав и всё. Зачем клаву трекать? Ну сменит он пароль от своего пользователя, но вам-то что. С рутовыми правами смените обрано

Худший ответ: Еслишо, логи введённых с клавиатуры команд ведутся в .bash_history, а чтобы аккаунт не увели, просто урежьте юзеру права.
Вопрос: Как правильно делать SPA приложение на Laravel и Vue Router?

Лучший ответ: SPA -SINGLE Page Application. Т.е. с точки зрения Laravel - у вас ОДНА страница, на которой вы подключаете Vue.JS, и который сам уже разруливает роутинг приложения. Т.е. правильный вариант - в Laravel один роут (типа только /), а остальное в Vue.

Худший ответ: Обычно в web.php только один роут вида Rote::any
Вопрос: Как удалить элементы массива внутри цикла JS?

Лучший ответ: идет смещение индексов, но как это обойти, уже не знаю
Перебирайте массив индексов с конца:

for (let i = arr.length; i--; ) {
  invItems.splice(arr[i], 1);
}
Или, собирайте новый массив с данными, вместо изменения того, что есть:

invItems = invItems.filter((n, i) => !arr.includes(i));

Худший ответ: var invItems = [
    {
        nameItem: 'Предмет_1'
    },
  {
        nameItem: 'Тест'
  },
    {
        nameItem: 'Предмет_2'
    }
];

var arr = [0,2],
    arrLength = invItems.length;

for (var i = 0; i < arrLength; i++) {
   for (var j = 0; i < arr.length; j++) {
       if (i === j) {
           invItems.splice(i, 1);
           break;
       }
   }
  
}
console.log(invItems);
Вопрос: Почему Windows не нравится папка Program?

Лучший ответ: Некоторые старые программы используют совместимое короткоименное обращение к папке "C://PROGRA~1" вместо "C://Program Files", что означает обратиться к первой папке с префиксом "PROGRA". Создав папку "Program", вы тем самым "встали перед" "Program Files", из-за чего эти старые программы будут лезть в вашу папку вместо системной.
Windows предлагает добавить в конец имени цифру 1, чтобы ваша папка стала второй, после "Program Files", восстановив справедливость и вернув монархию исходному правителю

Худший ответ: тезис про очередностьвместо "C://Program Files", что означает обратиться к первой папке с префиксом "PROGRA". Создав папку "Program", вы тем самым "встали перед" "Program Files"раскритикован с примерами в каменте под соответствующим ответом
лично у меня проблем нет вообще (findstr использован для устранения многострочного вывода chkdsk - фильтруем только строку про наличие или отсутствие проблем)C:D:

мое мнение - надо больше сведений, какие версии винды? какие антивирусы?
при каких обстоятельствах возникает сообщение?

ps Александр Скуснов, ок. сообщение при ребуте действительно есть. переименование распространяется только на папку на диске "C:"

мое мнение - можете игнорировать + ставить галочку отмены проверки

проблема может возникать только для очень старых программ .. думаю для тех, что родом еще из win95. но они давно не совместимы с Windows NT

поясню - в NTFS короткие имена вида Progra~1 хранятся в файловой системе вместе с длинным именем, номер присваивается в порядке создания файла/папки и ни как иначе
Вопрос: Нужно скачать сайт, возможно?

Лучший ответ: Утилита wget. Мощнейший на сегодняшний день инструмент для парсинга сайтов, +ко всему бесплатный. Главное умение им пользоваться, выкачает всё и вся как надо.https://htmlweb.ru/other/wget.php - описание как использовать.https://vadivan.ru/posobcateg/ustanovka-wget-v-win... - описание как установить.
Спарсенный (скачанный) им сайт вы сможете установить на любой хостинг + ко всему этот зверь сделает половину работы за вас. Удачи, надеюсь помог.

Худший ответ: wget --mirror
Но если на сайте есть динамический контент, он будет сохранён статично в том виде, в котором он был на момент сохранения.
Вопрос: Как найти в строке 16-ричные числа?

Лучший ответ: Проще всего с помощью регулярки 0x[\dA-Fa-f]+

Худший ответ: Тут могут быть подводные камни.

В произвольном английском тексте есть одельные независимые слова которые покрывают
диапазон 0x0..0xF и будут ложные срабатывания на артиклях: "a" и вообще коротких
словах таких как "cafe" которые технически воспринимаются как хекс-число.

Поищите все слова что покрывают abcdef.
Вопрос: Как определить что время истекло?

Лучший ответ: Доброго дня.
Как раз через Крон самый вариант.

Вам не обязательно делать "кучу" запросов - SQL язык достаточно мощный и можете за один раз выбрать всю интересующую информацию. 

Раз в секунду вовсе не обязательно. Если "3 дня на проверку", то достаточно проверять раз в час, или раз в сутки вообще (смотря с какой точностью Вам надо).

Сомневаюсь, что у Вас будет столь "высоконагруженный" сервис, что бы обработка хотя бы 1000 позиций заняло сколь нибудь существенное время.
 Если всё таки по каким-то причинам не хватает 30 секунд на  выполнение скрипта и реально "существенная" нагрузка - обрабатывайте порциями (одним запросом выгружаете всё, что нужно обработать, ставите флаг, что не запускать до конца обработки, а потом уже обрабатываете 100 штук за раз, а после снимаете флаг), либо переписываете код по-нормальному и оптимизируете, либо создаёте кластер серверов и распределяете задания, но это совсем другая история.  Думаю, принцип понятен.

Худший ответ: Доброго дня.
Как раз через Крон самый вариант.

Вам не обязательно делать "кучу" запросов - SQL язык достаточно мощный и можете за один раз выбрать всю интересующую информацию. 

Раз в секунду вовсе не обязательно. Если "3 дня на проверку", то достаточно проверять раз в час, или раз в сутки вообще (смотря с какой точностью Вам надо).

Сомневаюсь, что у Вас будет столь "высоконагруженный" сервис, что бы обработка хотя бы 1000 позиций заняло сколь нибудь существенное время.
 Если всё таки по каким-то причинам не хватает 30 секунд на  выполнение скрипта и реально "существенная" нагрузка - обрабатывайте порциями (одним запросом выгружаете всё, что нужно обработать, ставите флаг, что не запускать до конца обработки, а потом уже обрабатываете 100 штук за раз, а после снимаете флаг), либо переписываете код по-нормальному и оптимизируете, либо создаёте кластер серверов и распределяете задания, но это совсем другая история.  Думаю, принцип понятен.
Вопрос: Фоновый режим bat файла?

Лучший ответ: Запускайте батник от другого пользователя - тогда вы ее не увидите.
Если же будете запускать от пользователя под которым зашли - разумеется будете видеть в любом случае.

Худший ответ: Смотреть в сторону утилит типа cmdow.
Вопрос: Как лучше собрать портфолио?

Лучший ответ: Лучше всего для портфолио подойдет github + github pages.

Заливаете Ваш проект на github создаете ветку gh-pages.

На фрилансе размещаете превью проекта (скрины) и добавляете ссылку на Ваш проект + короткое описание.

Худший ответ: Скриншоты оформить так https://magicmockups.com/ , думаю разберёшься , там все просто. И ссылку на работу.
Вопрос: Как выполнить верстку вот такого блока?

Лучший ответ: Я сделал на flex, потому такая штука будет работать и в IE11. Хотя проще сделать с помощью grid. А вообще, такое можно сделать хоть на float (но не надо).snippet
Можете их даже компоновать иначе, ничего не развалится:snippet

Худший ответ: Смотри свойство flex-basis
https://codepen.io/Stoutov/pen/mdbmYJm
Вопрос: Поможет ли вынос работы с крэшащейся библиотекой в отдельный поток от крэша всего приложения?

Лучший ответ: Вкратце - скорее всего нет. Кроссплатформенно - еще более сомнительно.
Как именно крашится либа? Я так понял, это не вылетевшее C++ исключение, а что-то вроде коррапта памяти (хотя в самой либе может быть гадость вроде if(fail){exit(-1);}, с чем уже работать проблематично). В теории, можно для каждой платформы это обработать. Если сходу - как это можно реализовать для винды:
На самом деле выносим работу с либой в отдельный поток. Когда она сделает что-то плохое (к примеру, попытается читать освобожденную память) будет выброшено SEH исключение, для которого мы можем зарегистрировать обработчик (using a vectored exception handler в msdn). В хендлере можно было бы проверить, что исключение выброшено именно из треда этой либы и если это действительно так - просто грохнуть этот тред. Но даже если сработает это крайне плохой метод - либа захватывает какие-то ресурсы и нет никакой гарантии, что она корректно их освободит при падении треда (да и что приложение вообще останется в согласованном состоянии - кто знает, почему она падает - может, там вообще половина памяти перед этим мусором перезаписывается). Короче, решение с потоком - это потенциально нестабильная работа всего приложения.
Для изоляции памяти и использования ресурсов как раз и существуют процессы, как бы не хотелось от них уйти :)
Так что решение с отдельным процессом, который будет изолировать все болячки либы и не давать им распространиться на все приложение таки самое безопасное.

Худший ответ: Тема выходит за границы чистого С++. Автор расскажи что у тебя Windows или Linux.
Вопрос: Совместим bitrix (v20.0.1198) и php7.4?

Лучший ответ: TLDR: Пока рано.

Update: Прошу прощения. Напутал с версии: с 01.08.2020 будет требовать php 7.2, но рекомендуется php7.4

Имея опыт в системном администрировании (как минимум подкрутить настройки php), программирования (php) и знания работы битрикса, вы можете запустить его на php 7.4 и он даже будет работать (по большей части). Он заведется, но корректно работать на все 100% не будет.

Официально обьявлено, что с 1 июля (или июня) 2020 года платформа будет требовать php 7.2. Предполагаю что за несколько дней до релиза выйдет обновление, которое заменит str*-функции на mb_* функции и вы сможете использовать последнюю версию платформы на php 7.4.

Если Вы используете bitrix env, то повышение версии php выйдет несколько позже (как всегда опоздают).

Худший ответ: Рекомендаций даже на 7.3 нет. Какой смысл переходить на 7.4?
Демо магазин запускается на 7.4 и работает без ошибок.
Вопрос: Как по-простому зашифровать папку или файл в Линуксе?

Лучший ответ: GnuPG, есть во всех дистрах и очень простая. Инструкции гуглябельны.

Худший ответ: Если это нужно на постоянной основе - encfs.
Вопрос: Если тебе пишет HR, а ты джун JS без опыта работы, значит ли это что ты указал в описании больше чем знаешь, или что контора низкого уровня?

Лучший ответ: Джунам надо хвататься за любую возможность и радоваться тому, что пишут HR'ы.

Худший ответ: Возможно ты указал больше чем знаешь, возможно контора "низкого уровня" возможно им нужен джун без опыта работы и ты им подходишь.

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

Лучший ответ: Как мне видется, и имено так и делал - вынести общий код в отдельный репозитарий и подключать где нужно.
Если нужно эти данные уже как-то обработать, декорируете их уже в кокретном приложении.
Если у вас сейчас эти приложения похожи, то не известно, что будет через несколько лет. А вынос в отдельный репозитарий даст гибкость для архитектуры.
Если выносится слой логики в отдельный репозитарий, очень желетельно иметь прослойку в конечном приложении, чтоб уже данные правильно готовить. Чтоб изменения в репозитарии с логикой, не поломали другое приложение.
Долбится по HTTP выглядит вкусно, но там все недостатки репозитария и еще куча других.
Update:
Philipp , xmoonlight и я о том же пишем разными словами, насколько я понимаю. По крайней мере ответ Philipp это то, что я имею ввиду.

Худший ответ: 1. Админка и бэкенд API - это манипуляторы объектов.
2. Репозиторий объектов (их свойств и взаимосвязей) - должен быть централизованный: обычно - это связи и сущности в БД.
3. Для управления репозиторием объектов можно создать ещё один манипулятор (со своим API) и обращаться к нему по необходимости из "админки" и/или "бэкенд API".
Главное - читайте мануал к БД, чтобы использовать все возможности для манипуляции и хранения нужной Вам структуры объектов.