<div dir="ltr">Лично я бы рекомендовал не думать на уровне SQL, а думать на уровне пользовательского интерфейса своей системы.<div>Обычно его делают на неких фреймворках, где есть связки с базой и часто в составе есть (можно подобрать) ORM для отображения база данных &lt;=&gt; программные объекты.</div><div>Исходить надо из того, какая структура нужна/генерируется для этого ORM.</div><div><br></div><div>В противном случае можно получить &quot;ну не сложно же было сделать&quot; нечто, что будет очень сложно дебажить, расширять и дорабатывать.</div><div><br></div><div>Также сразу надо иметь в виду возможные (вероятность 100% по опыту ;) ) миграции структуры базы и данных. В некоторых ORM оно есть в каком-то виде. </div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">20 января 2015 г., 18:18 пользователь NIR <span dir="ltr">&lt;<a href="mailto:faust@gmx.com" target="_blank">faust@gmx.com</a>&gt;</span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  

    
  
  <div text="#000000" bgcolor="#FFFFFF">
    Всем привет.<br>
    <br>
    С невеликим успехом пытаюсь писать ERP-PLM-PDM систему для завода.
    Поставил PostgreSQL и начал думать над структурой БД.<br>
    <br>
    Дано:<br>
    - Список документов. Для простоты представим, что в системе все
    документы представлены таблицей document с полями id (primary key),
    uri и name.<br>
    <br>
    - Список элементов, представленный таблицей elements с полями id
    (primary key), name и documents[]. Это может быть какая-то деталь,
    например, кронштейн. К данной детали необходимо привязать список
    документов (чертёж, спецификация, стандарт на крутящие моменты,
    качество ЛКП и прочего). Я пытаюсь сделать это через хранение
    массива documents[] типа bigint с id документов. Планирую
    разворачивать этот список в программе в имена документов.<br>
    <br>
    - Структура элементов, представляющая собой таблицу mbom с полями id
    (primary key) и structure. Поле structure имеет тип ltree
    (используется модуль ltree из PostgreSQL) и в качестве элементов
    дерева используются id таблицы elements. Эти id также планирую
    разворачивать в программе в имена(дерево) элементов, образующие
    крупные узлы продукции (локомотив).<br>
    <br>
    Вопрос:<br>
    Основной вопрос формулируется как: А правильно ли я вообще это
    сделал? Может, есть способ получше?<br>
    1) Можно ли SQL запросом обратиться к массиву documents[] таблицы
    elements и по указанным там номерам раскрыть список документов? Не
    хочу писать логику разбора массива в программе.<br>
    2) Можно ли обратиться к полю structure таблицы mbom и по номерам
    ракрыть список соответствующих элементов? Мотивировано тем же самым
    нежеланием писать логику в программе. Хочу просто список из таблицы
    elements.<br>
    <br>
    В SQL соображаю  на уровне CREATE TABLE/ INSERT INTO.<br>
    <br>
    P. S.: Для работы используется Pgtcl из собственно интерпретатора
    Tcl.<br>
    P. P. S.: Могу попробовать нарисовать диаграмму того, что хочу
    получить.<span class="HOEnZb"><font color="#888888"><br>
    <pre cols="72">-- 
С уважением, Игорь Чудов
Энгельсский Инструментальный Завод &quot;ЭИЗ&quot;
Сайт: <a href="http://nir.org.ru/" target="_blank">http://nir.org.ru/</a>
Телефон: +7 937 266-51-34</pre>
  </font></span></div>

<br>_______________________________________________<br>
Sarlug mailing list<br>
<a href="mailto:Sarlug@lists.lug.ru">Sarlug@lists.lug.ru</a><br>
<a href="https://lists.lug.ru/mailman/listinfo/sarlug" target="_blank">https://lists.lug.ru/mailman/listinfo/sarlug</a><br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">Dmitry Agafonov ~ <a href="http://agafonov.pp.ru/">http://agafonov.pp.ru/</a></div>
</div>