Рябят, кому не сложно, посмотрите пожалуйста, где, может, ошибки. Если укажите, что исправить кину 100 р за помощь. Есть организации, которые заказывают программное обеспечение. Есть компания, которая разрабатывает, в ней отделы и сотрудники. Организации могут заказать по одному договору несколько программных решений, если обращаются повторно, то скидка. Должно где-то отражаться, когда работник вступил в проект и, когда вышел. Так же вознаграждение за досрочное выполнение.
>>183291573 Ты ебанутый? >>183290611 (OP) По первому лучше не ебаться а завести поле в табе клиента. Второе - очевидно напрашивается еще одна сущность.
>>183291878 Есть сотрудник. Есть отдел. Сотрудник может быть только в одном отделе. 1 ко многим. зачем тут громоздить эти громозди. >>183291914 Может ты?
>>183290611 (OP) Поле "Otdel" в таблице "Sotrydnik" лишнее. Таблица "DateDogovor" реально лишняя. Для слежения за самими заказами легче будет ввести таблицу, где будет сущность "многие-ко-многим" с сотрудниками, с датой входа и выхода в промежуточной таблице, а если проект выполняется повторно то можно добавить поле "Повторный" типа bool.
>>183292348 Чтобы следить точнее за проектами, можно добавить таблицу "Проект", к которому прикрепляется договор, отдел, а между отделом и проектом таблицу "многие-ко-многим", в которой написана дата входа и выхода отдела в проект
>>183290611 (OP) Почему договор и видБлятьОплаты и Банк 1 к одному? Типы ключей не совпадают По одному договору же может быть несколько видов оплат в реале.
Как с чеками - тыщу с безнала и писот вот вам налом
>>183293041 У тебя там связи еще напутаны. Много сотружников - 1 отдел. Один отдел - много заданий. Или может ли 2 отдела делать одно задание? В договоре много лишнего говна. 1 клиент - много договоров, а у тебя наоборот.
Ёб твою мать. Я ещё удивлялся, какие хуесосы базы проектируют. Узнал на скрине mysql workbench, думал чего годного накидаю. Посмотрел скрин и охуел. Это просто пиздос! И хуй бы с нормализацией, она для пидарасов придумана Для возмущающихся - пиздуйте гуглить CQRS + Event sourcing, а потом сразу к DDD и по тихому обтекаем, база не может диктовать ничего коду.. Ya your rot ebal, dumbass, в-общем.
>>183293690 >И хуй бы с нормализацией, она для пидарасов придумана Нормализация серьезно упрощает поддержку тому, кто будет держать базу. Как минимум разобраться проще. Насчет диктовки: смотря с какого конца проектирование начинается, хотя я тоже топлю за Code first и DDD.
>>183290611 (OP) Хуй знает что на пикче, лень разбиратся. Короче, делаешь в бд таблицы:
Работник - общая инфа, инн, имя, должность и т.д., обязательно id (int, ai), обязательно внешний ключ на отдел.
Контрагенты - тоже общая инфа типа инн, названия, id
Договора - тут тоже присваивается id, и обязательно поле orgid, в котором внешний ключ на id контрагента, ну и если надо, то всякие поля про оплату, можно тоже с внешними ключами на другие таблицы, ну там типа на таблицу с поступившими документами.
Дальше табличка с имеющимися отделами, там id и название отдела, инфа про должности и количество сотрудников тут не нужна.
Табличка о том какой отдел приступил к какому договору, там внешний ключ на id договора, внений ключ на id отдела.
Табличка о работниках, опять же внешний ключ на ид договора, поля для дат, вот эту хуйню ты видимо и хочешь. Про отдел тут не нужно, это есть в табличке о работнике. Но вообще ньюанс, работник может совмещать две должности, тогда тут уже надо отдел указать используя внешний ключ.
Как вариант можно две последние таблицы объединить в одну: внешние ключи на id договора, id отдела, id сотрудника, дата. Но этот вариант хуёвый, избыточность же.
>>183293993 Тебе не нужна связь между заданием и отделом. Сотрудник уже содержит в себе ссылку на отдел, а в твоем задании важна детализация именно по сотрудникам.
>>183290611 (OP) 1) Если это ВСЕ условие задачи тогда я не понимаю зачем в базе столько лишних полей? 2) Названия полей и таблиц - пиздец. 3) За ким хуем для АТРИБУТА договора (дата заключения) отдельная таблица? 4) >>если обращаются повторно, то скидка
Такие вещи обычно решаются программной логикой на стороне приложения, например при оформлении нового договора сотруднику в UI выводится список предыдущих договоров клиента и проставляется скидка, руками ли, или автоматом не важно. Кроме того, скидку лучше привязывать не к клиенту, а к договору, на случай если клиент попросит о нестандартной услуге, на которую скидка не предусмотрена.
5) >>Так же вознаграждение за досрочное выполнение.
Где это у тебя и кто должен вознаграждаться? Если сотрудники, работающие над проектом, тогда нужна таблица "премии", с ключами к ИД сотрудника и ИД договора, ну и размеру премии разумеется.
6) Если ДОГОВОР и ПРОЕКТ это разные сущности и за одним договором может быть несколько проектов где табла с проектами?
>>183297061 Переделал по твоей схеме. А почему клиенты многие к одному договоры? >>183297156 Добрые люди уже объяснили в чем я был не прав, стараюсь исправить >>183297990 Не
1) Есть клиент, у него может быть много договоров. Клиент - договор - один ко многим 2) У договора может быть только один способ оплаты. Справочник способов оплаты - договор - один к многим. Скидка на заказ определяется на уровне приложения и пишется в discount. 3) За одним договором может быть несколько проектов. Договор - проекты - один к многим. В проекте по колонке deadline определяем крайний срок сдачи. 4) На один проект может быть назначено много сотрудников разных отделов, допустим верстальщик, бекендер и дизайнер. Сл-но связываем проект с сотрудниками отношением многиие ко многим через таблицу employee_projects, в ней же фиксируем когда сотрудник заступил на проект и покинул его. 5) Ну и отдел - сотрудник, один отдел - много сотрудников, один к многим. Если премии надо оформить в виде таблицы можешь доделать сам
>>183299500 Та не, я уже работаю и мне хватает, но спасибо за предложение) Попросил бы покамхворить, но тут все таки не натуралотред :3, по этому просто желаю удачи) На последок держи подарочек, няш) https://ru.files.fm/u/r62esed4
Есть организации, которые заказывают программное обеспечение. Есть компания, которая разрабатывает, в ней отделы и сотрудники. Организации могут заказать по одному договору несколько программных решений, если обращаются повторно, то скидка. Должно где-то отражаться, когда работник вступил в проект и, когда вышел. Так же вознаграждение за досрочное выполнение.