[Sarlug] PostgreSQL: списки ссылок на поле другой таблицы

Dmitry Agafonov agafonovdmitry на gmail.com
Вт Янв 20 20:12:47 MSK 2015


Лично я бы рекомендовал не думать на уровне SQL, а думать на уровне
пользовательского интерфейса своей системы.
Обычно его делают на неких фреймворках, где есть связки с базой и часто в
составе есть (можно подобрать) ORM для отображения база данных <=>
программные объекты.
Исходить надо из того, какая структура нужна/генерируется для этого ORM.

В противном случае можно получить "ну не сложно же было сделать" нечто, что
будет очень сложно дебажить, расширять и дорабатывать.

Также сразу надо иметь в виду возможные (вероятность 100% по опыту ;) )
миграции структуры базы и данных. В некоторых ORM оно есть в каком-то виде.


20 января 2015 г., 18:18 пользователь NIR <faust на gmx.com> написал:

>  Всем привет.
>
> С невеликим успехом пытаюсь писать ERP-PLM-PDM систему для завода.
> Поставил PostgreSQL и начал думать над структурой БД.
>
> Дано:
> - Список документов. Для простоты представим, что в системе все документы
> представлены таблицей document с полями id (primary key), uri и name.
>
> - Список элементов, представленный таблицей elements с полями id (primary
> key), name и documents[]. Это может быть какая-то деталь, например,
> кронштейн. К данной детали необходимо привязать список документов (чертёж,
> спецификация, стандарт на крутящие моменты, качество ЛКП и прочего). Я
> пытаюсь сделать это через хранение массива documents[] типа bigint с id
> документов. Планирую разворачивать этот список в программе в имена
> документов.
>
> - Структура элементов, представляющая собой таблицу mbom с полями id
> (primary key) и structure. Поле structure имеет тип ltree (используется
> модуль ltree из PostgreSQL) и в качестве элементов дерева используются id
> таблицы elements. Эти id также планирую разворачивать в программе в
> имена(дерево) элементов, образующие крупные узлы продукции (локомотив).
>
> Вопрос:
> Основной вопрос формулируется как: А правильно ли я вообще это сделал?
> Может, есть способ получше?
> 1) Можно ли SQL запросом обратиться к массиву documents[] таблицы elements
> и по указанным там номерам раскрыть список документов? Не хочу писать
> логику разбора массива в программе.
> 2) Можно ли обратиться к полю structure таблицы mbom и по номерам ракрыть
> список соответствующих элементов? Мотивировано тем же самым нежеланием
> писать логику в программе. Хочу просто список из таблицы elements.
>
> В SQL соображаю  на уровне CREATE TABLE/ INSERT INTO.
>
> P. S.: Для работы используется Pgtcl из собственно интерпретатора Tcl.
> P. P. S.: Могу попробовать нарисовать диаграмму того, что хочу получить.
>
> --
> С уважением, Игорь Чудов
> Энгельсский Инструментальный Завод "ЭИЗ"
> Сайт: http://nir.org.ru/
> Телефон: +7 937 266-51-34
>
>
> _______________________________________________
> Sarlug mailing list
> Sarlug на lists.lug.ru
> https://lists.lug.ru/mailman/listinfo/sarlug
>



-- 
Dmitry Agafonov ~ http://agafonov.pp.ru/
----------- следующая часть -----------
Вложение в формате HTML было удалено...
URL: <http://lists.lug.ru/pipermail/sarlug/attachments/20150120/5e55dcbd/attachment-0001.html>


Подробная информация о списке рассылки Sarlug