Пример 2. Счёт №123 Дата Покупатель Адрес 10.04.04 Каф

Объект Отпуск товаров

 
 
Счёт №123 Дата Покупатель Адрес 10.04.04 Каф. АПП КубГТУ Краснодар, Красная, 135-189 Товар Кол-во, шт. Цена ед_изм Общая стоим Компьютер 10 14 000 140 000 Стол компьют 10 920 9 200 Кресло компьют 10 1440 14 400


Отношение ОТПУСК ТОВАРОВ примет вид:

Таблица БД Отпуск товаров

№ счёта Дата Покуп-ль Город Адрес Товар1 Товар Товар 3 Цена ед_изм Кол-во.шт Общая стоим.
  10.04.04 Каф. АПП КубГТУ Краснодар Красная, 135-189 Компьютер Стол комп Кресло комп ? ? ?

Очевидный ключ - № счёта, но тогда счёт №123 имеет недостатки:

1 Адрес – составной (делимый) атрибут, но, учитывая возможный будущий анализ продаж по городам, выделим в нём только Город – это доработка таблицы, составленной по этому счёту.

2 Атрибут Товар – повторяющаяся группа, т.к. их в счёте №123 несколько – 3 товара.

Вариант 1: Разбиение таблицы на 3 таблицы для каждого товара.

Чтобы не допускать повторяющуюся группу в табл. БД – для однозначности идентификации каждого товара – в таблицу включаем только один товар, тогда для счёта №123 потребуется 3 таблицы БД – по одной на каждый товар.

Но тогда №счёта будет одинаков во всех таблицах и как ключ не годится для идентификации

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

Вариант 3: сделать составной ключ №счёта + Товар (возможно в одном № счёта повторение товара) или Товар+Цена – подходит для данной конкретной БД, хотя и является составным.

Вариант 4: ввести новый атрибут Код товара и сделать его ключевым.

Код товара № счёта Дата Покуп-ль Город Адрес Товар Цена ед_изм Кол-во.шт Общая стоим.
    10.04.04 Каф. ССУК Краснодар Красная, 135-189 Компьютер      
    10.04.04 Каф. ССУК Краснодар Красная, 135-189 Стол компьютер      
    10.04.04 Каф. ССУК Краснодар Красная, 135-189 Кресло комп.      

В целом общее правило приведения таблиц БД к 1НФ:

1 Каждое поле должно быть разумно неделимым, достаточным для целей данной БД.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: