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

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

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






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

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

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

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

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

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

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

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

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



Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

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

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

СПИД: морально-этические проблемы Среди тысяч заболеваний совершенно особое, даже исключительное, место занимает ВИЧ-инфекция...

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

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

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

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

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

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