|
|
|
Проверка структуры БД
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. У меня такая ситуация. Ходил на собеседование и меня попросили в качестве теста спроектировать структуру базы данных. После того как я отправил свой вариант мне ответили что я не устраиваю их как специалист. Что было не так мне естественно не сказали. А знать бы хотелось. Поэтому я выложу условие и свое решение. Если кто может найдет какие ошибки, то я был бы благодарен за советы и объяснения. УСЛОВИЕ: Требуется: Разработать структуру данных (перечень таблиц, ключей, индексов, триггеров) для реализации системы учета рабочего времени сотрудников. Требования к системе: • суммарная отметка выполненных сотрудником за день работ не должна превышать 10 часов; • каждый из сотрудников работает только в одном отделе и обладает одной из категорий («Сотрудник на испытательном сроке», «Специалист», «Ведущий специалист», «Руководитель проекта» и т.п.). Состав категорий может изменяться при выделении новых организационных единиц; • в каждом отделе есть руководитель; • в один день сотрудник может работать по разным проектам, и по разным этапам проекта; • должна быть возможность фиксации перечня проектов, в которых может участвовать сотрудник; • для работ выполненных для внешних заказчиков отдельно должно указываться время выполнения таких работ. МОЕ РЕШЕНИЕ: ----------------------------------------------------------Таблицы------------------------------------------------------------------------------------------------------ Time TaskNo int Primary Key Date DateTime Дата рабочего дня EmployeeID int Идентификатор сотрудника GrantID int Идентификатор разрешения работы по проекту Hours Decimal(2,0) Кол-во часов TaskDescription text Описание сделанной работы Триггер: 1. На вставку в таблицу проверка количества часов в день. Должно быть меньше либо равно 10. 2. На проверку разрешения работы сотрудника по соответствующему проекту (в таблице GrantToStage) Кластеризованный индекс на столбец Date. Некластеризованный индекс на столбец EmployeeID. Employees EmployeeID int Идентификатор сотрудника Name varchar(50) Имя сотрудника PositionID int Идентификатор должности DepartmentID int Идентификатор отдела Position PositionID int Идентификатор должности PositionName varchar(50) Название должности Department DepartmentID int Идентификатор отдела DepartmentName varchar(50) Название отдела DepartmentLeaderID int Начальник отдела ProjectStages StageID int Идентификатор этапа ProjectID int Идентификатор проекта StageName varchar(50) Название этапа Projects ProjectID int Идентификатор проекта ProjectName varchar(50) Название проекта CustomerID int Идентификатор заказчика GrantToStage GrantID int Идентификатор разрешения работы по проекту StageID int Идентификатор этапа EmployeeID int Идентификатор сотрудника Customers CustomerID int Идентификатор заказчика CustomerType bit Тип заказчика(внутр. или внешн.) CustomerName varchar(50) Название заказчика Схема БД в приложенном рисунке. Модератор: Тема перенесена из форума "Microsoft SQL Server". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2009, 12:31 |
|
||
|
Проверка структуры БД
|
|||
|---|---|---|---|
|
#18+
текст не читабелен абсолютно С уважением, Naf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2009, 12:54 |
|
||
|
Проверка структуры БД
|
|||
|---|---|---|---|
|
#18+
Знаю. Просто я сначала не там эту тему создал. Ее перенесли и что то с текстом случилось. Не могу найти где отредактировать. Вот тогда заново: Здравствуйте. У меня такая ситуация. Ходил на собеседование и меня попросили в качестве теста спроектировать структуру базы данных. После того как я отправил свой вариант мне ответили что я не устраиваю их как специалист. Что было не так мне естественно не сказали. А знать бы хотелось. Поэтому я выложу условие и свое решение. Если кто может найдет какие ошибки, то я был бы благодарен за советы и объяснения. УСЛОВИЕ: Требуется: Разработать структуру данных (перечень таблиц, ключей, индексов, триггеров) для реализации системы учета рабочего времени сотрудников. Требования к системе: • суммарная отметка выполненных сотрудником за день работ не должна превышать 10 часов; • каждый из сотрудников работает только в одном отделе и обладает одной из категорий («Сотрудник на испытательном сроке», «Специалист», «Ведущий специалист», «Руководитель проекта» и т.п.). Состав категорий может изменяться при выделении новых организационных единиц; • в каждом отделе есть руководитель; • в один день сотрудник может работать по разным проектам, и по разным этапам проекта; • должна быть возможность фиксации перечня проектов, в которых может участвовать сотрудник; • для работ выполненных для внешних заказчиков отдельно должно указываться время выполнения таких работ. МОЕ РЕШЕНИЕ: ----------------------------------------------------------Таблицы------------------------------------------------------------------------------------------------------ Time TaskNo int Primary Key Date DateTime Дата рабочего дня EmployeeID int Идентификатор сотрудника GrantID int Идентификатор разрешения работы по проекту Hours Decimal(2,0) Кол-во часов TaskDescription text Описание сделанной работы Триггер: 1. На вставку в таблицу проверка количества часов в день. Должно быть меньше либо равно 10. 2. На проверку разрешения работы сотрудника по соответствующему проекту (в таблице GrantToStage) Кластеризованный индекс на столбец Date. Некластеризованный индекс на столбец EmployeeID. Employees EmployeeID int Идентификатор сотрудника Name varchar(50) Имя сотрудника PositionID int Идентификатор должности DepartmentID int Идентификатор отдела Position PositionID int Идентификатор должности PositionName varchar(50) Название должности Department DepartmentID int Идентификатор отдела DepartmentName varchar(50) Название отдела DepartmentLeader varchar(50) Начальник отдела ProjectStages StageID int Идентификатор этапа ProjectID int Идентификатор проекта StageName varchar(50) Название этапа Projects ProjectID int Идентификатор проекта ProjectName varchar(50) Название проекта CustomerID int Идентификатор заказчика GrantToStage GrantID int Идентификатор разрешения работы по проекту StageID int Идентификатор этапа EmployeeID int Идентификатор сотрудника Customers CustomerID int Идентификатор заказчика CustomerType bit Тип заказчика(внутр. или внешн.) CustomerName varchar(50) Название заказчика Схема БД в приложенном рисунке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2009, 12:57 |
|
||
|
Проверка структуры БД
|
|||
|---|---|---|---|
|
#18+
maller_sХодил на собеседование и меня попросили в качестве теста спроектировать структуру базы данных. После того как я отправил свой вариант мне ответили что я не устраиваю их как специалист. Что было не так мне естественно не сказали. А знать бы хотелось. Поэтому я выложу условие и свое решение. Если кто может найдет какие ошибки, то я был бы благодарен за советы и объяснения.Строить гипотезы, что не понравилось "авторам" теста, дело абсолютно безнадёжное. Причины могут быть любыми и совершенно неожиданными, вплоть до не имеющих отношения к предложенному решению. В случае, если отказ связан с Вашими ошибками проектирования, то пояснять их может дорогого стоить, как по времени, так и по объему. В конце концов, это же не учебное заведение, отказали, значит "увы". Адекватность их мнения можно было бы проверить выяснением хотя бы одной из причин, по которой решение было признано ошибочным, если, конечно, оно стало причиной отказа. Так что лучше всё-таки обратиться к ним. С другой стороны, а оно Вам точно надо ? Насколько мне известно, существует такое мнение, что чем сложнее тесты, тем хуже чувствуют себя там работники. Впрочем, не возьмусь доказывать его справедливость. Здесь же можно привести много причин, по которой решение кажется сомнительным, но нет никакой уверенности, что они совпадут с мнением "авторов". Может там вообще смотрят на схему, изображенную местным гуру, и при несовпадении предлагаемых решений с ней автоматически отказывают соискателю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2009, 14:26 |
|
||
|
Проверка структуры БД
|
|||
|---|---|---|---|
|
#18+
ChAСтроить гипотезы, что не понравилось "авторам" теста, дело абсолютно безнадёжное. Да в общем я и не собирался строить такие гипотезы. Просто практического опыта в проектировании БД у меня было совсем мало. И поэтому я допустил, что возможно я сделал достаточно грубые ошибки, которые человеку, хорошо в этом разбирающемуся, бросятся в глаза. Ну и услышать такую критику было бы, на мой взгляд, полезно для самообразования. Я совершенно не горю желанием доказывать что-либо авторам данного теста. А так я полностью согласен с тем что Вы написали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2009, 15:54 |
|
||
|
Проверка структуры БД
|
|||
|---|---|---|---|
|
#18+
maller_sчто возможно я сделал достаточно грубые ошибки, которые человеку, хорошо в этом разбирающемуся, бросятся в глаза. Нет, ошибок бросившихся сразу в глаза Naroto не увидело. Выглядит вполне реализуемо тем более что не реализацию от Вас ожидали увидеть а понимание основных положений создания и применения тех или иных объектов баз данных. Naroto в результате такой схематики поинтересовалось бы о кластерных индексах и почему {Table Time} выбран столбец Date как кандидат, а не ключ TaskNo - если бы ответ был удовлетворительный - Naroto бы поставило зачёт. Naroto не увидело других табличных ключей и индексов. А какова была позиция по этому собеседованию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2009, 20:02 |
|
||
|
Проверка структуры БД
|
|||
|---|---|---|---|
|
#18+
Поле Time.GrantID неуместно. Time нужно связывать непосредственно с этапом проекта. А так получается, если сотрудник списал время на этап и зя отобрать разрешение на работу по этапу проекта, даже если его участие в нём больше не требуется. Таблица Position либо не нужна, либо не отвечает требованию об изменяемости состава категорий (текущий состав категорий нигде не фиксируется). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2009, 04:23 |
|
||
|
Проверка структуры БД
|
|||
|---|---|---|---|
|
#18+
Naroto А какова была позиция по этому собеседованию? Разработчик ECM систем Участие в проектировании прикладных решений на базе ECM; Разработка и адаптация прикладных решений с использованием инструмента разработки IS-Builder, Microsoft SQL Server, .NET (ASP.NET, ADO.NET, WWF); Разработка прикладных решений на платформе MS Share Point; Разработка отчетов для MS Reporting Services; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2009, 11:07 |
|
||
|
Проверка структуры БД
|
|||
|---|---|---|---|
|
#18+
mcureenab А так получается, если сотрудник списал время на этап и зя отобрать разрешение на работу по этапу проекта, даже если его участие в нём больше не требуется. . Да действительно - при такой структуре нельзя будет отменить разрешение на работу. Даже если в момент удаления прав из табл GrantToStage обнулять поля GrantID у соответствующего работника в табл Time, то невозможно будет понять по какому проекту он работал когда было разрешение((( Интересно как тогда реализовать разрешение... Спасибо - буду думать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2009, 11:24 |
|
||
|
Проверка структуры БД
|
|||
|---|---|---|---|
|
#18+
mcureenab, насчет таблицы Position не очень понял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2009, 11:28 |
|
||
|
Проверка структуры БД
|
|||
|---|---|---|---|
|
#18+
mcureenabПоле Time.GrantID неуместно. Time нужно связывать непосредственно с этапом проекта. Все. Я понял что Вы имели ввиду. Так действительно все получается. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2009, 12:59 |
|
||
|
Проверка структуры БД
|
|||
|---|---|---|---|
|
#18+
maller_s, таблица Position или не нужна, поскольку сотоит только из двух ключей, или должна реализовывать требование : Состав категорий может изменяться при выделении новых организационных единиц. Требование для меня звучит несколько невнятно, поэтому реализация Position вызывает сомнения. В частности удаление организационной единицы должно будет сопровождаться изменением записей в Employees. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2009, 15:48 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36196325&tid=1543077]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
199ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 252ms |
| total: | 570ms |

| 0 / 0 |
