Разработка программного обеспечения, Структура хранения транзакций в базах данных - Разработка программного обеспечения для реализации и тестирования алгоритма нахождения частых множеств в транзакционных данных вертикального формата

Для разработки программного обеспечения использован язык Java. Разработка проводилась в среде Eclipse Ganymede 3.2. В качестве СУБД для тестирования приложения использован MySQL 5.1

Структура хранения транзакций в базах данных

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

Для примера возьмем 4 транзакции:

1: Вода, Мясо, Хлеб

2: Молоко

3: Сметана, Мясо, Макароны, Вода

4: Хлеб, Молоко

В основном, для хранения данных используются реляционные базы данных (Oracle, DB2,MySql и другие). В реляционных базах данные хранятся в таблицах. Одной из структур хранения транзакций покупок может быть разделение данных на 2 таблицы:

    - Таблица товаров - Таблица транзакций

Рассмотрим таблицу товаров

Id

Name

10

Молоко

20

Хлеб

30

Мясо

40

Макароны

50

Сметана

60

Вода

В таблице товаров хранится список всех товаров, присутствующих в базе.

Таблица состоит из 2 столбцов. В столбце "Id" хранится уникальный иденти-фикатор товара, первичный ключ. Столбец "Name" содержит наименование товара.

Tid

Element

1

60

1

30

1

20

2

10

3

50

3

30

3

40

3

60

4

20

4

10

Таблица транзакций (Рисунок 11) также состоит из 2 столбцов. В столбце "Tid" находятся номера транзакций (их также можно назвать идентификаторами транзакций). Столбец "Element" содержит идентификатор одного из товаров, купленного в эту транзакцию. Таким образом, первая транзакция из нашего примера (Вода, Мясо, Хлеб) представлена в таблице транзакций тремя записями. Вторая транзакция, состоящая из одного товара, представлена одной записью и т. д.

Как видно из вышесказанного, названия товаров не хранятся в таблице транзакций, для них заведена специальная таблица. Вместо названий товаров таблице транзакций хранятся первичные ключи товаров (то есть ссылки на эти товары).

Данный способ представления данных дает следующие преимущества:

    - Экономия памяти - наименование товара, как правило, занимает больше памяти, чем его идентификатор. - Упрощение модификации товара - при изменении наименования товара, достаточно, изменить значение столбца "Name" в таблице товаров для данного товара. Таблицу транзакций изменять не надо, так как в ней хранятся только идентификаторы товаров. - Упрощение модификации транзакции - поскольку транзакции хранятся поэлементно, то при удалении товара из транзакции или добавлении товара в транзакцию, происходит добавление или удаление записи в таблице транзакций.

Для сравнения рассмотрим другие способы представления.

Tid

Elements

1

60,30,20

2

10

3

50,30,40,60

4

20,10

В таблице транзакций на рисунке 12 столбец "Elements", содержащий идентификаторы товаров, является многозначным. При удалении товара из транзакции придется удалять идентификатор товара из cтроки, это более трудоемкая операция, чем удаление одной записи из таблицы транзакций на рисунке 11.

Tid

Молоко

Хлеб

Мясо

Макароны

Сметана

Вода

1

0

1

1

0

0

1

2

1

0

0

0

0

0

3

0

0

1

1

1

1

4

1

1

0

0

0

0

В таблице транзакций на рисунке 13 для каждого товара есть свой столбец. Каждая транзакция является отдельной записью, номер транзакции хранится в столбце "Tid". Если товар присутствует в транзакции, то значение столбца товара для данной транзакции равно 1, иначе 0. Данный способ представления нежизнеспособен, поскольку число столбцов не фиксировано, и при удалении или добавлении товара придется удалять или добавлять столбец, это приведет к пересчету всей таблицы.

Похожие статьи




Разработка программного обеспечения, Структура хранения транзакций в базах данных - Разработка программного обеспечения для реализации и тестирования алгоритма нахождения частых множеств в транзакционных данных вертикального формата

Предыдущая | Следующая