Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
10
Добавлен:
03.03.2016
Размер:
164.75 Кб
Скачать

7 ПРИКЛАДИ РОЗРОБКИ МОДЕЛЕЙ ДАНИХ

7.1 Модель даних для закладу харчування

Розглянемо кілька прикладів розробки ІЛМ для різних ПО.

МД “Пансіон” [5] може бути використана в ІС закладу суспільного харчування.

Удодатку А на рис. А.1а наведена ІЛМ “Пансіон” у вигляді ER-діаграми “Сутності - звязки” на мові оригіналу.

Умоделі застосовані атрибути Блюдо, Продукт і Постачальник як найменування, а БЛ, ПР і ПОС – як цифрові коди блюд, продуктів і організаційпостачальників.

На рис. А.1б наведена ІЛМ “Пансіон” у вигляді діаграми “Таблиці - звязки” на мові оригіналу.

На рис. А.1в наведено опис ІЛМ “Пансіон” на МІМ.

Для прикладу реєстрації проектних рішень у додатку А наведено частину опису таблиць для МД “Пансіон”.

Уприкладі наведені вимоги на відсутність значень Null для полів. Зауважимо, що треба розрізняти два типи порожніх значень: значення Null (невизначеність) та пусті рядки.

7.2 Модель даних для бібліотеки

МД “Бібліотека” [5] може бути використана для ІС обліку видань, що зберігаються в бібліотеці, та відомостей про читачів.

Удодатку В на рис. В.1 наведена ІЛМ “Бібліотека” у вигляді ER-діаграми “Таблиці - звязки” на мові оригіналу.

Це дуже повна модель. В ній відображені навіть вид і характер видання, редактори, художники, перекладачі.

Удодатку Б також наведені частина ІЛМ на МІМ та опис частини проектних рішень для МД.

7.3 Модель даних для обліку заробітної плати

Розглянемо більш детально процедуру розробки РБД на прикладі. Постановка задачі передбачає розробку БД для обліку щомісячної

заробітної плати (зарплати) працівників підприємства. БД повинна містити наступні дані: ПІБ працівника, його ідентифікаційний код, дати прийняття та звільнення, стаж роботи на підприємстві, оклад, ставка, відсоток премії, сума нарахованої зарплати по кожному робочому місцю, загальна сума нарахованої зарплати за звітний місяць.

В основному ця задача вирішується для відділу кадрів та бухгалтерії.

У відділі кадрів ведеться облік працівників із зазначенням основних анкетних даних: прізвище, ім’я, по-батькові працівника, його ідентифікаційний код, стать, дата народження, вік, адреса, фотографія, резюме, дати прийняття та звільнення, стаж роботи на підприємстві, список призначень працівника на

63

робочі місця за весь термін роботи з зазначенням дати призначення, підрозділу, посади, окладу, ставки, номеру та дати наказу.

У відділі кадрів ведеться табельний облік використання робочого часу. Типові форми первинних документів для обліку кадрів і табельного

обліку встановлюються державними органами. До них відносяться особисті картки працівників, накази про прийом на роботу, звільнення, накази про надання відпустки, табелі обліку використання робочого часу і розрахунку заробітної плати

У бухгалтерії підприємства щомісячно ведеться розрахунок зарплати по кожному працівнику, формуються відомість такого розрахунку по підприємству та табуляграми для кожного працівника. Бухгалерія також готує статистичний звіт про фонд оплати праці за різні звітні періоди (місяць, квартал, півріччя, рік). Форми вихідних документів встановлюються державними органами. Ці звіти використовуються для нарахування єдиного соціального податку та аналізу фінансової діяльності підприємства.

Будемо вважати, що на підприємстві прийнята погодинно-преміальна системи оплати праці: працівнику за роботу на визначеному робочому місці щомісячно нараховується зарплата, яка складається з окладу та премії. Розмір премії залежить від результатів роботи конкретного працівника і підприємства в цілому. Будемо вважати, що премія може бути в межах від 0 до 100% від нарахованої суми за окладом.

Для спрощення при вирішенні задачі будемо розглядати тільки розрахунок сум, що нараховані. Відрахування з зарплати (прибутковий податок, внески до Пенсійного фонду, збори на соціальне страхування, тощо) не будемо розглядати.

Таким чином, відомості про зарплату включають наступні дані: оклад, ставка, % премії, розмір премії, сума, що нарахована.

Розглянемо процес ІЛМ для задачі.

За основу при проектуванні БД можна взяти основний вихідний документ

– відомість розрахунку зарплати за місяць. Її загальний вид наведено в табл. 7.1.

Для наочності до відомості внесені умовні значення реквізитів. При цьому враховано, що на підприємстві кожному працівнику дається табельний номер. Якщо працівник працює за основним місцем роботи та за сумісництвом на іншому робочому місці, то він має два різних табельних номери.

Зауважимо, що робоче місце на підприємстві визначається трьома полями: підрозділ, посада, оклад.

Для спрощення будемо спочатку вважати, що зарплата не залежить від кількості годин, які відпрацювала людина. Будемо умовно вважати, що ця кількість врахована при призначенні премії.

На базі відомості створимо УТ. Ії вид наведено в табл. 7.2.

Проведемо нормалізацію УТ. Для наочності цього процесу розвернемо поля УТ вертикально. При цьому крім полів, що вказані в відомості, включимо до УТ ті поля, які мають зберігатися в БД у відповідності з постановкою задачі. Результат показано на рис. 7.3.

64

 

Таблиця 7.1

Вид відомості

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Відомість розрахунку заробітної плати по підприємству _____________

 

 

 

 

 

 

 

 

 

 

 

 

 

 

за 9 місяць 2010 року

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Працівник

 

 

 

 

 

Місце роботи

 

 

 

 

 

 

Заробітна плата

 

 

 

 

Таб.№

 

Прізвище

Ім’я

 

По-батькові

Посада

 

Оклад

Ставка

 

Нараховано

%

 

Премія

Нараховано

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.за окладом

 

премії

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Підрозділ: Управління

 

 

 

 

 

 

 

 

 

 

 

 

1

 

Іванов

Іван

 

Іванович

директор

 

2000

 

1

 

 

2000

100

2000

 

4000

 

 

5

 

Іванов

Іван

 

Іванович

заст.директора

 

1500

 

1

 

 

1500

100

1500

 

3000

 

 

Всього по управлінню

 

 

 

 

 

 

 

3500

 

2

 

 

3500

 

 

3500

 

7000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Підрозділ: Відділ продаж

 

 

 

 

 

 

 

 

 

 

 

 

100

 

Андрєєв

Андрій

Андрійович

менеджер

 

1000

 

1

 

 

1000

100

1000

 

2000

 

 

200

 

Андрєєв

Андрій

Андрійович

менеджер

 

1000

 

1

 

 

1000

100

1000

 

2000

 

 

300

 

Іванов

Іван

 

Іванович

менеджер

 

800

 

1

 

 

800

50

400

 

1200

 

 

 

 

. . . . . . . .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. . . . . . .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Всього по відділу продаж

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Всього по підприємству за 2 місяць 2010 року

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Всього по підприємству за 1 квартал 2010 року

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Всього по підприємству за 2010 рік

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблиця 7.2 Універсальна таблиця ”Зарплата працівників”

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таб.№

 

Прізвище

Ім’я

 

По-

Підрозділ

 

Посада

 

 

Оклад

 

Рік

Місяць

 

Ставка

 

Нарах.за

%

Премія

Нараховано

 

 

 

 

 

батькові

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

окладом

премії

 

 

 

1

 

Іванов

Іван

 

Іванович

Управління

 

Директор

 

2000

 

2010

9

 

1

 

2000

100

2000

4000

5

 

Іванов

Іван

 

Іванович

Управління

 

Заст.директора

 

1500

 

2010

9

 

1

 

1500

100

1500

3000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

65

 

 

 

 

 

 

 

 

 

 

 

 

 

УТ Зарплата працівників

Ід номер Прізвище Ім'я По батькові Стать

Дата народження Вік Адреса Фотографія

Характеристика Таб номер Дата прийому Дата звільнення Стаж роботи Підрозділ Посада Оклад

Дата призначення Ставка Рік Місяць

Нараховано за окладом % премії Премія

Нараховано (за місяць) Квартал Нараховано (за квартал) Півріччя

Нараховано (за півріччя) Нараховано (за рікл)

Рисунок 7.1 – Універсальна таблиця

Визначимо та позначимо ключ для УТ. Одна людина за один місяць на одному робочому місці може отримати зарплату лише один раз. Таким чином, до складу ключа увійдуть поля: Таб номер, Рік, Місяць. Але детальний аналіз показує, що вибрані поля не можуть однозначно ідентифікувати запис. Працівник протягом місяця може пропрацювати на кількох робочих місцях і йому необхідно нарахувати зарплату по кожному робочому місцю. Крім того, після звільнення працівника його табельний номер у порядку виключення може бути наданий іншому працівнику.

Таким чином, до складового ключа УТ включені такі поля: Ід номер, Таб номер, Підрозділ, Посада, Оклад, Рік, Місяць

Після визначення ключа можна вважати, що УТ переведена до 1НФ. Для наочності рекомендується позначити ключові поля в УТ.

Далі визначимо ФЗ між полями в УТ.

Значення деяких полів можуть бути обчислені за формулами по значенням інших полів. Наведемо ці формули.

При цьому у правій частині формул назви полів візьмемо у квадратні дужки. Знак = (дорівнює) замінимо двокрапкою.

66

Формула розрахунку віку:

 

Вік: Рік(Поточна дата]) – Рік(Дата народження)

 

Формули розрахунку стажу

 

Стаж: Рік(Поточна дата]) – Рік(Дата прийому)

для працюючих

Стаж: Рік(Дата звільнення ]) – Рік(Дата прийому)

для звільнених

Формули розрахунку грошових сум

 

Нараховано за окладом: [Оклад]*[Ставка]

 

Премія : [Нараховано за окладом]*[% премії]/100

 

Нараховано: [Нараховано за окладом]+[Премія] або

 

Нараховано: [Оклад]*[Ставка]*(100+[% премії])/100

Запишемо ці залежності як ФЗ: Дата народження → Вік

Дата прийому, Дата звільнення → Стаж Оклад,Ставка → Нараховано за окладом Нараховано за окладом,% премії → Премія

Нараховано за окладом, Премія → Нараховано (за місяць) Місяць → Квартал → Півріччя Нараховано (за місяць) → … → Нараховано (за рік)

Для наочності рекомендується показати всі ФЗ графічно.

Зробимо найпростіший крок та вилучимо транзитивні залежності неключових полів від інших неключових полів. Для цього вилучимо ті неключові поля, що мають функціональні залежності від інших неключових полів і значення яких можуть бути визначені по значенням інших полів. Таким чином, ми виконаємо дії, передбачені другим кроком нормалізації.

В результаті отримаємо тЗарплата працівників (рис. 7.2) тЗарплата працівників

*Ід номер Прізвище Ім'я По батькові Стать

Дата народження Адреса Фотографія Характеристика *Таб номер Дата прийому Дата звільнення *Підрозділ *Посада *Оклад

Дата призначення Ставка *Рік *Місяць % премії

Рисунок 7.2 – УТ в 1НФ без ФЗ

67

Аналіз показує, що в цій таблиці за полем Ід номер, яке є частиною ключа, ми можемо точно вказати значення більшості інших полів, а саме:

*Ід номер → Прізвище *Ід номер → Ім'я

. . .

*Ід номер → Дата звільнення Крім того, існує ФЗ

*Ід номер, *Таб номер,*Підрозділ,*Посада,*Оклад,*Рік,*Місяць → % премії Виконаємо перший крок нормалізації. Розіб’ємо УТ на дві таблиці:

1)тПрацівники;

2)тЗарплата.

Процес проектування будемо ілюструвати за допомогою діаграм “Таблицізвязки”. Діаграма для двох таблиць показана на рис. 7.3.

тПрацівники

 

тЗарплата

*Ід номер

 

*Ід номер

Прізвище

 

*Таб номер

Ім'я

 

*Підрозділ

По батькові

 

*Посада

Стать

 

*Оклад

Дата народження

 

Дата призначення

Адреса

 

Ставка

Фотографія

 

*Рік

Характеристика

 

*Місяць

Дата прийому

 

% премії

Дата звільнення

 

 

Рисунок 7.3– ЛМД (дві таблиці)

Для підтримки цілісності даних за посиланнями визначимо зв’язок. Проаналізуємо цей варіант ЛМД. Таблиця тПрацівники знаходиться в

3НФ, бо вона має простий ключ.

В тЗарплата існує ФЗ від ключа *Ід номер, *Таб номер,*Підрозділ,*Посада,*Оклад,*Рік,*Місяць → % премії.

Але також існують ФЗ від частини ключа виду:

*Ід номер, *Таб номер, *Підрозділ, *Посада, *Оклад → Дата призначення; *Ід номер, *Таб номер, *Підрозділ, *Посада, *Оклад → Ставка.

Таким чином тЗарплата знаходиться в 1НФ. Необхідно виконати крок нормалізації та розбити тЗарплата на дві таблиці.

Додамо до МД тПризначення. Для переводу тЗарплата і тПризначення в 3НФ введемо штучний простий ключ. Існуючі ключі переведемо в звичайні унікальні ключі. Отримаємо МД БД з 3-х таблиць, які знаходяться в 3НФ. Діаграма показана на рис. 7.4.

В тПризначення поля, які визначають робоче місце, не є властивістю призначення. Навпаки, призначення проводиться на робоче місце. Перелік робочих місць зазвичай визначає штатний розпис, який складають у плановому відділі підприємства.

68

тПрацівники

 

тПризначення

 

тЗарплата

*Ід номер

 

* Код призначення

 

* Код зарплати

Прізвище

 

v Ід номер

 

v Код призначення

Ім'я

 

v Таб номер

 

v Рік

По батькові

 

v Підрозділ

 

v Місяць

Стать

 

v Посада

 

% премії

Дата народження

 

v Оклад

 

 

Адреса

 

Дата призначення

 

 

Фотографія

 

Ставка

 

 

Характеристика

 

 

 

 

Дата прийому

 

 

 

 

Дата звільнення

 

 

 

 

Рисунок 7.4 – МД (три таблиці)

Додамо до діаграми МД тШтати. Отримаємо модель МД з 4-х таблиць, які знаходяться в 3НФ. Діаграма МД показана на рис. 7.5

Рисунок 7.5 – Діаграма МД (чотири таблиці)

Такого ж результату проектування можна було б швидко досягти, якби ми використали підхід, заснований на принципах концептуального проектування.

На основі постановки задачі необхідно було зробити опис ПО короткими реченнями з іменниками та дієсловами, з підметами та присудками.

Нижче наведено приклад такого опису. Працівники отримують зарплату щомісячно.

69

Працівники отримують зарплату щомісячно (за роботу на робочих місцях).

На підприємстві створюються робочі місця.

На основі аналізу опису ПО області можна зразу визначити основні сутності МД:

1)Робочі місця (стрижень);

2)Працівники (стрижень);

3)Зарплата (характеристика).

Працівники працюють на робочих місцях.

Між працівниками і робочими місцями існує БЗ:

один працівник може працювати на кількох робочих місцях (один термін – на одному місці, другий термін – на іншому, тощо);

на одному робочому місці можуть працювати кілька працівників (спочатку один термін працює один працівник, потім інший працівник, а можуть і кілька працівників одночасно працювати на одному місці, наприклад, менеджерами).

Цю БЗ необхідно розв’язати через додаткову сутність-асоціацію Робота.

70

Далі кожній сутності ставимо у відповідність таблицю, розподіляємо атрибути сутностей як поля таблиць, вилучаємо ФЗ, вводимо прості ключі і отримуємо таку модель, яка показана на рис. 7.5.

Аналіз цієї МД показує, що тШтати має надмірність даних, яка може призвести до аномалій різних типів. Для розв’язання цієї проблеми введемо в

МД дві довідникові таблиці тПідрозділи та тПосади.

Отримаємо модель МД з 6 таблиць, які знаходяться в 3НФ. Діаграма МД показана на рис. 7.6

Рисунок 7.6 – Діаграма МД (шість таблиць)

Далі врахуємо той факт, що працівник може відпрацьовувати якусь фактичну кількість годин. Ці фактичні години можуть відрізнятися від запланованих годин, які передбачені графіком роботи. Будемо вважати, що підприємство має один графік роботи, наприклад, п’ятиднівку.

В результаті отримаємо таку МД, діаграма якої показана на рис. 7.7. Значення, які можуть бути обчислені за формулами, мають бути

сформовані за допомогою запитів. Наприклад, фактичний фонд оплати праці за квартал може бути розрахований по МД як сума нарахованої зарплати за відповідні місяці кварталу.

71

Розглянемо тПрацівники.

Значення полів Дата прийому та Дата звільнення можуть бути розраховані по записам тПризначення. Але ці поля не вилучаються з таблиці для оптимізації БД с метою прискорення обробки даних.

До тПрацівники можуть бути додані поля для зберігання необхідних додаткових анкетних даних, наприклад, адреси, домашнього, робочого та мобільного телефонів, E-mail.

Рисунок 7.7 – Діаграма МД “Зарплата” (сім таблиць)

Для прискорення обробки даних рекомендовано створити тТабНомери_працівників (*Таб номер, Ід номер, Дата прийому, Дата звільнення), яка буде проміжною між тПрацівники та тПризначення.

З метою оптимізації МД при зберіганні кількох характеристик та фотографій можна в МД ввести ще дві таблиці:

тПрацівникиФото (*Код фото, Код працівника, Дата фото, Фотографія); тПрацівникиХарактеристики (*Код характеристики, Код працівника,

Дата_характеристики, Характеристика).

Якщо ми хочемо мати адресу як сукупність кількох полів (поштовий індекс, населений пункт, вулиця, будинок, квартира), то це приведе до введення нових довідникових таблиць, наприклад, тНасПункти, тВулиці.

Таким чином, проводиться подальше розширення ЛМД.

72