Создание таблиц базы данных

Типы полей¶

Целочисленные поля

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


Пример: Вы делаете флаговое поле (1,0) и решили использовать тип . Конечно тут нелогично использовать всю размерность поля — оно занимает 4 байта. Нужно использовать размером в 1 байт для экономии дискового пространтсва, выделяемого под данные. Так выборки будут шустрее.

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

Дополнительный числовой атрибут у типа поля вляет на отображение поэтому желательно его пропускать — MySQL сам выберет подходящую размерность. Например для будет выбрано 3 а для — 5.

Описание INT полей есть на этой странице.

Сводная таблица диапазонов для INT полей, первым идёт диапазон для флага :

TINYINT SMALLINT MEDIUMINT INT BIGINT

-128 127

-32768 32767

-8388608 8388607

-2147483648 2147483647

-9223372036854775808 9223372036854775807

0 255 0 65535 0 16777215 0 4294967295 0 18446744073709551615

Строковые поля

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

Типы баз данных

По способу сохраненных данных: фактографическая и документальная.​По способу хранения данных: усредненная, распространенная.​По способу организации данных: реляционная (табличная), иерархическая и сетевая (схема 1).

Схема 1. Типы баз данных 

Теория управления базами данных начала развиваться как самостоятельный предмет в начале 50-х годов XX века. За это время была сформирована система понятий баз данных. Например:​Объектом называется элемент информационной системы, хранящийся в базе данных.​Атрибут (латинский – attributio) – запись об определенных параметрах каждого объекта БД.​Атрибут является основным элементом  БД.

Табличные базы данных

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

Вам будет интересно:Как удалить ReShade из PUBG

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

Столбцы таблицы называются полями и содержат конкретный атрибут сущности. Так, в таблице «Студенты» в качестве полей выступают:

  • фамилия, имя, отчество;
  • номер зачетки;
  • дата рождения;
  • номер телефона.

Вам будет интересно:Два способа, как обновить «Джаву» на компьютере

Строки называются записями и представляют отдельный реальный объект (конкретного студента).

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

С первого взгляда очевидно, что информация, хранящаяся в поле «Ф.И.О.» существенно отличается от информации в поле «№ зачетки» или в поле «Дата рождения». Так как манипуляции с разными типами данных осуществляются по разным алгоритмам, целесообразно заранее определить, какого рода сведения будут храниться в конкретном поле таблицы.

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

§ 5.1. Базы данных в электронных таблицах

Содержание урока

5.1. Базы данных в электронных таблицах

5.1. Базы данных в электронных таблицах

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

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

Таблица 5.1. База данных «Записная книжка» в табличной форме

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

Так, в базе данных «Записная книжка» содержится три записи, в каждой из которых хранятся значения четырех свойств.

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

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

Обычно на форме размещаются надписи, являющиеся именами полей базы данных, и поля, в которых отображаются данные выбранной записи базы данных (рис. 5.1).

Рис. 5.1. Первая запись базы данных «Записная книжка», отображенная на форме

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

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

Система управления базами данных (СУБД) — это приложение, обеспечивающее управление созданием и использованием базы данных.

С помощью СУБД можно создавать и редактировать базы данных, выполнять запросы пользователей (поиск и сортировка данных). Примеры СУБД: Microsoft Access, SQL Server, MySQL, OpenOffice.org Base.

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

Создание базы данных с использованием СУБД начинается с создания полей базы данных, установки их типов и ввода имен. Затем в режиме таблица или форма производится ввод, просмотр и редактирование записей базы данных. После этого в созданной базе данных можно осуществлять сортировку и поиск данных.

В электронных таблицах ввод, просмотр и редактирование записей можно осуществлять как в режиме таблица, так и в режиме форма. В электронных таблицах Microsoft Excel для вызова формы необходимо выделить ячейки с данными и ввести команду Форма…, находящуюся на панели быстрого доступа. Появится форма, содержащая запись базы данных (рис. 5.2).

Рис. 5.2. Форма, содержащая первую запись базы данных «Записная книжка»

Для того чтобы на панели инструментов появился значок Форма, необходимо настроить панель быстрого доступа с помощью контекстного меню: в списке Все команды выбрать команду Форма.

Контрольные вопросы

1. В чем состоят преимущества и недостатки табличного представления баз данных?

2. В чем состоят преимущества и недостатки представления баз данных с использованием формы?

3. В чем заключается разница между записью и полем в базе данных?

4. Поля каких типов могут присутствовать в базе данных?

5. Сравните телефонные книги для различных мобильных телефонов.

Cкачать материалы урока

Системные поля

Системные поля расширяют возможности форм, а за их значения отвечает Pyrus. Например, вы можете добавить в шаблон формы этапы согласования, утвердившего участника, срок исполнения (согласования) и отслеживать эти параметры в реестре.

Как и другие виды полей, системные поля доступны слева в редакторе шаблона.

Используйте это поле, когда нужно анализировать состояние заявок в реестре: завершены они или нет.

Добавьте это поле в шаблон, чтобы видеть в реестре, кто создавал формы.

Дата создания

Если нужно оценивать ситуацию по дате создания формы, добавьте поле этого типа в шаблон. Дата заполнения формы будет отображаться в реестре форм.

Срок

Используйте это поле, когда в форму нужно добавить дедлайн: дата оплаты, согласования, ответа на заявку и т.д.

Сроки отличаются от пользовательского поля типа Дата тем, что они отображаются в реестре форм, и по срокам можно фильтровать записи реестра. Поэтому поле этого типа обычно используют для анализа.

Помимо этого, для поля Срок можно настроить не только дату, но и конкретное время.

Если в форме есть поле типа Срок, в реестре появятся две дополнительные колонки: Просрочено и Дата завершения. Даже если задача завершена, вы увидите, уложились ли ответственные сотрудники в срок.

Подсказка: по всем просроченным задачам и укажите промежуток времени в колонке Дата завершения, чтобы оценить эффективность работы команды за период.

Еще одно отличие от типа Дата в том, что сроки видны в списке задач: число показывает количество дней до окончания срока или количество дней просрочки.

В поле Срок, как и в поле типа Дата, можно указывать значение по умолчанию и задавать его в относительных величинах. Например, указать, что срок оплаты истекает через 3 дня после заполнения заявки.

Тип таблиц¶

Исторически сложилось, что для всех таблиц CS-Cart используется MyISAM. Однако ничто не мешает вам при необходимости сменить тип таблиц на InnoDB — система будет работать корректно в этом случае.

InnoDB имеет ряд преимуществ относительно MyISAM:

  • внешние ограничения;
  • продвинутое использование индексов в последних версиях MySQL;
  • транзакции;

Примечание


Из-за особенностей внутреннего устройства запросы на запись и удаление данных в InnoDB могут занимать больше времени, чем в MyISAM.

Важно: внешние ограничения, которые вы можете добавить к таблицам в случае миграции на InnoDB, могут некорректно работать с порядком выполнения запросов изменения/удаления данных в CS-Cart. Например, при удалении категории сначала удаляется запись в таблице , а затем все дочерние товары и подкатегории

Это может вызвать проблемы с каскадными ограничениями ссылочной целостности вида / — CS-Cart на уровне PHP-кода реализует обновление и удаление связанных сущностей.

Создание новой таблицы в режиме таблицы

В режиме таблицы пользователь может создать таблицу, не определяя предварительно ее структуры.

Создание новой таблицы в режиме таблицы осуществляется выбором строки Создание таблицы путем ввода данных в рабочем поле окна базы данных или строки Режим таблицы в окне Новая таблица.

После выбора этого режима сразу открывается пустая таблица, в которую можно ввести данные. При сохранении этой таблицы Access проанализирует Данные и автоматически присвоит соответствующий тип данных каждому полю, т. е. автоматически создаст структуру таблицы. Таблица имеет 10 столбцов и 21 строку. Полям таблицы по умолчанию присваиваются имена Поле1, Поле2 и т. д.

Любое поле этой таблицы можно переименовать в соответствии с требованиями пользователя, непосредственно редактируя имена в заголовке столбцов. Для этого дважды щелкните кнопкой мыши на области выделения столбца, содержащей его имя, или выполните команду Формат | Переименовать столбец. В результате курсор будет установлен на наименовании поля и откроется возможность его переименования. Для сохранения нового имени щелкните кнопкой мыши в любом месте таблицы.

Если требуется создать таблицу, содержащую более 20 полей, то можно вставить новые столбцы. Для этого установите указатель мыши в области столбца, слева от которого требуется вставить новый столбец, и выполните команду Вставка | Столбец.

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

В каждый столбец вводятся данные определенного типа. При вводе данных, для которых определены стандартные форматы, необходимо использовать форматы из установленного для этого типа списка. Это позволяет Access автоматически определить тип данных. Свойство Формат поля остается пустым и при отображении данных используется формат по умолчанию. При сохранении таблицы все оставленные пустыми столбцы будут удалены.

По окончании ввода данных во все нужные столбцы необходимо сохранить таблицу, выполнив соответствующую команду. При сохранении таблицы выводится приглашение для создания ключевого поля. При выборе кнопки Да в таблицу будет добавлено ключевое поле типа Счетчик. Если введены данные, которые могут однозначно идентифицировать каждую запись, и их надо сделать ключевыми, то нужно нажать кнопку Нет. В этом случае пользователь должен самостоятельно создать ключ в режиме конструктора.

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

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

Следует заметить, что возможности создания таблицы в режиме ввода данных являются ограниченными и, как правило, требуют доработки таблицы в режиме конструктора. Очевидно и то, что при создании таблицы этим способом пользователь не освобождается от необходимости знать допустимые в Access типы данных и форматы их отображения.

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

Формат вводимых в поле чисел, денежных единиц, времени, и даты должен совпадать с одним из форматов, определенных для этих типов данных. В окне конструктора таблиц можно просмотреть список установленных форматов для перечисленных типов данных. Некоторые из них можно изменить на соответствующих вкладках в окне Язык и стандарты. Для отображения этого окна нажмите на панели задач кнопку Пуск, выполните команды Настройка и Панель управления и запустите программу Язык и стандарты.

Типы полей

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

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

Тип поля

Характеристика

Текстовый тип (по умолчанию)

Используется при вводе текстовой информации. Его основной особенностью является размер. Он не превышает 256 символов

Числовой тип

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

Тип дата/время

Используется для ввода даты и времени. В свойствах поля выбираем формат.

Денежный тип


Необходим для ввода информации денежного типа. Можно выбрать необходимые единицы валюты из списка формата полей или задать свой шаблон.

Тип счетчик

Предназначен для определения кода записи. Они представляют собой числовой ряд и их значения автоматически увеличиваются, не повторяясь.

Тип MEMO

Предназначен для ввода текста, превышающего 256 символов.В полях такого типа можно хранить информацию до 65 535 символов. Особенностью этого типа является то, что информация о поле хранится в другом месте, а в самом поле хранятся указатели мест размещения информации

Тип OLE

Предназначен для ввода обьектов в базу данных. Для этого используйте протокол OLE, помогающий вставить выбранный объект в поле с помощью буфера обмена. К таким объектам относятся графические файлы, аудио-, видеофайлы.

Логический тип

Есть только два логических значения: да или нет, верно или неверно, 0 или 1. Тип значений выбирается из списка, данные в формате поля. Какой бы формат не был выбран, логическое поле в таблице содержит один из двух исходов.

Гиперссылка

Ряд, выявляющий адреса букв, цифр и гиперссылок. Адрес гиперссылки состоит из следующих отделов: текст, вводимый в поле, управляющие элементы и поля адресов URL или файлов. Для задания полю гиперссылки выполняется команда Вставка – Гиперссылка и указывается ее адрес.

Мастер

подстановок

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

Дизайн СУБД

Описание приложения

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

тиками

Структура данных эмуляции биржи

Акция:

Атрибут Тип Описание
Srting Наименование
int Вероятность смены курса в процентах на каждом тике
BigDecimal Начальная стоимость
int Максимальная величина в процентах, на которую может смениться текущая стоимость

Курс акции:

Атрибут Тип Описание
LocalDateTime Время (тик) выставления курса
Акция Ссылка на акцию
BigDecimal Курс акции

Трейдер:

Атрибут Тип Описание
String Время (тик) выставления курса
int Частота совершения операций. Задана периодом, в тиках, спустя который трейдер совершает операции
BigDecimal Сумма денег, помимо акций
int Используемый трейдером алгоритм. Зададим его числом-константой, реализация алгоритма будет (в следующих частях) в Java-коде
int Вероятность выполнения операции, в процентах
String Вероятность смены курса, в процентах, на каждом тике

Действия трейдеров:

Атрибут Тип Описание
int Тип операции (покупка или продажа)
Трейдер Ссылка на трейдера
Курс акции Ссылка на курс акции (соответственно на саму акцию, её курс и время его выставление)
Long Количество акций, участвующих в операции

longуникальным

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

Хранения данных в СУБД

  • Данные в СУБД организованы в таблицы (TABLE), представляющие собой набор записей.
  • Все записи имеют одинаковые наборы полей. Они задаются при создании таблицы.
  • Для поля можно выставить значение по умолчанию (DEFAULT).
  • Для таблицы можно выставить ограничения (CONSTRAINT), описывающие требования к её данным чтобы обеспечить их целостность. Это можно сделать на этапе создания таблицы (CREATE TABLE) или добавить позже (ALTER TABLE … ADD CONSTRAINT).
  • Наиболее распространённые CONSTRAINT:
    • Первичный ключ PRIMARY (Id в нашем случае).
    • Уникальное значение поле UNIQUE (VIN для таблицы автотранспорта).
    • Проверка поля CHECK (значение процентов не может быть больше 100). Одно из частных ограничений на поле – NOT NULL или NULL, запрещающее/разрешающее хранить NULL в поле таблицы.
    • Ссылка на стороннюю таблицу FOREIGN KEY (ссылка на акцию в таблице курсов акций).
    • Индекс INDEX (индексирование поля для ускорения поиска значений по нему).
    • Выполнение модификации записи (INSERT, UPDATE) не произойдёт, если значение её полей противоречат ограничениям (CONSTRAINT).
  • Каждая таблица может иметь ключевое поле (или несколько), по которой можно однозначно определить запись. Такое поле (или поля, если они формируют составной ключ) образует первичный ключ таблицы — PRIMARY KEY.
    • Первичный ключ обеспечивает уникальность записи в таблице, по нему создается индекс, что дает быстрый доступ по значению ключа ко всей записи.
    • Наличие первичного ключа существенно облегчает создание ссылок между таблицами. Далее мы будем использовать искусственный первичный ключ: для первой записи , каждая следующая запись будет вставляться в таблицу с увеличенным на единицу значением id. Такой ключ часто называют AutoIncrement или AutoIdentity.

В чём преимущества

Базы дан­ных и их систе­мы управ­ле­ния зато­че­ны на рабо­ту с боль­шим объ­ё­мом дан­ных и от лица боль­шо­го чис­ла поль­зо­ва­те­лей. Сей­час вы пой­мё­те.

Ско­рость — ещё одно пре­иму­ще­ство базы дан­ных. База дан­ных устро­е­на так, что она лег­ко и быст­ро нахо­дит, запи­сы­ва­ет, пере­пи­сы­ва­ет и сно­ва нахо­дит дан­ные. Всё пото­му, что СУБД все­гда зна­ет, что где лежит и по како­му кри­те­рию искать. Там не будет слу­чай­ных дан­ных в слу­чай­ном месте.

Ско­рость важ­на ещё и пото­му, что СУБД обыч­но обслу­жи­ва­ет сра­зу мно­го пото­ков: одно­вре­мен­но ей могут поль­зо­вать­ся десят­ки и сот­ни тысяч чело­век, поэто­му ей неко­гда копать­ся. В хоро­шо сде­лан­ных БД всё мол­ние­нос­но.

Слож­ность. Базы дан­ных нуж­ны в чис­ле про­че­го для хра­не­ния слож­но струк­ту­ри­ро­ван­ных дан­ных. Мы при­вык­ли думать, что база дан­ных — это такая таб­ли­ца, где есть стро­ки и столб­цы. Но база дан­ных при пра­виль­ной орга­ни­за­ции может намно­го боль­ше:

  • Свя­зы­вать одну еди­ни­цу дан­ных с мно­же­ством дру­гих. Напри­мер, если один чело­век совер­шил мно­го зака­зов со мно­же­ством това­ров внут­ри каж­до­го, база дан­ных спо­соб­на хра­нить и обра­ба­ты­вать такие свя­зи.
  • База может хра­нить дере­во дан­ных — вро­де того, о кото­ром мы писа­ли недав­но. Попро­буй в реаль­ной жиз­ни похра­нить дере­во!
  • В базах могут жить ссыл­ки на дру­гие фраг­мен­ты и отде­лы базы.

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

Создание и заполнение баз данных

Типы и форматы полей базы данных

Создание базы данных связано с описанием структуры будущих таблиц. Этот этап работы выполняется в среде СУБД. Пользователь должен указать имена всех полей таблицы, их типы и форматы.

Типы и форматы полей базы данных

Типы полей. Выше уже говорилось о четырех типах полей: символьном, числовом, логическом и «дата». В некоторых СУБД используются и другие типы полей, например, «Время», «День недели», «Адрес» и пр. Кроме того, многие СУБД позволяют создавать поля типа «Примечание». Дело в том, что размер символьного поля обычно ограничен величиной 255 символов. Текст большего размера в него уже не поместится. Примечание позволяет хранить практически неограниченный текст. Он будет храниться в отдельном файле и при необходимости может быть извлечен для чтения.

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

Формат числового поля обычно состоит из двух частей: длины и точности. Длина — это полное количество символьных позиций, выделяемых под запись числа; точность — это количество позиций, выделенных под дробную часть. Следует иметь в виду, что десятичная запятая тоже занимает позицию. Например, формат записи числа 123,45 такой: длина — 6, точность — 2. Целое число, т. е. число без дробной части, имеет точность 0.

Формат логической величины стандартный — один символ. Чаще всего используются однобуквенные обозначения: Т — true (истина), F — false (ложь). В нашем учебнике для этих величин используются обозначения русскими буквами: И — истина, Л — ложь.

Формат даты обычно имеет длину 8 символов. Правда, бывают разные стандарты. Мы будем здесь использовать стандарт ДД/ММ/ГГГГ (или ДД.ММ.ГГГГ, или ДД-ММ-ГГГГ). Здесь ДД — обозначение числа, ММ — месяца, ГГГГ — года. Иногда используется стандарт ММ/ДД/ГГГГ. Бывают и другие обозначения.

Для примера в табл. 3.3 описаны типы и форматы полей из базы данных «Погода».

Создание новой базы данных

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

. создать <имя файла> пользователю предлагается заполнить таблицу типа таблицы 3.3. Затем необходимо указать первичный ключ таблицы. В данном примере первичным ключом является поле ДЕНЬ. Имя файла, в котором будет храниться база данных, пользователь задает сам.

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

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

Реляционная база данных


Поле – это столбец таблицы, отражающий определенные свойства объекта.​Запись представляет собой строку таблицы, содержащую набор значений, описанных в полях базы данных.​Ключевое поле – поле, которое однозначно идентифицирует запись в таблице. В ключевом поле чаще всего располагаются порядковый номер, инвентарный номер, коды продуктов и другие. Когда создавались первые базы данных, в них данные только хранились. Но многие современные системы управления базами данных включают не только хранение данных, они также способны решать самые разнообразные задачи. Современные базы данных являются основой многих информационных систем. Информация, которую они содержат, является ценным материалом.

В настоящее время широко распространены способы обработки данных, которые тесно связаны с различными дополнительными действиями с данными. В этой концепции база данных будет действовать как хранилище данных, и это направление называется «Хранилище данных» (Data Warebouse). Известно, что база данных является популярным понятием на сегодняшний день. В то же время информационные системы, использующие базы данных в области развития науки, здравоохранения, банков и производственных компаний, динамично развиваются.

запрос

форма

отчеттаблица

  • Предназначен для печати данных в красиво оформленном виде
  • Базовый объект БД, на основании которого создаются другие объекты
  • Осуществляет отбор данных на основании заданных условий
  • Позволяет отображать данные, содержащиеся только в одной записи

Таблицы и отношения

С точки зрения реляционных моделей баз данных, таблицы можно считать удобным представлением отношения, но эти два понятия не являются строго эквивалентными. Например, в SQL таблицы в принципе могут содержать повторяющиеся строки, в то время как истинное отношение не может содержать одинаковые кортежи. Аналогичным образом, представление в виде таблицы подразумевает конкретный порядок для строк и столбцов, в то время как в отношениях они неупорядочены. Однако система баз данных гарантирует определенный порядок строк при выдаче таблицы, только если параметр указывается в операторе , который запрашивает таблицу.

Отношение можно также представить в виде N-мерного графика, где n — количество атрибутов (столбцов таблицы). Например, отношение с двумя атрибутами и тремя значениями можно представить как таблицу из двух столбцов и трех строк, или как двумерный график с тремя точками. Представления таблиц и графиков эквивалентны только в том случае, если порядок строк не важен, а в таблице нет повторяющихся строк.

Использование подтипов

Подтипы представляют собой классификации, созданные в рамках класса пространственных объектов или таблицы в базе геоданных. Они также позволяют вам объединять пространственные объекты в логические группы на основании уникальных характеристик или модели поведения данных. Эта характеристика или модель поведения представляется в виде значений какого-то поля в таблице. Например, для таблицы гидрологических данных, вы можете определить подтипы для различных типов русел: ручьев, горных ручьев, протоков, каналов и рек. Для каждого из этих подтипов вы можете использовать различные правила топологии, правила связности, значения по умолчанию и правила отношений.

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

Вот правила, применяющиеся для подтипов:

  • В таблице или классе пространственных объектов только одно поле может иметь определенные для него подтипы.
  • Поле, на основе которого создаете подтип, должно иметь тип длинное целое (long integer) или короткое целое (short integer).
  • Вы можете использовать различные правила топологии и отношений для различных подтипов. Можно также использовать различные атрибуты или домены с кодированными значениями для других полей в таблице на основании подтипов.

    Для каждого подтипа можно применять отдельный домен к полю.

Чтобы узнать, как создать и применить подтипы, см. разделы обзор подтипов и создание, изменение и удаление подтипов.

Добавляем таблицы в базу данных

Очевидно, что информация, в данный момент находящаяся в базе дан­ных, является недостаточной, поскольку не известно, из каких пунк­тов состоит каждый заказ. Если помните, составляющие заказов были опущены сознательно, при этом мы обещали вернуться к этой пробле­ме позже. Пришло время распределить товары по заказам.

Проблема состоит в том, что заранее не известно, сколько пунктов со­держит каждый заказ (аналогично тому, как заранее не известно, сколько заказов может разместить каждый из клиентов). Заказ мо­жет включать в себя один, два или даже сто товаров. Необходимо отде­лить информацию о том, что клиент сделал заказ, от деталей самого заказа. Следует попытаться создать нечто, подобное изображенному на рис. 2:

Рис. 2. Расширяем базу данных «Клиенты и заказы»

Как и при создании таблиц customer и orderinfo, разделим информацию на две таблицы, а затем объединим их. Правда при этом возникает одна небольшая проблема.

Если тщательно проанализировать отношения между заказом и от­дельными товарами, станет ясно, что не только каждая запись из or- derinfo может быть связана со многими товарами, но и один и тот же товар может присутствовать во многих заказах (если несколько клиен­тов заказали один и тот же товар). Попытаемся изобразить эти две таб­лицы на диаграмме сущностей (рис. 3):

Рис. 3. Отношение между таблицами заказов и товаров

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

Можно попытаться обойти эту проблему, создав отдельную запись в каждой строке таблицы item для каждого заказа, но тогда придется многократно повторить описание и информацию о цене для каждого товара, что нарушило бы правило третье (удалять повторяющуюся ин­формацию!).

Что касается на­шей проблемы, то для нее существует стандартное решение. Необхо­димо создать третью таблицу между двумя существующими, она будет реализовывать отношение «многие-ко-многим». Надо сказать, что объ­яснять сложнее, чем делать, поэтому просто создадим эту третью таб­лицу, , которая свяжет заказы с товарами.

Создана таблица, строки которой соответствуют каждой строчке зака­за (рис. 4). Для каждой отдельной строки можно определить, из ка­кого она заказа, по столбцу , а товар, на который она ссы­лается, — по столбцу .

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

Рис. 4. Добавление в базу данных таблицы

Обратите внимание, что в новую таблицу не введен уникальный иден­тификатор для каждой строки. Дело в том, что комбинация orderin- fo_id и всегда уникальна

Но и здесь есть одна почти незамет­ная проблема. Что произойдет, если клиент закажет два экземпляра товара в одном заказе?

Просто ввести еще одну строку в нельзя, поскольку комбина­ция и должна быть уникальной. Неужели придет­ся добавить еще одну специальную таблицу для обслуживания зака­зов, содержащих несколько экземпляров одного товара? К счастью, нет. Есть гораздо более простой способ. Надо просто ввести поле «ко­личество» (quantity) в таблицу , и все будет хорошо.


С этим читают