Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Правильно ли спроектирована БД 
:(
    Опции темы
rudolfninja
Дата 21.4.2016, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

Репутация: нет
Всего: 6



Ребята, приветствую.
Составил БД, вроде как вполне все структурированно, но мне "знающие" люди говорят, что БД составлена неправильно. Я, если честно, сомневаюсь в том, что эти люди действительно знающие, а сам я далек от проектирования БД. Поэтому прошу вас проверить нормально (корректно) ли составлена БД. Требования, предъявляемые к БД:
- Соответствие структуры базы данных требованиям третьей нормальной формы;
- целостность и непротиворечивость базы данных;
Замечания, которые мне сделали:
- есть дублирование данных
- нет целостности данных
- неправильные связи (нельзя связывать не ключевые поля между собой)
К сожалению, более конкретного ничего нет.
В аттаче архив с БД спроектированной в MS Access.
По сути БД представляет собой учет транспортных средств на предприятии. У меня есть 8 таблиц: 
1) Производители авто. По сути, просто список производителей (таблица factories).
2) Соответствие моделей авто производителям (models).
3) Список авто, зарегистрированных на предприятии (vehicles).
4) Срок действия документов (техосмотр, страховка) на эти авто (documents).
5) Список водителей, зарегистрированных на предприятии (drivers).
6) Учет ДТП с конкретным авто. В таблице указывается дата, номер авто и водитель. Водитель указывается только в том случае, если ДТП произошло по вине водителя, работающего на предприятии (RTA).
7)  Дата ремонта конкретного авто (repairs).
8) Прочие затраты на авто (expenses).

Очень прошу знающих и понимающих, проверьте, пожалуйста, БД на соответствование требованиям.

Большое спасибо.

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  veh_acc.rar 30,37 Kb
PM MAIL Skype   Вверх
Zloxa
Дата 22.4.2016, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3470
Регистрация: 12.9.2008

Репутация: 11
Всего: 161



Цитата(rudolfninja @  22.4.2016,  00:13 Найти цитируемый пост)
Очень прошу знающих и понимающих, проверьте, пожалуйста, БД на соответствование требованиям.

Лучше всех требования знает и понимает Ваш преподаватель. Обратитесь к нему с этим вопросом. Это его работа - проверять решения студентов на соответствие выставленным им требованиям. smile


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akina
Дата 22.4.2016, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 453



Совершенно непонятна ВАША интерпретация предметной области. Где анализ? нету... оттого и схему пришлось не на основе анализа составлять, а из пальца высасывать - результат очевиден.

Добавлено через 1 минуту и 19 секунд
 smile 
Цитата(rudolfninja @  22.4.2016,  00:13 Найти цитируемый пост)
"знающие" люди говорят, что БД составлена неправильно

Это они ещё Вас си-и-ильно жалеют...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
rudolfninja
Дата 22.4.2016, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

Репутация: нет
Всего: 6



Цитата(Zloxa @  22.4.2016,  09:37 Найти цитируемый пост)
Лучше всех требования знает и понимает Ваш преподаватель. Обратитесь к нему с этим вопросом. Это его работа - проверять решения студентов на соответствие выставленным им требованиям.

Я, к сожалению, уже 2 года как не студент, поэтому у меня нет на примете преподавателя, к которому бы я мог обратиться.

Akina, не могли бы вы подробнее объяснить что должен представлять собой этот анализ? 
PM MAIL Skype   Вверх
Akina
Дата 22.4.2016, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 453



Цитата(rudolfninja @  22.4.2016,  11:01 Найти цитируемый пост)
что должен представлять собой этот анализ?  

RTFM "Проектирование баз данных". Начать можно с Вики.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 22.4.2016, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3470
Регистрация: 12.9.2008

Репутация: 11
Всего: 161



rudolfninja, анализ это процесс, в результате которого формулируются формальные требования.

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

Однако это далеко не так. В первую очередь следует задаться вопросом - какие цели вы преследуете реализуя эту бд? Учет лишь ради учета? Чтоб побольше людей делали побольше бестолковой работы? 

Как правило основная цель любого учета - отчет. Под отчетом я подразумеваю не только печатные формы, это могут быть и выгрузки в сторонние системы, это могут быть исходные данные для каких-то процессов автоматизации. Определив список необходимых отчетов - мы тем самым 1) определим что какие данные нам нужны 2) ограничим множество вариантов того что можно сделать множеством того, что нужно сделать.

После того, как будут определены цели, уже можно определить ценность и стоимость этого решения. 

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

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

Полагаю очевидным, что после определения ценности и сопоставления ее со стоимостью, могут быть откорректированы цели. Вплоть до их аннулирования.

Если таки принято решение о собственной разработке, то
1) На этом этапе мы уже имеем понимание -  какие нам нужны отчеты
2) На этом этапе мы уже имеем понимание - откуда к нам будут поступать какие данные.
3) На этом этапе мы имеем представление как мы из исходных данных будем получать результат

Будучи формализованными эти два пункта являют собой результат анализа и, как правило, именно  они называются требованям. Имея на руках результат анализа, можно уже размышлять о том, как это будет сделано. Каким лучше способом осуществлять контроль целостности и не противоречивости, не будет ли у нас потребности в избыточности, не пагубно ли для нас представление 3-НФ

Добавлено через 2 минуты и 42 секунды
Цитата(rudolfninja @  22.4.2016,  11:01 Найти цитируемый пост)
 уже 2 года как не студент

Вас отчислили? Или современным дипломным работам не предъявляются требования проведения работ по анализу предметной области и экономическому обоснованию?


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
rudolfninja
Дата 22.4.2016, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

Репутация: нет
Всего: 6



Я прочитал википедию, еще пару статей в интернете и решил, что нужны следующие таблицы:
1)
Код

ТАБЛИЦА Производители
 ПЕРВИЧНЫЙ КЛЮЧ (Название_завода_производителя)
   ПОЛЯ (Код_производителя, Название_завода_производителя)

Непонятно зачем в этой таблице Код_производителя, если ключем является название, но, вроде как, это поле все равно будет создано автоматически.
2)
Код

ТАБЛИЦА Модели_авто
 ПЕРВИЧНЫЙ КЛЮЧ (Код_модели)
  ВНЕШНИЙ КЛЮЧ (Название_завода_производителя из табл.1)
   ПОЛЯ (Код_модели, Название_завода_производителя, Название_марки_авто)

3)
Код

ТАБЛИЦА ТС
 ПЕРВИЧНЫЙ КЛЮЧ (Регистрационный_номер_ТС)
  ВНЕШНИЙ КЛЮЧ (Название_завода_производителя из табл.1)
  ВНЕШНИЙ КЛЮЧ (Название_марки_авто из табл.2)
   ПОЛЯ (Регистрационный_номер_ТС, Название_завода_производителя, Название_марки_авто, Год_выпуска, Цвет)

Вот тут есть небольшой вопрос. Дело в том, что Название_марки_авто зависит от выбранного названия_завода_производителя. Насколько корректно так делать? 
Год выпуска не может быть меньше 1985 и больше текущего.
4) 
Код

ТАБЛИЦА Документы_ТС
 ПЕРВИЧНЫЙ КЛЮЧ ()
  ВНЕШНИЙ КЛЮЧ (Регистрационный_номер_ТС из табл.3)
   ПОЛЯ (Регистрационный_номер_ТС, Дата_окончания_страховки, Дата_окончания_сертефиката_ТО)

Я не очень представляю что сделать первичным ключем, т.к. по сути, эта таблица является продолжением таблицы 3 и, наверное, их даже можно совместить. Подскажите, как лучше быть в этом соучае, совместить их или все же оставить отдельной таблицей?
5)
Код

ТАБЛИЦА Водители
 ПЕРВИЧНЫЙ КЛЮЧ(ФИО_водитеоя)
   ПОЛЯ (ФИО_водителя, Дата_рождения, Срок_действия_медсправки, Стаж_вождения)

Водителю должно быть больше 18, но меньше 63.
Но возможна ситуация, что ФИО будут полностью совпадать, тогда использование ФИО в качестве ключа - не вариант. В этом случае лучше использовать Код_водителя, но код водителя малоинформативен, например при просмотре таблицы 6. Подскажите, как все же поступить в этой ситуации.
6)
Код

ТАБЛИЦА ДТП
 ПЕРВИЧНЫЙ КЛЮЧ (Код_ДТП)
  ВНЕШНИЙ КЛЮЧ (Регистрационный_номер_ТС из табл.3)
  ВНЕШНИЙ КЛЮЧ (ФИО_водителя из табл.5)
   ПОЛЯ (Регистрационный_номер_ТС, Дата_ДТП, ФИО_водителя)

ФИО_водителя может быть пустым. Заполняется только в том случа, если виновником ДТП является водитель, работающий на предприятии.
7)
Код

ТАБЛИЦА Ремонт_ТС
 ПЕРВИЧНЫЙ КЛЮЧ (Код_ремонта)
  ВНЕШНИЙ КЛЮЧ (Регистрационный_номер_ТС из табл.3)
   ПОЛЯ (Код_ремонта, Регистрационный_номер_ТС, Дата_ремонта, Проделанная_работа, Сумма)

Дата_ремонта не позднее чем сегодняшняя дата.
8) 
Код

ТАБЛИЦА Прочие_затраты
 ПЕРВИЧНЫЙ КЛЮЧ (Код_затрат)
  ВНЕШНИЙ КЛЮЧ (Регистрационный_номер_ТС из табл.3)
   ПОЛЯ (Код_затрат, Регистрационный_номер_ТС, Дата_затрат, Статьи_затрат, Сумма)

Дата_затрат не позднее чем сегодняшняя дата.

Вот так все у меня получилось. Прокомментируйте, пожалуйста.

Добавлено @ 11:53
Zloxa, спасибо за пояснения. 
Основные цели - это мониторинг срока окончания дейтсвия ТО на ТС; страхового полиса; количества ДТП за определенный период по вине водителей, работающих на предприятии; срока действия мед. справки водителя; даты выхода водиетлей на пенсию. 
Вроде все.
 
Цитата(Zloxa @  22.4.2016,  11:36 Найти цитируемый пост)
Вас отчислили? Или современным дипломным работам не предъявляются требования проведения работ по анализу предметной области и экономическому обоснованию? 

Нет, я успешно получил и защитил диплом. Но мой диплом был совсем не в этой области (разработка эмулятора микропроцессорной системы на базе Intel 8086), однако все это было выполнено в рамках работы над дипломным проектом.

Это сообщение отредактировал(а) rudolfninja - 22.4.2016, 11:54
PM MAIL Skype   Вверх
Akina
Дата 22.4.2016, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 453



Цитата(rudolfninja @  22.4.2016,  12:46 Найти цитируемый пост)
Я прочитал википедию, еще пару статей в интернете и решил

Извините, но, прочитав, Вы ни хрена не поняли. В частности, того, что до раздумия над потребными таблицами Вам ещё пахать и пахать...

Выделите сущности, которые подлежат учёту. Впрочем, их в первом приближении (но не факт, что полно) несложно выделить по Вашему куцему описанию - это будут люди , автомобили, документы и события. Затем определите атрибуты каждой выделенной сущности. Определите процессы, влияющие на экземпляры сущностей. Не исключено, что при этом придётся принять решение о разделении сущностей (например, разделение документов на документы на машину и документы на событие). На основании всей этой чехарды составьте ER-диаграмму (карандаш, ластик и куча чистой бумаги)... снова откорректируйте своё видение... и только когда диаграмма примет законченный вид, можно включать компьютер и начинать думать о таблицах.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
rudolfninja
Дата 22.4.2016, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

Репутация: нет
Всего: 6



Akina, спасибо, я вас понял.
PM MAIL Skype   Вверх
rudolfninja
Дата 22.4.2016, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

Репутация: нет
Всего: 6



На основе информации, приведенной тут и того, что предлоижл Akina получилось вот что:
Сущности: водители, авто, документы, события.
Аттрибуты: водители (ФИО, дата рождения, стаж)
                  авто (номер, марка, модель, год выпуска, цевт)
                  документы (название документы, срок действия)
                  события (тип события, дата события, комментарии, затраты)
Дальше идут связи:
1) ВОДИТЕЛИ - ИМЕЮТ - ДОКУМЕНТЫ
Поскольку один водитель может иметь только одну медсправку, то связь 1:1
2) АВТО - ИМЕЕТ - ДОКУМЕНТЫ 
Поскольку на одну машину приходится два документа (страховка, сретификат ТО), то связь 1:2
3) АВТО - ПРОИСХОДИТ - СОБЫТИЕ
Поскольку с одним авто может произойти множество событий, то связь 1:N

Прокоментируйте, пожалуйста, результаты моего анализа предметной области.
PM MAIL Skype   Вверх
Zloxa
Дата 22.4.2016, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3470
Регистрация: 12.9.2008

Репутация: 11
Всего: 161



Цитата(rudolfninja @  22.4.2016,  13:56 Найти цитируемый пост)
1) ВОДИТЕЛИ - ИМЕЮТ - ДОКУМЕНТЫ
Поскольку один водитель может иметь только одну медсправку, то связь 1:1

У вас документы имеют срок действия. Получение новой справки не отменяет действия старой. Значит водитель может иметь более одной справки.
Цитата(rudolfninja @  22.4.2016,  12:46 Найти цитируемый пост)
Основные цели - это мониторинг срока окончания дейтсвия ТО на ТС; страхового полиса; количества ДТП за определенный период по вине водителей, работающих на предприятии; срока действия мед. справки водителя; даты выхода водиетлей на пенсию. 
Вроде все.

1) Чем вас не устраивает плоский эксель файл о двух страницах?
2) Производится ли в инфраструктуре вашего предприятия кадровый учет, учет основных средств?


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
rudolfninja
Дата 22.4.2016, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

Репутация: нет
Всего: 6



Цитата(Zloxa @  22.4.2016,  13:17 Найти цитируемый пост)
У вас документы имеют срок действия. Получение новой справки не отменяет действия старой. Значит водитель может иметь более одной справки

В этом нет особого смысла. Если водитель получит новую справку, это равносильно продлению срока действия текущей.
1) Тем что это все будет использоваться в C++ приложении, а там намного проще использовать БД.
2) Да, но этот вопрос не связан с разрабатываемой задачей.
Больше интересуют ваши коментарии к составленной модели, но если эти вопросы как-то влияют на дальнейшее построение модели БД, то можно обсудить.
PM MAIL Skype   Вверх
Zloxa
Дата 22.4.2016, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3470
Регистрация: 12.9.2008

Репутация: 11
Всего: 161



Цитата(rudolfninja @  22.4.2016,  15:20 Найти цитируемый пост)
Больше интересуют ваши коментарии к составленной модели

Окай. Ваша модель не нужна.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
rudolfninja
Дата 22.4.2016, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

Репутация: нет
Всего: 6



Цитата(Zloxa @  22.4.2016,  14:27 Найти цитируемый пост)
Окай. Ваша модель не нужна. 

Не, она нужна. Я имел в виду комментарии касательно ее корректности.
PM MAIL Skype   Вверх
Akina
Дата 22.4.2016, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 453



Цитата(rudolfninja @  22.4.2016,  15:20 Найти цитируемый пост)
Если водитель получит новую справку, это равносильно продлению срока действия текущей.

А то, что её номер изменится - это пофиг? тогда получается, тебе сведения о справке вообще не нужны, тупо храни в одном поле срок окончания её действия, и достаточно. И с диагностической картой то же самое...

Добавлено через 1 минуту и 4 секунды
Цитата(rudolfninja @  22.4.2016,  15:29 Найти цитируемый пост)
комментарии касательно ее корректности. 

Адекватна в части используемых терминов. В остальном - нет.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1732 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.