6. Переплёты (Номер_переплёта, Код_издания, Дата_приобретения) – здесь хранится информация о конкретном экземпляре (переплёте), такая как инвентарный номер, дата проибретения.
7. Группа (Код_группы, Название_группы, Код_родителя) – здесь хранятся данные о названии групп читателей, и их взаимосвязи (ерархия). Так же вводим целочисленный атрибут Код_группы, который будет автоматически наращиваться на единицу при добавлении нового группы.
8. Читатели (Номер_читателя, Код_группы, Код_фамилии, Код_имени, Код_отчества, Код_города, Код_улицы, Дом_Квартира, Номер_телефона, Дата_рождения, Дата_регистрации, Комментарий) – здесь хранится информация о читателе и его принадлежности к группе. Так же вводим целочисленный атрибут Номер_читателя, который будет автоматически наращиваться на единицу при добавлении нового читателя и будет являться номером читательского билета.
9. Авторы (Код_создателя, Код_издания) – эта таблица является ассоциацией между таблицами Создатели и Издание.
10. Составители (Код_создателя, Код_издания) – эта таблица является ассоциацией между таблицами Создатели и Издание.
11. Редакторы (Код_создателя, Код_издания) – эта таблица является ассоциацией между таблицами Создатели и Издание.
12. Выдача (Номер_переплёта, Номер_читателя, Дата_выдачи, Дата_сдачи) - эта таблица хранит ассоциации между таблицами Переплёт и Читатель.
13. Фамилии (Код_фамилии, Фамилия) – здесь хранятся данные о фамилиях читателей. Так же вводим целочисленный атрибут Код_фамилии, который будет автоматически наращиваться на единицу при добавлении новой фамилии.
14. Имена (Код_имени, Имя) – здесь хранятся данные об именах читателей. Так же вводим целочисленный атрибут Код_имени, который будет автоматически наращиваться на единицу при добавлении нового имени.
15. Отчества (Код_отчества, Отчество) – здесь хранятся данные об отчествах читателей. Так же вводим целочисленный атрибут Код_отчества, который будет автоматически наращиваться на единицу при добавлении нового отчества.
16. Города (Код_города, Город) – здесь хранятся данные о названии городов, где проживают читатели. Так же вводим целочисленный атрибут Код_города, который будет автоматически наращиваться на единицу при добавлении нового города.
17. Улицы (Код_улицы, Улица) - здесь хранятся данные о названия улиц, где проживают читатели. Так же вводим целочисленный атрибут Код_улицы, который будет автоматически наращиваться на единицу при добавлении новой улицы.
Выделение этих таблиц позволяет избежать возникновения противоречий, снижает объём хранимых данных и позволяет исключить повторный ввод названий.
После распределения данных по таблицам и определения полей, необходимо выбрать схему для связи данных в разных таблицах. Для этого нужно определить ключевые поля и связи между таблицами.
Описанные выше приемы проектирования помогают эффективно связывать данные. При создании таблиц, в каждую новую таблицу включается поле, связывающее новую и старую таблицы. Эти связующие поля называются внешними ключами. В хорошо спроектированной базе данных использование внешних ключей обеспечивает эффективность использования приложения. В процессе проектирования нужно внимательно следить за созданием внешних ключей. Заключительный этап логического проектирования базы данных заключается в определении связей между таблицами. Задаваемые при создании таблиц связи первичных ключей с внешними ключами используются для объединения данных из нескольких таблиц.
В большинстве случаев, как уже описывалось выше, таблицы связываются между собой отношением «один ко многим», гораздо реже «один к одному» и «многие ко многим». Если в базе данных существует связь между таблицами типа «многие ко многим», то необходимо создать таблицу пересечения, с помощью которой одна связь «многие ко многим» будет сведена к двум связям типа «многие к одному». В настоящей базе данных все таблицы будут связываться между собой отношением типа «многие к одному». Непосредственно для работы данного приложения необходимо связать данные из таблиц с данными о заголовках разделов и изданиями. Связь между этими таблицами будет типа «один ко многим», так как в одном разделе может содержаться множество изданий, но любое издание содержится только в одном разделе. Для связи таблицы Раздел с таблицей Издание необходимо, чтобы первичный ключ этой таблицы – Код_раздела - присутствовал в связанной с ней таблице. В таблице Издание первичным ключом является Код_издания через который производится связь с таблицами Авторы, Составители, Редакторы и Переплёты, в соотношении «один ко многим», так как у одного издания может быть несколько авторов, составителей и редакторов, а так же в библиотеке может храниться несколько экземпляров данного издания. В свою очередь у таблицы Создатели тоже есть первичный ключ Код_создателя через который определяем связь с таблицами Авторы, Составители и Редакторы, в отношении «один ко многим». Таблица Вид_издания связана с таблицей Издание по первичному ключу Вид_издания в соотношении «один ко многим, так же таблица Издательства связана с таблицей Издание по первичному ключу Код_издательства в отношении «один ко многим». Таблица Переплёты имеет первичный ключ Номер_переплёта по которому связана с таблицей Выдача в отношении «один ко многим».
Аналогично таблица Группа будет связываться с таблицей Читатель отношением типа «один ко многим» через первичный ключ Код_группы, потому как в любой группе может содержаться множество читателей, но каждый читатель содержится в одной группе. Таблица Города, имеющая первичный ключ Код_города связана с таблицей Читатель в отношении «один ко многим», аналогично связаны таблицы Улицы, Фамилии, Имена и Отчества, у которых первичными ключами являются Код_улицы, Код_Фамилии, Код_имени и Код_отчества соответственно. Так же таблица Читатель, имеющая первичный ключ Номер_читателя, связана с таблицей Выдача в отношении «один ко многим».
После разработки проекта приложения можно приступать к непосредственному его созданию.
В Microsoft VFP существует три способа создания таблицы:
· Использование мастера баз данных для создания всех таблиц входящих в базу данных, содержащей все требуемые представления, индексы, хранимые процедуры и связи за одну операцию. Мастер баз данных создает новую базу данных, его нельзя использовать для добавления новых таблиц, индексов, представлений, связей и хранимых процедур в уже существующую базу данных.
· Использование мастера таблиц позволяет выбрать поля для данной таблицы из множества определенных ранее таблиц, таких как деловые контакты, список личного имущества или указать произвольную таблицу. Добавить в существующую базу данных, назначить типы полей, индексы и связи.
· Определение всех параметров таблицы в режиме конструктора.
Независимо от метода, примененного для создания таблицы, всегда имеется возможность использовать режим конструктора для дальнейшего изменения макета таблицы, например, для добавления новых полей, определения типов, индексов и связей.
В дальнейшем, используя, конструктор базы данных создаём проекты таблиц, указываем типы данных и свойства полей, определяем индексы и устанавливаем связи между таблицами, назначаем методы контроля целостности.
Рис.3.2 Окно конструктора таблиц
В верхней части дизайнера таблиц расположены столбцы, в которых вводится название поля, тип данных, размер поля, наличие простого индекса, направление индексации (по возрастанию, по убыванию), возможность использования значения .NULL., в нижней части окна вводятся формат поля, формат маски ввода, заголовок поля, процедуры для проверки вводимых значений, сообщения, значение по умолчанию и комментарий для поля.
Для оптимизации работы с таблицами существует несколько возможностей:
· Проектировать таблицы, в которых не содержится избыточных данных.
· Выбирать наиболее подходящий тип данных для поля – это приведёт к уменьшению размера таблицы и увеличит скорость выполнения операций. При описании таблицы следует задавать для него тип данных наименьшего размера, позволяющий хранить нужные данные.
Microsoft Visual FoxPro поддерживает тринадцать типов данных:
Тип данных
Использование
Размер
Character
Алфавитно-цифровые данные
До 254 байт
Currency
Денежные суммы
8 байт
Numeric/ Float
Числовые данные
До 20 байт
Date
Дата
Data/Time
Дата-время
Double
Числа двойной точности с плавающей точкой (18 разрядов)
Integer
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18