Студопедия — Даталогічна модель даних
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Даталогічна модель даних






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

Нормалізація - це розбивка таблиці на двоє чи більше, що володіють кращими властивостями при включенні, зміні і видаленні даних. Остаточна мета нормалізації зводиться до одержання такого проекту бази даних, у якому кожен факт з’являється лише в одному місці, тобто виключена надмірність інформації. Це робиться не тільки з метою економії пам’яті, скільки для виключення можливої суперечності збережених даних.

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

Правила декомпозиції:

Між атрибутами не повинно бути функціональної залежності.

Групування атрибутів не повинно супроводжуватися надмірним дублюванням даних.

Склад атрибутів повинен забезпечувати обробку та поновлення їх без ускладнень.

В даній базі даних “Довідники” використовуються такі зв’язки:

Один до одного (1:1) - у кожен момент часу кожному екземпляру чи атрибуту об’єкта Х відповідає 1 чи 0 екземплярів чи атрибутів об’єкта Y.

Наприклад: У базі даних „ Довідники " можна отримати анотацію про книгу тільки за кодом видання цієї книги. Атрибут Код видання є ключовим атрибутом обох об’єктів бази даних, Видання, Анотації.

Один до багатьох (1: ∞) - одному екземпляру об’єкта Х відповідає 0,1 чи декілька атрибутів об’єкта Y.

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

Наприклад: Виробник випускає продукцію різного типу та конфігурації. Це є 1: ∞ об’єктів Виробники, Види товару. Такий зв’язок може мати об’єкт Назви, Вид товару (1) до Виробника (∞). Так як одну назву може мати багато товарів обліку; вид товару (процесори, материнська плата, принтери, факси) вироблено на одному підприємстві.

Багато до багатьох (∞: ∞). Даний зв’язок розшифровується як такий зв’язок, що створюється ще додатковий об’єкт, який називається асоціативним. Асоціативний зв’язок виникає при формалізації багато до багатьох.

Аналіз визначених вище об’єктів і атрибутів дозволяє виділити об’єкти проектованої бази даних і, прийнявши рішення про створення реляційної бази даних, побудувати її даталогічну модель мовою „Таблиці-зв’язку”:

 

Рис.6 може 11 – Даталогічна модель бази даних „Довідники”

Опис даталогічної моделі в Firebird має вигляд програмного коду, що описує кожний об’єкт таблиці.


object SFirms: TDataSource

DataSet = Firms

Left = 64

Top = 8

end

object SMaterials: TDataSource

DataSet = Materials

Left = 200

Top = 8

end

object SArrival: TDataSource

DataSet = QArrival

Left = 384

Top = 8

end

object SMeasuring: TDataSource

DataSet = Measuring

Left = 72

Top = 64

end

object SExpense: TDataSource

DataSet = QExpense

Left = 432

Top = 152

end

object SObjects: TDataSource

DataSet = Objects

Left = 72

Top = 128

end

object SWork: TDataSource

DataSet = Work

Left = 232

Top = 208

end

object IBDatabase1: TIBDatabase

Params.Strings = (

'user_name=sysdba'

'password=masterkey'

'lc_ctype=win1251')

LoginPrompt = False

DefaultTransaction = IBTransaction1

IdleTimer = 0

SQLDialect = 1

TraceFlags = []

Left = 32

Top = 312

end

object IBTransaction1: TIBTransaction

Active = False

DefaultDatabase = IBDatabase1

AutoStopAction = saNone

Left = 120

Top = 312

end

object Firms: TIBTable

Database = IBDatabase1

Transaction = IBTransaction1

BufferChunks = 1000

CachedUpdates = False

FieldDefs = <

item

Name = 'FIRM_ID'

Attributes = [faRequired]

DataType = ftInteger

end

item

Name = 'NAME'

DataType = ftString

Size = 50

end

item

Name = 'ADRES'

DataType = ftString

Size = 50

end>

IndexDefs = <

item

Name = 'RDB$PRIMARY1'

Fields = 'FIRM_ID'

Options = [ixPrimary, ixUnique]

end>

StoreDefs = True

TableName = 'FIRMS'

Left = 16

Top = 8

end

object Materials: TIBTable

Database = IBDatabase1

Transaction = IBTransaction1

BufferChunks = 1000

CachedUpdates = False

FieldDefs = <

item

Name = 'MATERIAL_ID'

Attributes = [faRequired]

DataType = ftInteger

end

item

Name = 'NAME'

DataType = ftString

Size = 50

end>

IndexDefs = <

item

Name = 'RDB$PRIMARY18'

Fields = 'MATERIAL_ID'

Options = [ixPrimary, ixUnique]

end>

StoreDefs = True

TableName = 'MATERIALS'

Left = 136

Top = 8

end

object Measuring: TIBTable

Database = IBDatabase1

Transaction = IBTransaction1

BufferChunks = 1000

CachedUpdates = False

FieldDefs = <

item

Name = 'MEASURING_ID'

Attributes = [faRequired]

DataType = ftInteger

end

item

Name = 'NAME'

DataType = ftString

Size = 10

end>

IndexDefs = <

item

Name = 'RDB$PRIMARY8'

Fields = 'MEASURING_ID'

Options = [ixPrimary, ixUnique]

end>

StoreDefs = True

TableName = 'MEASURING'

Left = 16

Top = 64

end

object Objects: TIBTable

Database = IBDatabase1

Transaction = IBTransaction1

BufferChunks = 1000

CachedUpdates = False

FieldDefs = <

item

Name = 'OBJECT_ID'

Attributes = [faRequired]

DataType = ftInteger

end

item

Name = 'NAME'

DataType = ftString

Size = 255

end

item

Name = 'INV_NOM'

DataType = ftString

Size = 50

end>

IndexDefs = <

item

Name = 'RDB$PRIMARY2'

Fields = 'OBJECT_ID'

Options = [ixPrimary, ixUnique]

end>

StoreDefs = True

TableName = 'OBJECT'

Left = 16

Top = 128

end

object Work: TIBTable

Database = IBDatabase1

Transaction = IBTransaction1

BufferChunks = 1000

CachedUpdates = False

FieldDefs = <

item

Name = 'WORK_ID'

Attributes = [faRequired]

DataType = ftInteger

end

item

Name = 'NAME'

DataType = ftString

Size = 255

end>

IndexDefs = <

item

Name = 'RDB$PRIMARY17'

Fields = 'WORK_ID'

Options = [ixPrimary, ixUnique]

end>

StoreDefs = True

TableName = 'WORK1'

Left = 168

Top = 216

end

object Statement: TIBTable

Database = IBDatabase1

Transaction = IBTransaction1

BufferChunks = 1000

CachedUpdates = False

FieldDefs = <

item

Name = 'STATEMENT1_ID'

Attributes = [faRequired]

DataType = ftInteger

end

item

Name = 'DIRECTOR'

DataType = ftBlob

Size = 8

end

item

Name = 'ZAYAVA'

DataType = ftString

Size = 50

end

item

Name = 'OSOBA'

DataType = ftBlob

Size = 8

end>

IndexDefs = <

item

Name = 'RDB$PRIMARY15'

Fields = 'STATEMENT1_ID'

Options = [ixPrimary, ixUnique]

end>

StoreDefs = True

TableName = 'STATEMENT1'

Left = 152

Top = 64

end

object QArrival: TIBQuery

Database = IBDatabase1

Transaction = IBTransaction1

BufferChunks = 1000

CachedUpdates = False

SQL.Strings = (

 

'select Arrival.Arrival_id, Arrival.Dates, Materials.Name, Firms.' +

'Name, Arrival.Invoice,'

 

'Arrival.Invoice_date, Arrival.Amount, Measuring.Name, Arrival.Pr' +

'ice, '

'Arrival.Suma, Arrival.Provodka, Place.Name, Category.Name'

'from Arrival,Firms, Materials, Measuring, Place, Category'

'where Arrival.Material_id=Materials.Material_id and'

'Arrival.Firm_id=Firms.Firm_id and'

'Arrival.Measuring_id=Measuring.Measuring_id and'

'Arrival.Place_id=Place.Place_id and'

'Arrival.Category_id=Category.Category_id'

'and Arrival.Dates >=:DateBgn and Arrival.Dates <=:DateEnd')

Left = 312

Top = 16

ParamData = <

item

DataType = ftUnknown

Name = 'DateBgn'

ParamType = ptUnknown

end

item

DataType = ftUnknown

Name = 'DateEnd'

ParamType = ptUnknown

end>

end

object Presence_: TIBQuery

Database = IBDatabase1

Transaction = IBTransaction1

BufferChunks = 1000

CachedUpdates = False

SQL.Strings = (

'select '

 

'Presence.Presence_id, Presence.Material_id, Presence.Date_arriva' +

'l,Materials.Name, Firms.Name, '

'Presence.Invoice, Presence.Invoice_date, Presence.Amount,'

 

'Measuring.Name, Presence.Price, Presence.Suma, Place.Name, Categ' +

'ory.Name'

'from '

'Presence, Materials, Firms, Measuring, Place, Category'

'where'

'Presence.Material_id=Materials.Material_id and'

'Presence.Firm_id=Firms.Firm_id and'

'Presence.Measuring_id=Measuring.Measuring_id and'

'Presence.Place_id = Place.Place_id and'

'Presence.Category_id = Category.Category_id')

Left = 184

Top = 144

end

object SPresence: TDataSource

DataSet = Presence

Left = 240

Top = 144

end

object QExpense: TIBQuery

Database = IBDatabase1

Transaction = IBTransaction1

BufferChunks = 1000

CachedUpdates = False

SQL.Strings = (

 

'select Expense.Expense_id, Expense.Data, Expense.Date_arrival, M' +

'aterials.Name, Firms.Name, Expense.Invoice,'

'Expense.Invoice_date, Expense.Amount, Measuring.Name, '

 

'Expense.Price, Expense.Suma, Expense.Provodka, Work1.Name, Objec' +

't.Name, Place.Name, Category.Name'

 

'from Expense, Firms, Materials, Measuring, Work1, Object, Place,' +

' Category'

'where '

 

'Expense.Firm_id=Firms.Firm_id and Expense.Material_id=Materials.' +

'Material_id and'

'Expense.Measuring_id=Measuring.Measuring_id and'

'Expense.Work_id= Work1.Work_id and'

'Expense.Object_id=Object.Object_id and'

'Expense.Place_id = Place.Place_id and'

'Expense.Category_id = Category.Category_id'

'and'

'Expense.Data >=:DateBgn and Expense.Data <=:DateEnd ')

Left = 352

Top = 168

ParamData = <

item

DataType = ftUnknown

Name = 'DateBgn'

ParamType = ptUnknown

end

item

DataType = ftUnknown

Name = 'DateEnd'

ParamType = ptUnknown

end>

end

object Place: TIBTable

Database = IBDatabase1

Transaction = IBTransaction1

BufferChunks = 1000

CachedUpdates = False

FieldDefs = <

item

Name = 'PLACE_ID'

Attributes = [faRequired]

DataType = ftInteger

end

item

Name = 'NAME'

DataType = ftString

Size = 100

end>

IndexDefs = <

item

Name = 'RDB$PRIMARY19'

Fields = 'PLACE_ID'

Options = [ixPrimary, ixUnique]

end>

StoreDefs = True

TableName = 'PLACE'

Left = 280

Top = 80

end

object SPlace: TDataSource

DataSet = Place

Left = 344

Top = 80

end

object Category: TIBTable

Database = IBDatabase1

Transaction = IBTransaction1

BufferChunks = 1000

CachedUpdates = False

FieldDefs = <

item

Name = 'CATEGORY_ID'

Attributes = [faRequired]

DataType = ftInteger

end

item

Name = 'NAME'

DataType = ftString

Size = 100

end>

IndexDefs = <

item

Name = 'RDB$PRIMARY20'

Fields = 'CATEGORY_ID'

Options = [ixPrimary, ixUnique]

end>

StoreDefs = True

TableName = 'CATEGORY'

Left = 432

Top = 80

end

object SCategory: TDataSource

DataSet = Category

Left = 496

Top = 80

end

object Presence: TIBQuery

Database = IBDatabase1

Transaction = IBTransaction1

BufferChunks = 1000

CachedUpdates = False

SQL.Strings = (

'select * from EXPENCEVIEV(0,0)')

Left = 128

Top = 176

end


 

 

Схема БД облікової системи представлена у вигляді 24 таблиць, основні з яких: “Виробники”, “Види товару”, “Місце розташування товару”, “Внутрішня звітність", “Зовнішня звітність", “Характеристики товару”, “Постачальники", “Оптові покупці" та ін. Представимо у вигляді таблиці назви основних полів та зв’язків між ними -таблиця 3.

 

Таблиця 3 Основні поля зв’язків між таблицями бази даних системи обліку

Назва таблиці Ім’я поля Тип поля
Виробники Код виробника Числовий
Код країни виробника Числовий
Види товару Код товару Текстовий
Короткий опис Текстовий
Характеристики товару Код товару Текстовий
Назва виду Текстовий
Ціна товару Числовий
Кількість товару Числовий
Постачальники Код підприємства Числовий
Назва Текстовий
Місто Текстовий
Групи товарів Текстовий
Місце розташування товару Код товару Числовий
Код виробника Текстовий
Вид товару Текстовий
Номер складу Числовий
Постачальник Текстовий
Кількість товару отриманого Текстовий
Кількість товару відправленого Числовий
Дата отримання Дата/час
Анотації Текстовий
Оптові покупці Код підприємства Числовий
Назва Текстовий
Місто Текстовий
Групи товарів Числовий
Дата повернення Дата/час
Внутрішня звітність Код шаблону Текстовий
Номер звітності Числовий
Зовнішня звітність Код шаблону Текстовий
Номер звітності Текстовий
Примітки для аудиту Текстовий
Співробітники Номер картки працівника Числовий
Прізвище Текстовий
Ім’я Текстовий
По батькові Текстовий
Адреса Текстовий
Телефон Текстовий

 

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

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

 








Дата добавления: 2015-09-04; просмотров: 2405. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Алгоритм выполнения манипуляции Приемы наружного акушерского исследования. Приемы Леопольда – Левицкого. Цель...

ИГРЫ НА ТАКТИЛЬНОЕ ВЗАИМОДЕЙСТВИЕ Методические рекомендации по проведению игр на тактильное взаимодействие...

Реформы П.А.Столыпина Сегодня уже никто не сомневается в том, что экономическая политика П...

ОЧАГОВЫЕ ТЕНИ В ЛЕГКОМ Очаговыми легочными инфильтратами проявляют себя различные по этиологии заболевания, в основе которых лежит бронхо-нодулярный процесс, который при рентгенологическом исследовании дает очагового характера тень, размерами не более 1 см в диаметре...

Примеры решения типовых задач. Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2   Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2. Найдите константу диссоциации кислоты и значение рК. Решение. Подставим данные задачи в уравнение закона разбавления К = a2См/(1 –a) =...

Экспертная оценка как метод психологического исследования Экспертная оценка – диагностический метод измерения, с помощью которого качественные особенности психических явлений получают свое числовое выражение в форме количественных оценок...

Studopedia.info - Студопедия - 2014-2024 год . (0.048 сек.) русская версия | украинская версия