|
|
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
Всем приветы! Что скажите по этой модели? Может предложите лучшее решение? Обеды сотрудников ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 11:43 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
ПМСМ на первый взгляд все нормально, просто я бы сделал иерархический классификатор для блюд,или хотя-бы связал блюдо и его тип через m:n, так как кроме первое/второе обязательно всплывет горячее/холодное,а базу корежить из-за этого неправильно, а блюдо одновременно обладает этими двумя свойствами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 12:42 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
Справочник Тип блюда это скорее лишнее так как его назначение только задать порядок в меню ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 13:03 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
Да и поля ОПЛАЧЕНО наверно нада перенести в таблицу DINNER (обед) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 13:05 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
Если у тебя случайно поменяли меню за прошлую дату, то получится что все сотрудники за этот день реально у тебя "съедят" эти исправления ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 13:42 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
Аргументы для составного PK в dish? Это что-то типа какое-то "первое блюдо" называется и стоит также как некое "второе блюдо"? Если какой-то такой экзотики не предусматривается, то dishid - PK, dishtypeID - FK, как следствие из menu dishtypeID тоже убираем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 13:43 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
Че та я совсем запутался, а как быть если нада предварительно составить меню на определенную дату, тогда всем сотрудникам добавляем "пустой" обед (count=0)? сейчас получаеться так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 14:20 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
сделайте табличку Статус и заполните ее значениями "Заказан", "Доставлен" и т.д. и делайте на нее ссылки в нужных местах для сотрудников. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 14:37 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
т.е. не для сотрудников,а для позиций меню.Хотя,кстати-можно обойтись и без статуса-например ввести дату начала действия данного меню и ставить ее в завтрашний день (хотя статус тоже бы не помешал) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 14:39 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
aL MIRВсем приветы! Что скажите по этой модели? Может предложите лучшее решение? Обеды сотрудников aL MIR Че та я совсем запутался , а как быть если нада предварительно составить меню на определенную дату, тогда всем сотрудникам добавляем "пустой" обед (count=0)? Сколько раз говорено - ФОРМУЛИРУЙТЕ НОРМАЛЬНО УСЛОВИЯ ЗАДАЧИ ! Сейчас всплывет "Ой, а как я узнаю из какого отдела сотрудники едят по талонам а из какого за наличные?" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 14:52 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
Sgt.Pepper Сейчас всплывет "Ой, а как я узнаю из какого отдела сотрудники едят по талонам а из какого за наличные?" Не всплывет, если именно Вы не хотите отвечать (помочь), не отвечайте, никто не заставляет. Исправляюсь. Спасибо! Формулировка задачи: Сотрудники фирмы питаются в столовой по предварительной записи : сейчас это Excel файл в котором предварительно составлено меню на неделю (5 дней по 6-8 позиций) каждый напротив своей фамилии и блюда ставит 1, 0.5 и тд или оставляет пустым (после 13:00 доступ к файлу закрыт-меню на день сформировано, обед приготовлен) Есть Excel таблица Долги сотрудников: Фамилия и долг. В конце месяца бухгалтерия суммирует все обеды сотрудника и вычитает из ЗП (или записывает в файл Долги сотрудников). Нужно: 1.Отчет для бухгалтерии кто, сколько за определенный период? 2.Долги те кто сколько съел но не еще вычли из ЗП (по разным причинам) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 15:18 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
aL MIRНе всплывет, если именно Вы не хотите отвечать (помочь), не отвечайте, никто не заставляет. Простите за резкость, помочь хотел, не хотел впустую как обычно выходит без детальной постановки задачи. По сути. Любопытно взглянуть на скриншот екселя - это такая простыня, где в первом столбце список сотрудников, а в первой строке список всех 6-8 блюд за неделю? И в каждом пересечении фамилии с блюдом стоИт 0 или 1/2 или 1? Во дела-а-а!.. Все равно стало понятней, сейчас поделюсь соображениями ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 15:28 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
Вот пример файлика с обедами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 15:43 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
раз всплыло понятие "файлик разрешен для редактирования до 13 часов" появляются блокировки бизнес-уровня.Поэтому необходимо как-то их обеспечить,например через те же статусы пунктов меню.Например,статус пункта меню "Подтвержден" больше редактировать нельзя, "Заявлен" еще можно править,"Отгружен"-отправили клиенту.Тогда еще вспылывает одна таблица с полями Суррогатный ключ, Ссылка на соотв пункт меню (тут Вам должен был бы пригодиться сурогатный ключ для Блюдо-Человек, которого нет), Ссылка на табличку со статусами, дата установки.Понятно дело предыдущие статусы менять нельзя.МОжно только добавлять новые и то только до статуса "Отгружен"-пункт меню завершил свою жизнь.И отчетность как раз надо строить по пунктам типа "Отгружен":можно делать историю пунктов меню для аналитики например частоты смены позиций меню. В общем "фантазия ON". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 16:09 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
Предлагаю так: menu (реальное меню по дням - что было доступно для заказа) menuid pk dishid fk menudate count (если необходимо отслеживать лимит заказа - сколько супа наварили в этот день) cost (цена за единицу блюда если она может со временем меняться, иначе оставляем в dish ) dinner (оплата конкретного сотрудника на конкретную дату) dinnerid pk emplID fk dinnerdate payment (сколько заплатил) dinner_detail (оплата конкретного сотрудника на конкретную дату) dinnerdetailid pk dinnerid fk menuid fk count (кол-во порций конкретного блюда) ну где-то так в первом приближении... Правда при таком раскладе я бы таблицу dinner переименовал - она больше отражает факт_оплаты. Или вообще отделил бы эти сущности - оплату и сам обед, т.к. может быть оплата без обеда, а обед без оплаты. Это если в последней таблице вместо dinnerid fk сделать emplID fk. Решать Вам а отчеты, понятное дело расчитываются хранимыми процедурами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 16:09 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
А это то "а отчеты, понятное дело расчитываются хранимыми процедурами" тут причем?Селектом что-ли не вытащить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 16:11 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
да, ну и, конечно, по всем таблицам наложить ограничения целостности... я уж не стал вдаваться в эти подробности, например в menu dishid + menudate - уникальный ключ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 16:16 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
Sgt.Pepper стоимость блюда конечно может меняться, и может хранить не сколько сотрудник заплатил а оплатил ли обед (блюда входящие в обед) те ДА или НЕт ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 16:25 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
ShtockА это то "а отчеты, понятное дело расчитываются хранимыми процедурами" тут причем?Селектом что-ли не вытащить? Хранимая процедура не может содержать select? Лично я отчеты ВСЕГДА реализую хранимками, но давайте и я спрошу Вас - Ваш "селект" откуда вызывается - из клиента? из вьюхи? из хп? Или я утверждал, что буду пользоваться в хп одними делитами? Хотелось всего лишь подчеркнуть для автора ту мысль, что для отчетов (пункт "нужно" в ТЗ) никаких дополнительных структур в модели данных создавать не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 16:26 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
aL MIRSgt.Pepper стоимость блюда конечно может меняться, и может хранить не сколько сотрудник заплатил а оплатил ли обед (блюда входящие в обед) те ДА или НЕт ? Т.е. отсекаем варианты, 1) что обед стоит 105 рублей, а он заплатил 100? Типа "ладно, завтра больше на пять заплатишь" 2) что он просто заплатил деньги за вчерашний неоплаченный обед НЕ_ОБЕДАЯ_СЕГОДНЯ ? Тогда можно в предложенной мной схеме и не менять ничего. Только я бы на такие варианты сразу заложился чем переделывать потом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 16:31 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
Sgt.Pepper Т.е. отсекаем варианты, 1) что обед стоит 105 рублей, а он заплатил 100? Типа "ладно, завтра больше на пять заплатишь" 2) что он просто заплатил деньги за вчерашний неоплаченный обед НЕ_ОБЕДАЯ_СЕГОДНЯ ? Как раз такие варианты надо бы по-идеии учесть... PS Блин ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 16:42 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
aL MIRPS Блин Сильно сказано! По сути - классическая бухгалтерская задача. Одна сторона счета дебетовая (таблица КтоЧёКогдаСожрал), вторая кредитовая (таблица КтоЧёКогдаПлатил). Подсчитываются дебетовый и кредитовый оборот за период, один из другого вычитается, выводится сальдо - остаток, который сотрудник недоплатил или переплатил. Это так, на пальцах... На самом деле в реальных бухсистемах чаще, конечно, обороты из обеих таблиц хранятся в одной - журнал операций/проводок и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 16:56 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
Все понял - буду рыть(думать) в этом направлении. А сейчас все таки останавлюсь на варианте оплачен или нет ВЕСЬ обед... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 17:02 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
на "Лично я отчеты ВСЕГДА реализую хранимками, но давайте и я спрошу Вас - Ваш "селект" откуда вызывается - из клиента? из вьюхи? из хп?" я посмотрю на требования по безопасности и с вероятностью 90% буду делать select на клиенте,который в свою очередь будет ползти на view сервера. P.S. Вы работаете с MSSQL (плохих чувств к нему никаких не имею)?Как показал мой опыт отчеты из хранимок очень любят ценители данной СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 17:05 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
aL MIRВсе понял - буду рыть(думать) в этом направлении. А сейчас все таки останавлюсь на варианте оплачен или нет ВЕСЬ обед... ок, не возражаю ))) успехов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 17:06 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
Shtockна "Лично я отчеты ВСЕГДА реализую хранимками, но давайте и я спрошу Вас - Ваш "селект" откуда вызывается - из клиента? из вьюхи? из хп?" я посмотрю на требования по безопасности и с вероятностью 90% буду делать select на клиенте,который в свою очередь будет ползти на view сервера. P.S. Вы работаете с MSSQL (плохих чувств к нему никаких не имею)?Как показал мой опыт отчеты из хранимок очень любят ценители данной СУБД. Клиентовский селект к вьюхе в 90% случаев безопаснее, чем ХП? Вы на динамик намекаете? Или я просто совсем Вашу мысль не понял. Приведите такие требования по безопасности, пожалуйста, и поясните почему для Вашей СУБД ХП проигрывает в безопасности "select from view" ps да, MSSQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 17:15 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
Прикольный топик, предновогодний :-) Внесу лепту. Пояснения: 1. Связь "Оплата - Заказ" может быть null. 2. "Блюдо" не меняется - при ззменении, например, цены добавляется новое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 17:16 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
alexeyvgПрикольный топик, предновогодний :-) Внесу лепту. Пояснения: 1. Связь "Оплата - Заказ" может быть null. 2. "Блюдо" не меняется - при ззменении, например, цены добавляется новое. Никаких возражений. Просто автор судя по всему не имеет большого опыта в проектировании. Хотелось набросать ему модель "в принципе" сильно не вникая в нюансы, для окончательной реализации надо подробнее на месте разбираться в бизнес-процессах (читай "уточнять ТЗ") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 17:30 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
to Sgt.Pepper: 1.собственно я не на что не намекаю,а говорю о своем опыте работы с реальной системой,в которой часть скд реализованна во view и необходимо пользоваться стандартными средствами нашей системы. 2.У моей субд проблем с безопасностью лично мной не обнаружено (Oracle10G) 3.встроенное ср-во разработки клиентской части заточено под select из таблиц,поэтому с select из процедур просто никогда не заморачивались. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 17:53 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
Shtockto Sgt.Pepper: 1.собственно я не на что не намекаю,а говорю о своем опыте работы с реальной системой,в которой часть скд реализованна во view и необходимо пользоваться стандартными средствами нашей системы. 2.У моей субд проблем с безопасностью лично мной не обнаружено (Oracle10G) 3.встроенное ср-во разработки клиентской части заточено под select из таблиц,поэтому с select из процедур просто никогда не заморачивались. Так и есть - сначала "я посмотрю на требования по безопасности и с вероятностью 90% буду делать..." (просто архитектор проекта!), а потом "с select из процедур просто никогда не заморачивались" (просто начинающий сотрудник поддержки). Никак обосновать не захотели. А ведь считается что неоправданное перекладывание логики на клиента есть не очень гуд. Ну, например, послезавтра чуть изменится логика формирования отчета - будете переписывать клиента и апгрейдить до нового релиза все 127 рабочих станций? Или проще переписать логику ХП на сервере, а на клиенте "exec MyStoredProc" не потребует изменений?.. И по поводу безопасности - тут вы должны дать права на вьюху, там права на "execute sp" и не обязаны давать права на таблицы или вьюхи с которыми эта ХП работает. На MSSQL возникает проблема в том случае, если селект динамический, тогда помимо права на execute sp необходимы еще и права на таблицы и вьюхи из динамика. Как я слышал у Oracle и при динамических запросах таких артефактов не возникает (было по-моему в одном из топиков). Вот об этих намеках с Вашей стороны я и спрашивал, сильно удивляясь, что их 90% случаев. Вот так вот. И потом ну а это что такое: Shtock 2.У моей субд проблем с безопасностью лично мной не обнаружено (Oracle10G) Возможно Вы тоже проблемами безопасности "просто никогда не заморачивались"? А так чего - дайте гостю полные права на все таблицы - быстро заметите, что проблемы с безопасностью не в "Вашей" СУБД, а с вероятностью 90% в Ваших руках. Это и начальство Вам быстро объяснит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 18:30 |
|
||
|
Обеды сотрудников
|
|||
|---|---|---|---|
|
#18+
Г-н Sgt.Pepper,если Вы хотите поговорить о системе контроля доступа-создавайте ОТДЕЛЬНЫЙ топик.Я готов поговорить.Данный топик о вкусной и здоровой пище и я не считаю,что его надо зафлеймивать. Но: 0.по поводу 90%-для некоторых вопросов используются временные таблицы Oracle (это несколько другая вещь чем в MS),поэтому для тех отчетов,на которые не хватает сил написанием select данные помещаются в эти таблицы,контроль доступа к которым опять таки реализован средствами Oracle. 1.по поводу "select из процедур не заморачиваюсь"-да,не заморачиваюсь,и что в этом такого.если мне не нужен инструмент я его не применяю,особенно если я не вижу преимуществ перед альтернативными способами решения проблемы 2."Никак обосновать не захотели. А ведь считается что неоправданное перекладывание логики на клиента есть не очень гуд. Ну, например, послезавтра чуть изменится логика формирования отчета - будете переписывать клиента и апгрейдить до нового релиза все 127 рабочих станций? Или проще переписать логику ХП на сервере, а на клиенте "exec MyStoredProc" не потребует изменений?.." Во-первых,не вижу проблемы обновления релиза всех 215 рабочих станций.Проблема была решена 3 года назад. Во-вторых,если Вы внимательно читали,то я обращаюсь ко view,которое с таким же успехом и поправлю. В третьих,если в отчете изменится кол-во входных параметры, то и Вы и я будем править клиента (если конечно у Вас не построена система вызова хранимых процедур на клиенте с использованием словаря системы,где описаны входные и выходные параметры-правда в таком случае работа не менее геморойна). 3.вся схема безопасности в нашей системе построена на основе системы безопасности Oracle-самопала нет никакого, причем за ее настройку (что логично) несет ответственность специально обученный пользователь Офицер доступа, так что если он даст права на все бизнес-сущности и операции с ними (права надо раздавать на них, а не на таблицы) пользователю-значит так надо.Любой же пользователь,который входит в систему имеет право только на CONNECT,а дальше работает уже СУБД,поэтому я не могу дать гостю права на все таблицы. P.S. Со свое стороны считаю флейм законченным.Спасибо за внимание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 21:14 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1544836]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
142ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 442ms |

| 0 / 0 |
