Шаг 104 - Oracle - Таблица - Ключевой блок БД

Ранее мы с вами рассматривали блоки сервера Oracle и упоминали такое фундаментальное понятие как - ТАБЛИЦА. По своей сути это, пожалуй, основной строительный модуль БД. Он является вместилищем всех данные, которые содержит ваша БД. Что же такое таблица. Давайте разберемся с ней подробнее. Но, для начала немного теории. Я думаю, что это не будет скучно. А, в дальнейшем очень поможет нам разобраться во многих понятиях. Первое и самое основное - что есть База Данных?

Звучит примерно следующим образом: база данных - это совокупность данных, организованных с определенной целью.

Организована - означает, что указанная совокупность включает данные, которые сохраняются, имеют определенный формат (отформатированы) к ним может быть обеспечен доступ (доступны) и они могут быть представлены потребителю информации в приемлемом виде (репрезентативны). Естественно БД, должна обеспечивать, целостность данных (integrity) т.е. согласованность отдельных фрагментов данных и их корректность. Понятие согласованность (consistency) означает, что все порции данных в БД должны быть единообразно смоделированы и включены в систему. (Что, далеко не часто выполняется проектировщиками БД). Многие из этих понятий для баз данных были сформулированы в 1970 году Е.Ф. Коддом (E.F.Codd), в так называемой реляционной модели (relational model). В то время было очень много концепций хранения и работы с данными. В основном использовались иерархические (IMS) и сетевые (IDMS). А, до них, БД строились на базе файлов с последовательным доступом или как их называли "плоских" файлов (flat files). Вот тогда и появилась СУРБД DB2, сыгравшая свою ключевую роль во всем этом. Давайте присмотримся внимательнее к сути реляционной модели.

Согласно определению, реляционная модель имеет два главных свойства:

  1. Базовые порции данных представляют собой - отношение (relations).
  2. Операции над таблицами затрагивают только отношения - реляционные выражения (relation closure).

Вот здесь мы и подходим наверное к самой сути. Что же такое отношения? По своей природе это математическая концепция, описывающая как соотносится межу собой элементы двух множеств. Так вот корни (которые мы иногда теряем :)) реляционной модели лежат в области математики. Как собственно и все что, хоть как-то связано с программированием и компьютерной тематикой. А вот для нашей предметной области отношение - это не что иное, как таблица с некоторыми специальными свойствами. Ура! Наконец подошли к нашей основной теме! Еще не слишком скучно вдумываться во все, что я излагаю? Думаю, что нет! :) Реляционная модель предусматривает организацию данных исключительно в виде таблиц (и никак иначе, хотя уже существуют, совершенно новые концепции хранения данных)! БД Oracle (как впрочем и во многих других) ТАБЛИЦА - базовый языковой объект (langua franca). Посмотрим на рисунок.

104_1.gif (16601 b)

Таблица представляет собой множество (думаю можно сказать двумерное) именованных атрибутов. Основные из которых столбцы (columns) и записи (rows) или строки. Как правило отдельные столбец (column) называют полем (field) таблицы. Пересечение строки и столбца как в двухмерной системе координат (X,Y), образует ячейку (cell) таблицы. Набор допустимых значений столбца - домен (domain) характеризуется определенным типом данных, например символьным или целым и т.д. Строки же представляют собой данные. Все это можно описать, например, в языке C++ или таком новом концепте как C#, как двумерные массивы. Столбцы columns и записи rows, это не что иное как МАССИВЫ данных. Если это четко представлять, то трудностей в работе с таблицами не будет! Ладно, еще немного и я скачусь к описанию работы с таблицами в ADO.NET, а это уже злостное отвлечение от темы! :) Давайте пока посмотрим на рисунок.

104_2.gif (8203 b)

Здесь представлена классическая, форма организации таблицы БД в 1НФ. Что такое 1НФ я еще расскажу. А, пока давайте рассмотрим требования предъявляемые к таблицам БД реляционной моделью данных:

  1. Данные в ячейках таблицы должны быть структурно не делимы! Каждая ячейка может содержать только одну порцию данных. Это свойство часто определяется как принцип информационной неделимости - недопустимо, чтобы в ячейках таблицы содержалось более одной порции данных. Еще это называют информационным кодированием (information coding).
  2. Данные в одном столбце должны быть одного типа.
  3. Каждая строка должна быть уникальной (недопустимо дублирование строк).
  4. Строки (записи) должны размещаться в таблице в произвольном порядке.
  5. Столбцы должны иметь уникальные имена.

Давайте раскроем некоторые из этих понятий. Начнем с начала. Наиболее частая ошибка, допускаемая при проектировании и наполнении таблиц! Например следующее:

Создают таблицу, в которой присутствует поле(!) ФИО! Т.е. одна ячейка (cell) таблицы содержит - фамилию, имя и отчество! Это просто не допустимо с точки зрения правил построения реляционных таблиц. Эти данные дожны содержаться как минимум в трех(!) полях.

Далее второй пункт. Так же почти постоянно нарушается. Например записывают в одной ячейке улица дом, квартира! Такие данные как правило содержат как символьные, так и числовые данные! Что, никак не должно смешиваться в одной ячейке таблицы!

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

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


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Летучий Сергей - 27.02.2004