человека
У меня ща в голове что-то перевернулось. Это как раз о Производитель->Товары и Товар->Производитель Типа, плохая связь. Товар должен знать о производителе. Но что мы можем между ними поставить?
Например: ПрайсАйтем->Товар ПрайсАйтем->Производитель ПройсАйтем->дата ПрайсАйтем->цена
с товарами лучше не изобретай велосипед. у тебя будет: производители в товаре будет производитель (ссылка) у тебя будут отдельные документы типа (заказ, сделка, ордер на доставку и т.д) в которых будут ТАБЛИЧНЫЕ части в которой будет сущность ProductRow в которой у тебя: - id строки тч - сумма - количество - скидка - название - ссылка на товар - налог итд
Ну я как бы всегда таким стандартным образом и мыслил. Но я не понимаю, в чем разница между Страна->Граждане или Гражданин->Страна. И Производитель->Товары или Товар->Производитель. Почему в одном случае Один ко многим плохо, а во втором нормально?🤷🏻♂️
Всё зависит ещё от предметной области. Где-то может быть важно одно, где-то другое. А ещё от декомпозиции состояния, которое тоже опирается на предметную область. Одни и те же сущности могут выглядеть абсолютно по-разному в разных проектах. Поэтому обсуждать это абстрактно в чате бесполезно. В этой главе задача Эванса — привлечь внимание к тому, что связи — это важно. Не стоит их делать во все стороны от всего ко всему. Потому что каждая новая связь потенциально удаляет от модели предметной области и приближает к big ball of mud. А пример с конкретной предметной областью и объяснением всех связей у него в книге дальше. Вот его можно обсудить подробнее, потому что там полный контекст дан.
Оке, давайте на конкретном примере. Производитель должен добавлять свои товары на сайт и актуализировать их цену и состояние (актуальный/архивный). Управлять может как через форму по одному товару, так и пакетно (через csv), если у конкретного производителя есть Артикуль номенклатуры. Можно сделать сущности: Manufacturer (Name, etc...) Product (Name, Manufacturer, CurrentPriceExw, isArchived, ArtCode) Где-то отдельно сделать общую сущность EntityDiffHistory (EntityType, EntityId, diff) в которой будет хранится история изменения цены. А можно сделать: Manufacturer (Name, etc...) Product (Name, CurrentPriceExw, ArtCode, isArchived) PriceItem (Date, Price, Product, Manufacturer, isArchived) и на основе этого получать историю изменения цены. И при редактировании единичного товара через форму и при загрузке CSV с актуальными ценами, всегда будет обновляться CurrentPriceExw и isArchived - состояние в сущности Product, а так же создаваться сущность PriceItem. Какой из этих двух вариантов предпочтительнее?
Обсуждают сегодня