Вопрос про название связи

StalkerClasses

Новичок
Есть таблица "Акт освидетельствования скрытых работ"
В нем у меня есть поле при выполнении работ применены - ссылка на таблицу выбора "Документ":

Соответственно есть таблица "Документы"
Данная таблица документ имеет поле тип:
- Документ, сертификат (сертификат на арматуру №такой-то, сертификат качества на бетон№такой-то, протокол испытания №такой-то).
- Материал (арматура, бетон B15, бетон B30 и т.д.)
- Оборудование, техника (кран 25т, кран 32т, кран50т, экскаватор колесный, миксер, виброплита, опалубка).

В зависимости от типа документа набор полей для редактирования немного отличается.
В данном случае это получается вид связи Many To Many.
1.gif


----------------------------------

Есть другой вариант сделать 3 отдельных таблицы:
- Документ, сертификат
- Материал
- Оборудование, техника


Создать в таблице "Many to Many" дополнительное поле "таблица" для уточнения кому принадлежит связь.
И в этом же одном поле "Документ" выбирать сразу данные из 3 таблиц с возможностью сортировки.

Как будет называться такой вид связи и можно ли вообще в принципе с ним работать с точки зрения ORM?
2.gif
 
Последнее редактирование:

AnrDaemon

Продвинутый новичок
Вам оба нужно.
Во-первых, нормализовать своё детище, а во-вторых, раз у вас количество и типы полей зависят от фазы луны, МОЖЕТ БЫТЬ, применить EAV.
Хотя я бы внимательно посидел и подумал, нельзя ли всё таки обойтись без этого, ибо накладные расходы будут недетские.
 

StalkerClasses

Новичок
EAV взял на вооружение.

Но есть еще вопрос про паттерны.
У записи есть поле тип.
В зависимости от типа (новость, ссылка, статья) выводится разный набор полей для редактирования.
Есть ли такой вид паттерна и как он называется когда в рамках 1 таблицы записи разбиваются на типы?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Накладные расходы на исполнение EAV не очень большие, большое с ним количество кода, которое надо писать для реализации.
Против EAV здесь то, что автору не нужен поиск по этим данным.

Здесь стандартное документное хранилище. Может подойти тип JSON. Стандартные ORM его не умеют мапить, конечно, но даже с реализацией мапинга ручками объем кода сокращается раз в 10.
Тут важно засунуть в JSON не все подряд, а только переменные поля с неизменяемыми данными, которые нужно только выводить.
 

StalkerClasses

Новичок
Накладные расходы на исполнение EAV не очень большие, большое с ним количество кода, которое надо писать для реализации.
Против EAV здесь то, что автору не нужен поиск по этим данным.

Здесь стандартное документное хранилище. Может подойти тип JSON. Стандартные ORM его не умеют мапить, конечно, но даже с реализацией мапинга ручками объем кода сокращается раз в 10.
Тут важно засунуть в JSON не все подряд, а только переменные поля с неизменяемыми данными, которые нужно только выводить.
Json не рассматриваю -с ним не будет никакого экспорта импорта.
 

fixxxer

К.О.
Партнер клуба
Здесь стандартное документное хранилище. Может подойти тип JSON. Стандартные ORM его не умеют мапить, конечно, но даже с реализацией мапинга ручками объем кода сокращается раз в 10.
Это смотря какие ORM.
Если Data Mapper, достаточно написать реализацию один раз.
С ActiveRecord обычно все сложно с тем, чтобы скрыть этот json от модели (а куда там его скроешь, если все в одном классе?)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Слова "экспорт" и "импорт" - это термины из пользовательского интерфейса.
В программировании есть select и update.
Я сделаю страницу, на которой выведу нужные поля. Сделаю read model, который получит из базы нужные данные, и отдам ее во view - сфомирую вывод в нужном пользователю формате. Добавлю заголовок Content-Type: application/json. Пользователи назовут это экспортом.
А ты бы в моей команде искал другую работу.
 
Сверху