<div dir="ltr">Лично я бы рекомендовал не думать на уровне SQL, а думать на уровне пользовательского интерфейса своей системы.<div>Обычно его делают на неких фреймворках, где есть связки с базой и часто в составе есть (можно подобрать) ORM для отображения база данных <=> программные объекты.</div><div>Исходить надо из того, какая структура нужна/генерируется для этого ORM.</div><div><br></div><div>В противном случае можно получить "ну не сложно же было сделать" нечто, что будет очень сложно дебажить, расширять и дорабатывать.</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"><<a href="mailto:faust@gmx.com" target="_blank">faust@gmx.com</a>></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">--
С уважением, Игорь Чудов
Энгельсский Инструментальный Завод "ЭИЗ"
Сайт: <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>