Курсовая работа: Автоматизация и учет поставок товаров
При работе с системой продавец должен иметь возможность решать следующие задачи:
- принимать новые поставки и регистрировать их в системе. При этом необходимо присваивать новые коды товарам, которые ранее не поставлялись, и внести дату новой поставки. Также может учитываться количество товаров и их стоимость за каждую единицу продукции;
- производить расчет стоимости товаров в зависимости от их количества и цены за единицу продукции;
- вносить в систему новых поставщиков и удалять тех, которые более не сотрудничают с данным магазином.
Покупатели должны иметь возможность решать следующие задачи:
1) просматривать перечень имеющихся в наличии товаров;
2) интересоваться в какой стране был изготовлен интересующий покупателя товар;
3) просматривать информацию о цене одной единицы товара.
Администрация магазина должна иметь возможность:
- отслеживать своевременность поставок;
- подсчитывать стоимость поставки;
- получать сведения о товарах, которые не пользуются спросом, так как количество товаров данного вида и данной марки не уменьшилось;
- получать сведения о товарах, которые пользуются большим спросом у покупателей.
2 Проектирование модели данных
2.1 Семантическая модель данных
Разработку модели начнем с выделения основных сущностей и связей между ними.
Прежде всего, существует сущность «Вид товара». Каждый вид товара имеет код, который является его ключом, и ряд атрибутов, которые взяты из описания предметной области. Каждый экземпляр сущности «Вид товара» соответствует не конкретному виду товара, а описанию некоторого вида товара, который поставляется в магазин. К каждому виду товара может относиться несколько товаров, это и есть конкретные товары, которые поставляют фирмы-поставщики. Для этого вводится сущность «Товар», которая будет содержать товары всех видов, поставляемых в магазин. Каждый товар имеет свой уникальный код, однозначно определяющий конкретный товар. Также каждый товар имеет свою стоимость.
Между сущностями «Вид товара» «Товар» существует связь (1:*), обязательная с двух сторон. Так как каждый вид товара включает в себя несколько товаров, поэтому используется связь (1:*). Каждый товар, описанный в сущности «Товар», относится к какому-либо виду товара. Это означает, что со стороны сущности «Товар» связь обязательная. Что касается сущности «Вид товара», то все виды товара всегда включают в себя хотя бы один товар, поэтому со стороны сущности «Вид товара» связь тоже обязательная.
Далее введем сущность «Страна изготовитель». Каждый товар изготавливается в определенной стране. Каждая страна имеет свой уникальный код, по которому можно однозначно идентифицировать, где был изготовлен товар. Также сущность «Страна изготовитель» включает атрибут «Название страны».
Из анализа предметной области известно, что каждая страна изготавливает не один, а несколько товаров. Для отражения этой ситуации проведем связь между сущностями «Страна изготовитель» и «Товар», чтобы узнать какая именно страна произвела конкретный товар. Между сущностями «Страна изготовитель» и «Товар» установлена связь (1:*), при этом она обязательна с обеих сторон, так как каждая описанная страна производит товары, и каждый товар был произведен хотя бы в одной из стран.
Магазин обязательно сотрудничает с поставщиками, поэтому введем сущность «Поставщик». Каждый поставщик имеет свой код, по которому можно точно определить нужного поставщика. Сущность «Поставщик» имеет также дополнительные атрибуты: «Имя поставщика», «Адрес», «Телефон». Поставщики осуществляют поставки в магазин. Для этого вводится сущность «Поставка», которая включает также такие атрибуты как «Дата поставки», «Количество поставленных единиц» и «Стоимость поставки».
Известно, что поставщик может осуществлять несколько поставок. Поэтому между сущностями «Поставщик» и «Поставка» устанавливается связь (1:*). Данная связь является обязательной как со стороны сущности «Поставщик», так и со стороны сущности «Поставка», ведь каждый поставщик поставляет товары в магазин, иначе магазину нет смысла сотрудничать с данной фирмой-поставщиком. Также каждая поставка обязательно должна осуществляться хотя бы одним поставщиком.
Так все товары попадают в магазин путем поставок. Для этого необходимо установить связь между сущностями «Товар» и «Поставка». Так как каждый товар поставляется несколько раз, то связь между данными сущностями устанавливается связь (1:*). При этом каждый товар включен в одну из поставок, поэтому связь со стороны сущности «Товар» обязательная. Что касается сущности «Поставка», то не имеет смысла осуществлять поставку без товара, поэтому и со стороны «Поставка» связь обязательная.
Семантическая модель предметной области «Поставка товаров в магазин косметики» представлена в приложении А.
2.2 Логическая модель данных
После того как исходная ERмодель предметной области приведена в соответствие с реляционной моделью на ее основе определяется схема отношений. Связь между двумя сущностями изображается с помощью механизма первичных и внешних ключей. Для этого сначала определим, какая из сущностей, участвующих в связи, является главной (родительской), а какая подчиненной (дочерней).
Родительской является сущность, которая передает копию своего первичного ключа в отношение, представляющее дочернюю сущность для использования в качестве внешнего ключа.
Между сущностями «Вид товара» и «Товар» существует связь (1:*). Так как степень участия в данной связи обязательная с обеих сторон, то в результате будут получены два отношения. В данном случае сущность «Вид товара» будет являться главной, так как находится на стороне связи «один», а сущность «Товар» - подчиненной, так как находится со стороны связи «многие». Значит главная сущность «Вид товара» передает копию своего первичного ключа, которым является атрибут «Код вида», в подчиненную сущность «Товар». Атрибут «Код вида» будет являться внешним ключом сущности «Товар».
Далее между сущностями «Страна изготовитель» и «Товар» установлена связь (1:*). Здесь степень участия также обязательная с обеих сторон. Сущность «Страна изготовитель» находится со стороны связи «один» и является главной, а сущность «Товар» находится со стороны связи «многие» и является подчиненной. Следовательно, сущность «Страна изготовитель» передает копию своего первичного ключа в сущность «Товар», где атрибут «Код страны» будет внешним ключом.