Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Задание для соискателя. Прошу помочь.  [new]
stajooor
Member

Откуда:
Сообщений: 17
Добрый день!
Мне выслали тестовое задание, которое нужно решить чтобы попасть на собеседование. Так как я начинающий специалист у меня возникли трудности. Поэтому я обращаюсь за помощью к вам)
Задание.
Задание необходимо реализовать в виде базы данных MS SQL 2008/2012 на Transact-SQL, никаких экранных форм, отчетов и интерфейсов пользователя не требуется.
Представим, что где-то, существует небольшая фирма, занимающаяся торговлей.
В фирме существуют 3 независимых склада, на которые может соответственно осуществляться приход и расход товара.
Приход осуществляется документом "Приход", расход документом "Расход". Причем в момент расхода должен производиться контроль на отрицательный остаток, в случае если хоть по одной позиции будет отрицательный остаток, транзакция должна быть отменена с ошибкой. В пояснение ошибки должны быть указаны причины отмены транзакции. Взаиморасчеты проводятся в рублях.

Сущность "товар" состоит из следующих полей
- Наименование
- Цена продажи

Сущность "склад"
- Наименование

Сущность "организация"
- Наименование

Сущность "приход" состоит из следующих полей:
- №
- дата
- склад
- продавец (организации)

детализация прихода:
- № строки
- товар
- кол-во
- цена
- сумма

Сущность "расход":
- №
- дата
- склад
- покупатель (организация)

Детализация расхода:
- № строки
- товар
- кол-во
- цена
- сумма

Складской учет ведется в разрезе "Склад", "Товар" по "Сумме" и "Количеству".
При приходе товара, на склад регистрируется количество и сумма указанная в детализации прихода.
При расходе списывается указанное количество в детализации "Расхода". Сумма списывается по средней цене. То есть "Сумма к списанию = Количество в расходе * (Остаток суммы на складе/Количество остатка товара на складе)".

2. Задание:
1. Создать таблицы соответствующие описанным сущностям.
2. Заполнить тестовыми данными.
3. Придумать и реализовать систему хранения остатков по складскому учету.
4. Реализовать систему хранимых процедур, которые будут выполнять роль интерфейса между клиентской программой и серверной частью. Необходимо реализовать 2 хранимые процедуры, которые на входе будут получать XML документ с сущностью "Приход" или "Расход". И соответственно вся логика по изменению остатков склада должна быть реализована внутри этих процедур.

Пример входного XML сообщения:
<Doc Num="1" DocDate="2010-10-20T00:00:00" StorageID="1" SellerID="1">
<Line Num="1" ProdID="10" Count="2" Price="35.3" Sum="70.6"/>
<Line Num="2" ProdID="11" Count="3" Price="10" Sum="30"/>
</Doc>


Я создал базу и таблички (диаграмма во вложении).
Дальше пошли трудности. Обратив внимание на XML возник вопрос: может мне не нужно было создавать отдельные таблички для детализации прихода и расхода, а нужно было реализовать сущность "Расход" и "Приход" как таблицу с иерархией (с применением типа hierarchyid)??

Ну и попутно остались нерешенными для меня вопросы:

Как реализовать в хранимой процедуре загрузку из xml? при помощи инструкции BULK INSERT ?
Чтобы и реализовать систему хранения остатков по складскому учету нужно создать дополнительные таблички куда будут записываться остатки?

К сообщению приложен файл. Размер - 71Kb
22 мар 15, 14:11    [17416322]     Ответить | Цитировать Сообщить модератору
 Re: Задание для соискателя. Прошу помочь.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37067
Модератор: Тестовые задания надо решать самостоятельно.


Сообщение было отредактировано: 22 мар 15, 14:27
22 мар 15, 14:26    [17416351]     Ответить | Цитировать Сообщить модератору
 Re: Задание для соискателя. Прошу помочь.  [new]
stajooor
Member

Откуда:
Сообщений: 17
Гавриленко Сергей Алексеевич
Модератор: Тестовые задания надо решать самостоятельно.


Я понимаю, я же не прошу решить задание. Прошу помочь с разрешением возникших вопросов).
22 мар 15, 14:47    [17416408]     Ответить | Цитировать Сообщить модератору
 Re: Задание для соискателя. Прошу помочь.  [new]
stajooor
Member

Откуда:
Сообщений: 17
Подскажите, пожалуйста, как реализовать сущности приход и расход. Это должны быть таблички Приход, Расход, Детализация прихода, Детализация расхода? или должны быть иерархичные таблицы Приход Расход?
22 мар 15, 17:39    [17416677]     Ответить | Цитировать Сообщить модератору
 Re: Задание для соискателя. Прошу помочь.  [new]
&lt;&gt;
Guest
Основы проектирования складской базы данных.
22 мар 15, 17:48    [17416688]     Ответить | Цитировать Сообщить модератору
 Re: Задание для соискателя. Прошу помочь.  [new]
&lt;&gt;
Guest
Складской учет.
22 мар 15, 17:51    [17416692]     Ответить | Цитировать Сообщить модератору
 Re: Задание для соискателя. Прошу помочь.  [new]
ХП,
Guest
stajooor
Подскажите, пожалуйста, как реализовать сущности приход и расход. Это должны быть таблички Приход, Расход, Детализация прихода, Детализация расхода? или должны быть иерархичные таблицы Приход Расход?
что ты называешь "иерархичные таблицы" ?
автор
Как реализовать в хранимой процедуре загрузку из xml? при помощи инструкции BULK INSERT ?
никакого BULK INSERT. просто ХП с вх.параметром с типом xml. Клиент будет читать этот xml и передавать как параметр
22 мар 15, 17:57    [17416699]     Ответить | Цитировать Сообщить модератору
 Re: Задание для соискателя. Прошу помочь.  [new]
stajooor
Member

Откуда:
Сообщений: 17
ХП,
stajooor
Подскажите, пожалуйста, как реализовать сущности приход и расход. Это должны быть таблички Приход, Расход, Детализация прихода, Детализация расхода? или должны быть иерархичные таблицы Приход Расход?
что ты называешь "иерархичные таблицы" ?
автор
Как реализовать в хранимой процедуре загрузку из xml? при помощи инструкции BULK INSERT ?
никакого BULK INSERT. просто ХП с вх.параметром с типом xml. Клиент будет читать этот xml и передавать как параметр


Вот нашел на хабре статью. Решил может таким образом нужно реализовать, потому что сущности расход и приход имеют детализацию. Ну и то что xml имеет вид:
автор
<Doc Num="1" DocDate="2010-10-20T00:00:00" StorageID="1" SellerID="1">
<Line Num="1" ProdID="10" Count="2" Price="35.3" Sum="70.6"/>
<Line Num="2" ProdID="11" Count="3" Price="10" Sum="30"/>
</Doc>

В тэге Doc поля Num, DocDate, StorageID, SellerID относятся к самой сущности Приход. А в тэге Line поля Num, ProdID, Count, Price, Sum относятся к детализации прихода. Отсюда и вопрос - если считывать xml то возможно ли реализовать чтобы хранимая процедура записывала сразу в две таблицы (в моем случае Prihod, DetPrihod) или это должна быть иерархичная таблица Prihod?
22 мар 15, 18:12    [17416712]     Ответить | Цитировать Сообщить модератору
 Re: Задание для соискателя. Прошу помочь.  [new]
ХП,
Guest
stajooor
Вот нашел на хабре статью. Решил может таким образом нужно реализовать, потому что сущности расход и приход имеют детализацию.

Да, "детализацию" - имеют, а где иерархия?
Вообщем, схема у тебя вполне нормальная.
Читай ссылку отсюда - 17416688 , там есть варианты реализации этого твоего задания: "3. Придумать и реализовать систему хранения остатков по складскому учету."
автор
Отсюда и вопрос - если считывать xml то возможно ли реализовать чтобы хранимая процедура записывала сразу в две таблицы (в моем случае Prihod, DetPrihod) или это должна быть иерархичная таблица Prihod?

Да, без проблем.
22 мар 15, 18:20    [17416722]     Ответить | Цитировать Сообщить модератору
 Re: Задание для соискателя. Прошу помочь.  [new]
ХП,
Guest
ХП,
Вообщем, схема у тебя вполне нормальная.
если не "обращать внимание" на именование полей :)
22 мар 15, 18:31    [17416731]     Ответить | Цитировать Сообщить модератору
 Re: Задание для соискателя. Прошу помочь.  [new]
stajooor
Member

Откуда:
Сообщений: 17
ХП, благодарю, буду пробовать)
22 мар 15, 19:35    [17416840]     Ответить | Цитировать Сообщить модератору
 Re: Задание для соискателя. Прошу помочь.  [new]
гр к
Guest
Мне 1-му кажется, что слишком времязатратное тестовое задание для того, чтобы просто попасть на собеседование?
22 мар 15, 21:08    [17417032]     Ответить | Цитировать Сообщить модератору
 Re: Задание для соискателя. Прошу помочь.  [new]
stajooor
Member

Откуда:
Сообщений: 17
Я честно говоря сам опешил. Задание потянет, как мне кажется, на курсовую. Для меня, как для кандидата без опыта, действительно времязатратно.
22 мар 15, 21:19    [17417052]     Ответить | Цитировать Сообщить модератору
 Re: Задание для соискателя. Прошу помочь.  [new]
stajooor
Member

Откуда:
Сообщений: 17
Читай ссылку отсюда - 17416688 , там есть варианты реализации этого твоего задания: "3. Придумать и реализовать систему .


Информация по ссылке меня больше запутала, чем внесла ясность.... Подскажите, пожалуйста, наипростейший способ решения данной задачи. Понятно одно что нужно добавить таблички, а вот как сам механизм реализовать я не пойму...
27 мар 15, 11:27    [17439197]     Ответить | Цитировать Сообщить модератору
 Re: Задание для соискателя. Прошу помочь.  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4259
Приход и расход товара в разных таблицах? - Архитектора расстрелять!
27 мар 15, 12:57    [17439996]     Ответить | Цитировать Сообщить модератору
 Re: Задание для соискателя. Прошу помочь.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37067
stajooor
Информация по ссылке меня больше запутала, чем внесла ясность.... Подскажите, пожалуйста, наипростейший способ решения данной задачи. Понятно одно что нужно добавить таблички, а вот как сам механизм реализовать я не пойму...
Тогда, боюсь, вакансия не для вас.

Сообщение было отредактировано: 27 мар 15, 13:07
27 мар 15, 13:07    [17440061]     Ответить | Цитировать Сообщить модератору
 Re: Задание для соискателя. Прошу помочь.  [new]
Axeleron
Member

Откуда: London
Сообщений: 7531
Гавриленко Сергей Алексеевич
stajooor
Информация по ссылке меня больше запутала, чем внесла ясность.... Подскажите, пожалуйста, наипростейший способ решения данной задачи. Понятно одно что нужно добавить таблички, а вот как сам механизм реализовать я не пойму...
Тогда, боюсь, вакансия не для вас.

Согласен. ТС просто тратит время форумчан, свое и своего потенциального работодателя. Если даже теоретически он получит приглашение на собеседование после выполнения общими усилиями этого тестового задания, дальше он все равно не пройдет. Пшик в общем...
27 мар 15, 13:11    [17440083]     Ответить | Цитировать Сообщить модератору
 Re: Задание для соискателя. Прошу помочь.  [new]
1С,
Guest
SQL2008
Приход и расход товара в разных таблицах? - Архитектора расстрелять!
ога ))
1С "корпорэйшион" ашш абас... зарыдала от испуга

Вы не путайте какие-то таблички "строк документов" с регистром (таблицей "Движение по документам")
27 мар 15, 13:37    [17440297]     Ответить | Цитировать Сообщить модератору
 Re: Задание для соискателя. Прошу помочь.  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4259
1С,
SQL2008
Приход и расход товара в разных таблицах? - Архитектора расстрелять!
ога ))
1С "корпорэйшион" ашш абас... зарыдала от испуга

Вы не путайте какие-то таблички "строк документов" с регистром (таблицей "Движение по документам")

Трудно от человека с таким ником ожидать иной реакции.
А архитектура 1С вообще не обращает внимания на особенности БД.
У них (вас) свое понятие о том, как должно быть.
27 мар 15, 13:43    [17440344]     Ответить | Цитировать Сообщить модератору
 Re: Задание для соискателя. Прошу помочь.  [new]
1С,
Guest
SQL2008
1С,
пропущено...
ога ))
1С "корпорэйшион" ашш абас... зарыдала от испуга

Вы не путайте какие-то таблички "строк документов" с регистром (таблицей "Движение по документам")

Трудно от человека с таким ником ожидать иной реакции.
А архитектура 1С вообще не обращает внимания на особенности БД.
У них (вас) свое понятие о том, как должно быть.
Хорошо, предложите своё видение ОБЩЕЙ таблицы для прихода и расхода, при несовпадении у них, например, 2/3 атрибутов. Будете настаивать на одной общей?
... и "регистр", я так понимаю, Вы неприемлите в принципе, так?
27 мар 15, 13:48    [17440375]     Ответить | Цитировать Сообщить модератору
 Re: Задание для соискателя. Прошу помочь.  [new]
Glory
Member

Откуда:
Сообщений: 104760
1С,
Хорошо, предложите своё видение ОБЩЕЙ таблицы для прихода и расхода, при несовпадении у них, например, 2/3 атрибутов. Будете настаивать на одной общей?
... и "регистр", я так понимаю, Вы неприемлите в принципе, так?

Давайте холиворсы вы будете устраивать в других местах
27 мар 15, 13:49    [17440382]     Ответить | Цитировать Сообщить модератору
 Re: Задание для соискателя. Прошу помочь.  [new]
stajooor
Member

Откуда:
Сообщений: 17
Столько специалистов, неужели никто не может направить в правильное русло?
Если и не возьмут то для меня опыт.
Вот ХП мне подсказал и я нашел метод как из xml выдернуть данные и вставить в табличку... Я же не прошу готовое решение или код, мне нужно что-то типо иди туда делай так...
28 мар 15, 17:24    [17444754]     Ответить | Цитировать Сообщить модератору
 Re: Задание для соискателя. Прошу помочь.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37067
Модератор: Вам уже все дали и показали. Жевать придется самостоятельно.
28 мар 15, 18:49    [17444938]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить