|
1С устарела в доменах данных? Krendel, Ненавижу 1С, LoneMan, Гений 1С, PLUT, renegade, alexxx961503, mikecool, RomanYS, 1cVandal, agres, Fragster, Пушкин, paramedic, Zamestas, Галахад, Эх-эх-эх, Ботаник Гарден Меран, Молочный брат, Волшебник, dedmoroz777, Fish, Irbis, Homer, John D, Sserj, boozin, viraboy, spiller26, zenik, PR, VladZ, andmaxx, 2S, Ногаминебить, Vstur, LienXo, Greeen
| ☑ | ||
|---|---|---|---|---|
|
0
Гений 1С
гуру
09.11.26
✎
17:09
|
Когда я проектировал Free 1s, столкнулся с архитектурной проблемой.
Что сделать, один документ поступление товаров (с видом операции от поставщика, возврат от покупателя, прием на хранение, прием на комиссию) Или четыре документа: Поступление от поставщика, возврат от покупателя, прием на хранение, прием на комиссию. Аналогичные проблемы возникают и с контрагентами-партнерами, физлицами, контактными лицами, которые являются частями друг друга. Спросил у ИИ, оно ничего толкового не сказало, так как это сейчас грамотно проектируется (не в 1С конечно)? Ответ ИИТакие базы данных и подходы к организации данных называются объектно-ориентированными или объектно-реляционными базами данных. ———————— 📚 1. Объектно-ориентированные СУБД (OODBMS / ООБД) Базы данных, которые изначально проектировались вокруг парадигм ООП (классы, полиморфизм, наследование, инкапсуляция). ⦁ Суть: В таких СУБД нет традиционных таблиц в реляционном понимании. Вы создаете класс Документ, объявляете дочерние классы ПриходнаяНакладная и РасходнаяНакладная, и они напрямую сохраняются в хранилище как объекты. ⦁ Примеры: InterSystems Caché / IRIS, ObjectStore, db4o, Versant. ⦁ Минусы: На практике чистые ООБД сейчас используются редко из-за сложности построения произвольных аналитических выборок, агрегаций и стандартизации (SQL в них заменен на OQL или языковые API). ———————— 📚 2. Объектно-реляционные СУБД (ORDBMS) Реляционные базы, в которые встроена поддержка объектных концепций (включая наследование таблиц на уровне движка). Самый яркий и популярный пример — PostgreSQL. В PostgreSQL есть нативное наследование таблиц (INHERITS): -- Базовая таблица CREATE TABLE documents ( id SERIAL PRIMARY KEY, doc_number VARCHAR(50), doc_date DATE, status VARCHAR(20) ); -- Таблица-наследник CREATE TABLE incoming_invoices ( incoming_number VARCHAR(50), incoming_date DATE, counterparty_id INT ) INHERITS (documents); -- Таблица-наследник CREATE TABLE outgoing_invoices ( outgoing_number VARCHAR(50), outgoing_date DATE, counterparty_id INT ) INHERITS (documents); ⦁ При запросе SELECT * FROM documents база вернет все документы (и базовые, и приходные, и расходные). ⦁ При запросе SELECT * FROM incoming_invoices вернутся только приходные со всеми своими и унаследованными полями. ———————— 📚 3. ORM-паттерны в классических реляционных БД (RDBMS) В современной промышленной разработке чаще всего используют стандартные реляционные СУБД (PostgreSQL, MySQL, MS SQL, Oracle), а само наследование реализуют через слой ORM (Object-Relational Mapping). Описанная вами задача решается одним из паттернов Мартина Фаулера (Inheritance Mapping Patterns): 1. Class Table Inheritance (Joined Table Inheritance): ⦁ Создается таблица documents с общими полями (id, number, date, status). ⦁ Создаются отдельные таблицы incoming_invoices и outgoing_invoices, где первичный ключ id одновременно является внешним ключом (FOREIGN KEY) к documents.id. ⦁ При выборке конкретного документа ORM делает JOIN, а при выборке общего реестра читается только базовая таблица. 2. Single Table Inheritance (STI): ⦁ Все поля всех типов документов хранятся в одной таблице, плюс поле type (дискриминатор). Поля, специфичные для конкретного подтипа, остаются NULL для остальных. 3. Concrete Table Inheritance: ⦁ Каждая накладная живет в отдельной таблице, полностью дублируя общие поля базового документа. ———————— 📚 4. Документоориентированные NoSQL БД Если вам важна гибкость схемы (schemaless), когда базовые атрибуты общие, а специфичные зависят от типа: ⦁ Примеры: MongoDB, Couchbase или реляционные БД с колонками JSONB (PostgreSQL). ⦁ Суть: В единой коллекции документов хранятся JSON-объекты. У всех документов есть поля number, date, status, но в зависимости от типа структуры документа вложенный объект attributes содержит индивидуальный набор полей. |
|||
|
1
Fish
гуру
09.11.26
✎
17:11
|
(0) "Что сделать..." - Нанять грамотного системного архитектора.
|
|||
|
2
RomanYS
09.11.26
✎
17:16
|
(0) ожидается один универсальный ответ?
Реализация от целей и требований зависит. |
|||
|
3
Волшебник
09.11.26
✎
17:19
|
Если ограничиться бухучётом, то документ "Операция" заменяет все остальные.
|
|||
|
4
Гений 1С
гуру
09.11.26
✎
17:27
|
(2) ожидается озвучивание подходов. например, как расписать эти документы в подобной объектной базе.
Цель - красиво расписать структуру данных. (3) и один справочник AnyObject, ага. Давайте без фанатизма. |
|||
|
5
LoneMan
09.11.26
✎
17:33
|
Я бы посмотрел как это сделано в сторонних системах типа SAP, чтобы понимать как люди вообще ведут учёт.
|
|||
|
6
Гений 1С
гуру
09.11.26
✎
17:35
|
(5) я знаю, как это сделано в Navision, там обычные таблицы Customers, Vendors и т.п. С документами что-то в этом духе.
Не думаю что в SAPе начали использовать домены данных. Там такие же реляционные таблицы. |
|||
|
7
mikecool
09.11.26
✎
17:35
|
(5) если я правильно помню, а мне Мойша напел по телефону, то эта симфония звучит как (3)
то бишь - все ручками-ручками |
|||
|
8
Ненавижу 1С
гуру
09.11.26
✎
17:39
|
разные сущности, применять композицию и паттерн Декоратор
|
|||
|
9
Ненавижу 1С
гуру
09.11.26
✎
17:40
|
(6) таблицы вообще не первичны, это периферия хранения сущностей
|
|||
|
10
Гений 1С
гуру
09.11.26
✎
17:40
|
(8) чего сказать то хотел?
|
|||
|
11
Ненавижу 1С
гуру
09.11.26
✎
17:41
|
(10) какое слово непонятно в фразе?
|
|||
|
12
Гений 1С
гуру
09.11.26
✎
17:42
|
(11) ты не понял мой вопрос?
|
|||
|
13
Krendel
09.11.26
✎
17:43
|
(4) Ну так расписывай, показывай, а мы посмотрим -красиво или нет
|
|||
|
14
Krendel
09.11.26
✎
17:45
|
(0) в тз указано что проектировал -т.е. уже должны быть результаты проекта
|
| Форум | Правила | Описание | Секции | Поиск |