Разработка базы данных "Служащие фирмы"
Знакомство с основными сведениями о работниках, у которых в текущем году наступает пенсионный возраст. Анализ базы данных "Служащие фирмы". Основные особенности установки соответствия между русскими словами в схеме логической модели и английскими словами.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 24.12.2011 |
Размер файла | 1,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
Как и утверждалось во всех источниках, проектирование БД -- самая «размытая» деятельность среди прочих, имеющих место при проектировании КИС, и подчас трудно из разных вариантов организации структуры выбрать предпочтительный. В таких случаях обычно прикидывают варианты использования (как сидит оператор, и насколько ему очевидно, что к чему), а также направления будущего развития КИС. Первое я могу сделать, а, что касается второго, это задача аналитика. Я в области управления кадрами не эксперт, а, значит, на роль аналитика не претендую. Всё, за что отвечает аналитик, уже должно было быть в задании. Полного (стремящегося, хотя бы) списка запросов нет, его только додумывать. И если что, я не виноват.
Впрочем, в производство эта работа всё равно не пойдёт, так что последствия лишь гипотетические.
Задание: Разработать базу данных «Служащие фирмы»
Сведения:
Код работника,
Фамилия, имя, отчество,
Фото,
Дата рождения,
Пол,
Домашний адрес,
Семейное положение,
Сведения о ближайших родственниках,
Служебный и домашний телефоны,
Должность,
Подразделение,
Дата поступления на работу,
Служебные перемещения,
Образование, специальность, год окончания учебного заведения,
Ученая степень,
Почетные звания,
Заработная плата (по месяцам текущего года),
Дополнительные сведения (характеристика и др.)
Запросы:
Вывод сведений о работниках определенной должности (код, ФИО, подразделение, рабочий телефон),
Вывод сведений о работниках (ФИО, должность, подразделение), стаж работы которых на фирме не менее … лет,
Вывод сведений о заработной плате работника … за последний месяц, последний квартал,
Вывод сведений о семейном положении работника …
Вывод данных о работниках, имеющих ученую степень и возраст не более … лет.
Отчет: Вывод сведений о работниках, у которых в текущем году наступает пенсионный возраст
Комментарии: Не очевидно, что значит «Заработная плата (по месяцам текущего года)». Что значит, текущего? А за прошлые года выбрасывать, что ли? Нет, ну в принципе-то можно, тем или иным способом установить таймер, чтоб выкидывал лишнюю информацию, когда приходит время. Но в этом случае запрос «Вывод сведений о заработной плате работника … за последний месяц, последний квартал» будет невозможен в первые месяцы нового года. Если ближе к действительности, то данные из базы удаляются обычно только тогда, когда они были добавлены по ошибке. И удаляются незадолго после добавления. Либо, если нет места хранить всё, но современные ЖД не каждая организация доводит до исчерпания, и по-хорошему вместо удаления используется какая-нибудь галочка (логическая колонка в таблице) «сейчас не работает», «сейчас не существует», и т. п. Так что зарплата будет храниться за все месяцы, и удалением этих сведений я не буду заниматься.
Некоторые решения, возможно, не такие, какие подсказывает теория, но ближе к практике. Например, я вот вижу, что у сведений о работнике и сведений о родственниках некоторая общая структура. Ф. И. О., дата рождения. Я, вроде бы как должен вынести людей в отдельную таблицу. Должен, но не обязан. Я думаю, с этой дополнительной таблицей операторам только лишние заморочки будут. Если отец уже работает в фирме, тогда при добавлении сына/дочери нужно искать отца из списка работников. А если не работает, то добавлять нового человека. Добавление родственников можно автоматизировать, на форме добавления сотрудника поставить галочки «добавить отца в БД», «добавить мать в БД» и тут же под ними поля для ввода информации о них. Но в этом случае, что-то мне подсказывает, операторы будут создавать новые сущности «человек», даже, если они уже есть в БД. Так что людей я решил сделать (составным) доменом. Домены, определённые пользователем, поддерживает не каждая БД. MS SQL Server, по всей видимости, поддерживает, но проект на MS JET, так что логическому домену соответствуют физические однородные группы колонок.
Примерная схема базы данных такова:
Рис.
Людей, как я уже указывал, я буду реализовывать доменами. ERwin вроде бы как позволяет объявлять собственные домены, но как указать содержимое этих доменов -- ? Этот и некоторые другие вопросы касательно ERwin остались нерешёнными. Впрочем, это не принципиально.
На данной схеме можно видеть несколько «перечисляемых» доменов. «Перечисляемых» в кавычках, потому что я не припомню такого термина в теоретических источниках. Называются так по аналогии с перечисляемыми типами в языках программирования. Это, например, Тип образования, Тип почётного звания, Типы учёных степеней, Подразделения и Должности. Последние два, правда, более материальны, нежели «Типы». Что касается Типов, то они могли бы быть доменами, если бы их можно было все предусмотреть. Например, домен Пол едва ли претерпит какие-либо изменения со временем, чего не скажешь про учёные степени. Мало ли, какие реформы грядут. Специальность (Образование) решил не выделять. Наверное, не надо.
Что касается образований, то их вполне может быть несколько, так что именно так я решил их и сделать. Ближе к правде.
Вот с историей служебных перемещений поинтереснее будет. Ну с прошлыми позициями понятно, их можно хранить в цепочке ЗДЗП. А текущую позицию где хранить? Варианты есть такие:
· Хранить в ЗДЗП историю всех служебных перемещений, в том числе и текущую позицию. В строке таблицы, соответствующей текущей должности, дата окончания должна быть установлена на какую-нибудь далёкую дату в будущем, в зависимости от БД. Впрочем, это уже детали реализации (т. е. физическая модель). В логической модели дата окончания должна, наверное, хранить NULL. В разных источниках процесс проектирования БД описывается поэтапно. Мне кажется (имел бы больше опыта, утверждал бы увереннее), это так же далеко от практики, как предположение, что программы рождаются в сознании разработчика строчка за строчкой. Я думаю так, как мне удобнее. Мне удобнее думать параллельно на нескольких уровнях, просматривая, как это в конечном счёте будет выглядеть на каждом этапе.
· Хранить в ЗДЗП все перемещения, а в таблице Работник дополнительно ссылаться на суррогатный ключ текущей позиции (Код ЗДЗП). Существенный факт присутствует в более, чем одном месте. И ничего взамен.
· Но если в таблице Работник хранить не ссылку на текущую позицию, а собственно информацию о текущей позиции: подразделение, должность. Хранить ли дату начала работ в текущей служебной позиции? На подобные вопросы должен отвечать перечень возможных запросов. Запрос на суммарный стаж я вижу, а вот, чтобы была выборка по сотрудникам, сколько они работают на текущем месте, такого нет. Но, впрочем, дату я всё же включил бы. Исходя из принципа наименьшего сюрприза.
· Для полноты можно добавить ещё один вариант: в ЗДЗП хранить все прошлые позиции, а информацию о текущей -- в таблице Работник. Существенные факты в двух местах не присутствуют, но преимущество сомнительно. Или нет? В принципе, можно накатать представление(View), которое присоединяло бы(UNION) запись о текущей позиции к записям о прошлых позициях. Мудрёно как-то.
Решил остановиться на первом варианте. Предпоследний, в принципе, неплох, но в среде Access время на реализацию предпоследнего существенно больше.
Надо полагать, в теории темпоральных баз данных есть однозначные решения подобных проблем. Но ТБД я не увлекался. У баз данных есть такая проблема, что для них нужны данные, тем более для темпоральных. А данные взять как-то неоткуда, их только на предприятиях много.
Рис.
Вроде всё гладко. Я проблем здесь не вижу. Можно воплощать.
Начну с того, что установлю соответствие между русским словами в схеме логической модели и английскими словами, которые будут образовывать названия элементов физической базы данных. Не знаю, кто придумал называть элементы БД по-русски. Рано или поздно это может привести к весёлым проблемам. Уж лучше транслитом в латинице, если с английским не лады.
· работник, сотрудник, служащий -- employee
· фамилия -- last name
· имя -- first name
· отчество -- patronymic
· дата рождения -- birthday
· пол -- gender
· тип -- kind
· семейное положение -- marital status
· почётное звание -- honorary title
· должность -- employment
· подразделелние -- department
· служебная позиция (комбинация должности и подразделения) -- position (of employment)
· образование -- education
· человек -- person
· супруг -- spouse
· учёная степень -- scientific degree
· специальность -- speciality
Схема физической модели, таким образом:
база данные логическая модель
Рис.
Используемая литература
1.Локальная версия INTUIT.ru, курс «Основы проектирования реляционных баз данных»
2.К. Кейт «Руководство по реляционной СУБД DB2»
3.ISBN 5--279--00063--9
4.http://www.isve.ru/text/51
Размещено на Allbest.ru
Подобные документы
Понятие базы данных, ее виды. Иерархическая, сетевая, реляционная модели данных. Создание автоматизированной системы "Учет зарплаты строительной фирмы". Анализ требований и выбор решений. Этапы создания базы данных. Источники финансирования проекта.
дипломная работа [1,4 M], добавлен 11.06.2013Системный анализ и анализ требований к базе данных. Концептуальная и инфологическая модель предметной области. Типы атрибутов в логической модели базы. Физическая модель проектируемой базы данных в методологии IDEF1X. Требования к пользователям системы.
курсовая работа [2,3 M], добавлен 21.11.2013Разработка базы данных фирмы, представляющей в прокат автомобили; спецификация требований. Создание инфологической модели предметной области. Определение сущности, ее атрибутов и связей между ними; структура таблиц. Реализация базы данных в MS SQL Server.
курсовая работа [1021,2 K], добавлен 10.04.2015Базы данных - важнейшая составная часть информационных систем. Проектирование базы данных на примере предметной области "Оргтехника". Сбор информации о предметной области. Построение информационно-логической модели данных. Разработка логической структуры.
курсовая работа [318,6 K], добавлен 24.12.2014Проектирование базы данных фирмы по предоставлению телекоммуникационных услуг с помощью СУБД MS SQL SERVER. Построение логической и физической модели данных. Описание информационных потребностей пользователя. Создание хранимых процедур и триггеров.
курсовая работа [2,3 M], добавлен 21.03.2015Проектирование логической структуры базы данных методом нормальных форм, сущность связь. Сравнительный анализ спроектированной базы данных и базы данных существующих информационных систем. Выбор и обоснование состава технических и программных средств.
курсовая работа [3,0 M], добавлен 22.12.2014Понятие реляционной модели данных, целостность ее сущности и ссылок. Основные этапы создания базы данных, связывание таблиц на схеме данных. Проектирование базы данных книжного каталога "Books" с помощью СУБД Microsoft Access и языка запросов SQL.
курсовая работа [838,9 K], добавлен 25.11.2010История создания предприятия и анализ его деятельности. Основные понятия торговли. Этапы разработки модели данных, построение информационно-логической модели. Разработка базы данных для учета товародвижения и документооборота на предприятии в ACCESS.
дипломная работа [1006,2 K], добавлен 14.01.2012Процесс разработки Web-сайта. Состав и содержание работ по созданию подсистемы. Требования к Web-сайту. Определение сущностей модели базы данных. Разработка логической модели базы данных. Реализация PHP-скриптов и заполнение базы данных Web-сайта.
дипломная работа [8,2 M], добавлен 29.06.2011Описание предметной области разрабатываемой базы данных для теннисного клуба. Обоснование выбора CASE-средства Erwin 8 и MS Access для проектирования базы данных. Построение инфологической модели и логической структуры базы данных, разработка интерфейса.
курсовая работа [3,8 M], добавлен 02.02.2014