Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Создание таблиц БД «Library



Таблицы БД «Library» будут использоваться в качестве тестовых примеров в последующих ЛР.

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

Каждая БД хранится на диске в отдельной папке, которая содержит текстовые файлы с таблицами. Имя папки для БД «Library» - LibraryTxt.
Каждая таблица хранится в отдельном файле.

           < имя файла> = < имя таблицы>.txt.
       Данные таблиц хранятся в текстовых файлах формате CSV с разделителем ‘|’.

Таблица состоит из «шапки» (список заголовков столбцов) и строк данных.

Структура файлов:

- первая строка файла содержит имя таблицы и имя первичного ключа (или NoPrimaryKey, если первичный ключ в таблице отсутствует);

- вторая строка файла содержит заголовки всех столбцов таблицы

- остальные строки содержат записи данных таблицы.

Заголовок каждого столбца таблицы состоит из трех слов:

< имя столбца>, < имя типа данных в столбце> и < максимальная длина данных в столбце>

- строки данных содержат значения полей таблицы.

 

В макете СУБД достаточно ограничиться 4-мя типами данных:

       string, int, double и DBDate.

       DBDate – тип для представления даты в БД. Он создан пользователем для выполнения операций с датами при работе с БД.

Столбец, являющегося первичным ключом (значения полей в этом столбце должны быть уникальными), необходим только в " основных" таблицах. При удалении записи из таблицы значение первичного ключа в новых записях не должно повторяться.

       Во " вспомогательных" таблицах, включаемых в реляционные БД для создания связей между таблицами типа " многие-ко-многим", он не используется (в файле его нет).

Пример " вспомогательных" таблиц: Abonements. В них записи идентифицируются комбинацией значений первичных ключей связываемых таблиц (они называются вторичными).

Значение по умолчанию " NoPrimaryKey" будем использовать как признак того, что объект

DBTable связан с вспомогательной таблицей.

       Кроме таблиц с данными каждая БД должна содержать текстовый файл DBTables.txt. В файле DBTables.txt будем хранить имена всех файлов с таблицами БД.

 

База данных библиотекиLibrary содержит 3 таблицы с данными:

Abonements, Students и Books и таблицу TableRelations.

Таблица TableRelations хранит описывания связей между парами таблиц БД (если они существуют). Одна из таблиц является родительской (parentTable), а другая дочерней (childTable).

Имена столбцов и типы данных в столбцах таблиц БД Library:

Таблица Students. Имена столбцов: StudentID (первичный ключ), Name, Group.

       Типы данных в столбцах таблицы:

StudentID - int (имя типа Int32, длина 8);

Name – string (имя типа String, длина 16);

Group– string (имя типа String, длина 8);

 

Таблица Books. Имена столбцов: Author, BookID (первичный ключ), Title, Quantity, Number, где:

Quantity – количество поступивших в библиотеку экземпляров данной книги.

Number – количество выданных экземпляров данной книги.

 

       Типы данных в столбцах таблицы:

Author - string (имя типа String, длина 12);

BookID - int (имя типа Int32, длина 8);

Title – string (имя типа String, длина 16);

Quantity - int (имя типа Int32, длина 8);

Number - int (имя типа Int32, длина 8);

 

 

Таблица Abonements. Имена столбцов: StudentID, BookID, OutDate, InDate, где:

DateOut, DateIn – дата выдачи и дата возврата книги.

       Типы данных в столбцах таблицы:

StudentID - int (имя типа Int32, длина 8);

BookID - int (имя типа Int32, длина 8);

OutDate - DBDate (имя типа DBDate, длина 12);

InDate - DBDate (имя типа DBDate, длина 12);

 

Таблица TableRelations для БД Library.

Имена столбцов: |RelationName (первичный ключ), ParentTable, ParentPrimaryKey, ChildTable, ChildSecondaryKey.

       Типы данных в столбцах таблицы:

ChildSecondaryKey – string (имя типа String, длина 12);

ChildTable – string (имя типа String, длина 12);

ParentPrimaryKey – string (имя типа String, длина 12);

ParentTable – string (имя типа String, длина 12);

RelationName – string (имя типа String, длина 20); |

 

       Заполнить файлы тестовыми данными. Ввести не менее трех книг по каждому из трех предметов, не менее 5 записей в таблицу Students и не менее 10 записей в таблицу Abonements.

       При заполнении таблиц данными в текстовом редакторе проверяйте уникальность значений первичных ключей и ссылочную целостность данных, то есть наличие в основных (родительских) таблицах Students и Books значений идентификаторов StudentID и BookID, использованных в производной (дочерней) таблице Abonements.

       Пример файла Students.txt:

Students|StudentID

Group|String|8|Name|String|16|StudentID|Int32|8

IU5-21|Ivanov|1
IU5-21|Petrov|2

 

       Пример файла Abonements.txt:

Abonements|NoPrimaryKey

BookID|Int32|8|DateIn|DBDate|12|DateOut|DBDate|12|StudentID|Int32|8

1|5.11.2016|6.4.2016|1

1|6.2.2016|1.1.1|2

 

Примечание: При заполнении таблиц в текстовом редакторе следите за тем, чтобы в конце таблицы не было пустой строки. Она не видна, но ее наличие приведет к ошибке при чтении таблицы.

Сделайте копии таблиц БД тестового примера, чтобы их можно было бы восстанавливать при возможной потере данных в процессе отладки.

4 Создание решения DBStatLib_v1 для работы с таблицами БД

Создайте в решении DBStatLib_v1 проект testDB и подключите к нему базовую версию статической библиотеки классов для макета СУБД (библиотечные файлы dbmsLib_v1.lib и dbmsLib_v1.h предоставляются преподавателем).
Для подключения библиотеки скопируйте файлы dbmsLib_v1.lib и dbmsLib_v1.h в текущую папку проекта (папка, в которой находится файл testDB.cpp), а затем добавьте их в проект, как существующие.
Поместите папку LibraryTxt с таблицами БД в ту же папку, где расположен файл запуска решения DBStatLib_v1.sln.
Для демонстрация работы приложения testDB с таблицами БД (чтение, запись, печать, добавление записи, внесение изменений в поля таблиц) используйте меню.

 


Поделиться:



Последнее изменение этой страницы: 2019-05-04; Просмотров: 192; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.016 с.)
Главная | Случайная страница | Обратная связь