Студопедия Главная Случайная страница Обратная связь

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

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





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

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

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

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

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

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

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

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

Один до одного (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; просмотров: 2481. Нарушение авторских прав; Мы поможем в написании вашей работы!




Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Ученые, внесшие большой вклад в развитие науки биологии Краткая история развития биологии. Чарльз Дарвин (1809 -1882)- основной труд « О происхождении видов путем естественного отбора или Сохранение благоприятствующих пород в борьбе за жизнь»...

Этапы трансляции и их характеристика Трансляция (от лат. translatio — перевод) — процесс синтеза белка из аминокислот на матрице информационной (матричной) РНК (иРНК...

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

Растягивание костей и хрящей. Данные способы применимы в случае закрытых зон роста. Врачи-хирурги выяснили...

ФАКТОРЫ, ВЛИЯЮЩИЕ НА ИЗНОС ДЕТАЛЕЙ, И МЕТОДЫ СНИЖЕНИИ СКОРОСТИ ИЗНАШИВАНИЯ Кроме названных причин разрушений и износов, знание которых можно использовать в системе технического обслуживания и ремонта машин для повышения их долговечности, немаловажное значение имеют знания о причинах разрушения деталей в результате старения...

Различие эмпиризма и рационализма Родоначальником эмпиризма стал английский философ Ф. Бэкон. Основной тезис эмпиризма гласит: в разуме нет ничего такого...

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