• Дублирование в БД. Как победить?

    @kir_vesp
    Web Developer
    Создать два связанных поля: Employe_translation_id, Employe_notarial_id, к примеру. В остальном объединить. И поставить тригеры на то переведен ли документ, если да, то заверен ли?

    UPD: Пусть у вас будет связь один-ко-многим от ServiceInfo к OrderService. Когда производиться заверение, вы просто добавляете для связи ещё одну запись из Order_Service и заполняете поле CopyCount. Таким образом, наличие значения в поле CopyCount и связь с двумя записями из Order_service(Два айдишника в поле Order_Service_id) будет являться условием для определения заверенности данного документа.
    Ответ написан
    4 комментария
  • Как выбрать, что сохранить в БД?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. заказ (осн. поля)
    2. список услуг, для привязки к заказу (id, наименование, доп.поля для каждой услуги)
    Плюсы: при добавлении доп. полей - выражение выборки данных на основе заказа не нужно будет менять. (если доп. поля - только дописать в конец)
    Ответ написан
    2 комментария
  • Проектирование классов, наследование, агрегация, что выбрать?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Поддерживаю asdz. По идее поведение классов для N исполнителей не должно отличаться с учетом N (даже если N = 1).
    Если уж очень важно отношение "я есть заказ с одним/многими исполнитель/-ями" можно указать, что заказ на чтение курса и на устный перевод реализует интерфейс IHaveOnePerformer, а заказ на письменный перевод реализует интерфейс IHaveSeveralPerformer.
    Ответ написан
    Комментировать
  • Класс наследует метод, который не должен реализовывать?

    Это нарушение принципа разделения интерфейса.
    Насколько оно существенно в вашем конкретном случае можете решить только вы, но в целом то, что вам приходится ломать SOLID, говорит об ошибках дизайна.
    Ответ написан
    Комментировать
  • Класс наследует метод, который не должен реализовывать?

    @IceJOKER
    Web/Android developer
    По-моему вам нужно прочесть про паттерны проектирования.

    Если родительский класс абстрактный и метод тоже, то нужно обязательно перегрузить метод в наследниках, иначе можно в родителей поставить заглушку, а в остальных переопределять, тогда в некоторых наследниках можно опускать перегрузку.

    Опять же прочтите про паттерны проектирования
    Ответ написан
    3 комментария
  • Легкая задачка по ООП для архитектора. Как поступить?

    Vapaamies
    @Vapaamies
    Разработчик будущей ОС для ПК размером 250 МБ
    Если сверхурочный заказ отрабатывается так же, как основной, он относится к сущности "подзаказ". Тогда получается, что метазаказы агрегируют задачи, при этом метазаказ может быть заказом или подзаказом, который разделяет с родительским заказом ключевые свойства.

    А с учетом вашего комментария получается, что заказ агрегирует не только задачи, но и подзаказы. Тогда у него два агрегирующих атрибута: задачи и подзаказы.
    Ответ написан
    4 комментария
  • Легкая задачка по ООП для архитектора. Как поступить?

    sim3x
    @sim3x
    Заказчик:
       ...
    
    ЗапросЗаказчика:
      заказчик = FK(Заказчик)  
      // заказчик = М2М(Заказчик) - если заказчики могут обьединяться для запроса
      текст_заказа = текст  // raw запрос
      ...
    
    Проект:
      запрос_заказчика = М2М(ЗапросЗаказчика)
      // менеджер разбивает raw запрос на таски
      
    ТипТаска:
      название = текст //  интерпритация, сверхурочность, обучение, 
    
    Таск
      проект = FK(Проект)
      // а можно привязать напрямую к ЗапросЗаказчика и убрать сушность Проект
      // проект = FK(ЗапросЗаказчика)
      тип_таска = М2М(ТипТаска) // сверурочное обучение
      исполнитель = FK(исполнитель)
      ...
    
    Исполнитель:
      ...
    Ответ написан
  • Проектирование архитектуры классов модели. Какой из двух вариантов выбрать?

    SternMore
    @SternMore
    Работаю над GrabDuck.com
    Из приведенных вами примеров, более логично сделать Заказ главным и хранить всю информацию в нем. Это отвечает основному предназначению системы - хранить информацию о заказах.

    Для отчетов по исполнителям и заказчикам, если по каким то причинам не устраивает искать сведения перебором, можно реализовать соответствующие отображения (views) и использовать их. Т.е. иметь отдельно списки заказчиков и исполнителей, а в данных списках хранить только ссылки на заказчиков и исполнителей из "главного" списка заказов.

    Соответственно необходимо настроить систему, чтобы при добавлении или изменении заказа соответствующие изменения применялись и на списке заказчиков и исполнителей.
    Ответ написан
    Комментировать
  • Как сделать запрос к объекту другой формы?

    hePPer
    @hePPer
    сделайте в форме addgroup новый конструктор, который будет принимать на вход в качестве параметра dataGridView и хранить его в виде поля.
    при создании передавайте ваш грид в новую форму и там используйте

    private DataGridView maingrid;
    public addgroup(DataGridView grid)
    {
    maingrid=grid;
    }

    addgroup form = new addgroup(dataGridView1);
    form.Owner = this;
    form.ShowDialog();

    public void button1_Click(object sender, EventArgs e)
    {
    int val_id = maingrid.Rows.Count + 1;
    }
    Ответ написан
    Комментировать