Базовый дизайн базы данных — необязательное участие

Работаю над базовым домашним заданием по проектированию баз данных и рисованием ERD в Visio и не могу понять эту проблему.

United Helpers — некоммерческая организация, которая оказывает помощь людям после стихийных бедствий. Основываясь на следующем кратком описании операций, создайте соответствующий полностью помеченный ERD Crow’s Foot.

• Отдельные лица добровольно посвящают свое время выполнению задач организации. Имя, адрес и номер телефона каждого волонтера отслеживаются. Каждому волонтеру может быть поручено несколько задач в то время, когда он или она выполняет волонтерскую работу, а для некоторых задач требуется много добровольцев. Волонтер может находиться в системе, еще не получив задание. Возможны задачи, которые никому не ставились. Когда волонтер получает задание, система должна отслеживать время начала и окончания этого задания.

• Для каждой задачи есть код задачи, описание задачи, тип задачи и статус задачи. Например, может быть задача с кодом задачи «101», описанием «ответить на звонок», типом «повторяющаяся» и статусом «выполняется». Может быть еще одна задача с кодом «102», описанием «подготовить 5000 упаковок основных медикаментов», типом «упаковки» и статусом «открыто».

• Для всех задач типа «упаковка» существует упаковочный лист, в котором указывается содержимое пакетов. Существует много различных упаковочных листов для производства различных упаковок, таких как базовые медицинские пакеты, пакеты для ухода за детьми, пакеты для продуктов питания и т. д. Каждый упаковочный лист имеет идентификационный номер упаковочного листа, имя упаковочного листа и описание упаковочного листа, которое описывает элементы, которые идеально подходят для изготовления такого типа упаковки. Каждая задача упаковки связана только с одним списком упаковки. Упаковочный лист может не быть связан ни с одной задачей или может быть связан со многими задачами. Задачи, которые не являются задачами упаковки, не связаны ни с одним списком упаковки.

• Задачи упаковки приводят к созданию пакетов. Каждый отдельный пакет расходных материалов, который производится организацией, отслеживается. Каждой упаковке присваивается идентификационный номер. Записывается дата создания посылки и общий вес посылки. Данный пакет связан только с одной задачей. Некоторые задачи (например, "отвечать на звонки") не будут создавать ни одной посылки, в то время как другие задачи (например, "подготовить 5000 посылок с основными медикаментами") будут связаны со многими посылками.

• В упаковочном листе указано идеальное содержимое каждой упаковки, но не всегда возможно указать идеальное количество каждого предмета. Следовательно, необходимо отслеживать фактические элементы, включенные в каждый пакет. Пакет может содержать много разных элементов, и данный элемент может использоваться во многих разных пакетах.

• Для каждого предмета, предоставляемого организацией, в системе хранится идентификационный номер предмета, описание предмета, стоимость предмета и количество предмета в наличии. Наряду с отслеживанием фактических предметов, помещенных в каждый пакет, также необходимо отслеживать количество каждого предмета, помещенного в пакет. Например, в упаковочном листе может быть указано, что основные медицинские пакеты должны включать 100 бинтов, 4 флакона йода и 4 флакона перекиси водорода. Однако из-за ограниченного запаса предметов в данный пакет могут входить только 10 бинтов, 1 флакон йода и никакой перекиси водорода. Тот факт, что этот пакет включает в себя перевязочные материалы и йод, необходимо зафиксировать вместе с количеством каждого из них. Организация может пожертвовать предметы, которые еще не были включены ни в один пакет, но каждый пакет будет содержать как минимум один элемент.

Я думал, что сущность VOLUNTEER и TASK создают составную сущность ASSIGNMENT, которая может генерировать задачу PACKING. Эта задача использует PACKING LIST и ITEMS, которые создают PACKAGE.

введите здесь описание изображения

Однако моя уверенность в этом решении равна нулю. Хотите знать, если это отдаленно правильно? Или я совершенно неправильно об этом говорю?

Спасибо


person HandsomeRob    schedule 02.10.2012    source источник


Ответы (3)


Вы делаете это правильно или, по крайней мере, движетесь в правильном направлении, но конечный результат неверен (хотя объекты в верхней строке вашей диаграммы более или менее правильны).

Обратите внимание на фразы "Для каждой задачи существует... тип задачи" и "Для всех задач типа "упаковка" существует упаковочный лист" . Это предполагает, что «задача по упаковке» — это тип задачи, а не тип задания.

person podiluska    schedule 03.10.2012
comment
Ваше здоровье. Можно как-нибудь уточнить, как сделать этот мост? Я так и подозревал, и пробовал все, что мог придумать... - person HandsomeRob; 03.10.2012
comment
Я бы предложил, чтобы PackingTask имел TaskID, а не Volunteer или AssignmentID. - person podiluska; 03.10.2012
comment
Я думаю, я понимаю, что вы говорите, вот так? ссылка - person HandsomeRob; 03.10.2012
comment
@HandsomeRob Лучше. Теперь посмотрим, чему могут принадлежать Items. :) - person podiluska; 03.10.2012

Прежде чем вы сможете осмысленно выполнить это домашнее задание, вы и ваш учитель должны прийти к единому мнению относительно того, выражает ли ERD анализ данных или проектирование базы данных. В предыдущих вопросах, касающихся ERD, я всегда высказывал мнение, что ERD предназначен для анализа данных, а проектирование базы данных должно быть выражено в какой-либо другой схеме построения диаграмм, такой как реляционная схематическая диаграмма.

Однако вполне возможно, что ваш учитель не видит этого так же, как я. Большое количество профессионалов используют ERD в качестве альтернативы реляционным схемам и экспресс-проектированию базы данных в ERD. Ваше решение мне кажется дизайном, а не анализом.

Если ваш учитель не различает анализ и проектирование (а некоторые этого не делают), есть что-то фундаментальное, что вам нужно изучить, и чему ваш учитель не сможет вас научить. Нужно различать особенности проблемы и особенности предлагаемого решения проблемы. Если вы не сделаете этого различия, вы попадете в одну из нескольких ловушек.

Самая распространенная ошибка — найти правильное решение неправильной проблемы. Я видел, как это происходило снова и снова в полевых условиях.

Второй наиболее распространенной ошибкой является изменение определения проблемы, чтобы облегчить ее решение. Иногда это делается намеренно, чтобы уложиться в срок при ограниченных ресурсах. Но когда это делается непреднамеренно, возникает множество проблем.

Третья ловушка — это то, что можно назвать «нестандартным мышлением». В этой ловушке будущий решатель добавляет ограничение, которого не было в исходном определении задачи, но которое является особенностью первого ошибочного решения. «Коробка» — это признак предлагаемого (ошибочного) решения, а не признак проблемы, как было заявлено изначально. Но как только это принимается как часть проблемы, проблема становится неразрешимой.

person Walter Mitty    schedule 03.10.2012
comment
Спасибо, что нашли время написать все это. Курс посвящен базовому проектированию баз данных, и мы изучаем объектно-ориентированные модели ERD, диаграммы классов UML и т. д. Однако у меня было всего 10 часов обучения, я просто охватывал основы, такие как «это таблица», поэтому мое понимание довольно ограниченное. При изучении этого типа вещей это обычно кажется иностранным языком, пока у меня не возникает прозрение, когда все становится на свои места. Я изо всех сил пытаюсь найти это на данный момент. Я думаю, что понимаю, что вы пытаетесь сказать, но не имеете опыта, чтобы применить это на практике? - person HandsomeRob; 03.10.2012
comment
Вы понимаете разницу между анализом и дизайном? - person Walter Mitty; 05.10.2012
comment
Вы понимаете разницу между таблицей и сущностью? - person Walter Mitty; 05.10.2012
comment
Вы понимаете роль, которую АТРИБУТ играет в реляционном моделировании? В моделировании ER? В объектно-ориентированном моделировании? - person Walter Mitty; 05.10.2012
comment
У вас есть опыт программирования? - person Walter Mitty; 05.10.2012

я думаю должно быть так

Есть только пять таблиц. Указано, что задача упаковки - это таблица задач.

person Community    schedule 12.09.2013