Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Программы Обои   Экспорт RSS E-Books
 
 

   Базы данных -> Разное -> Технология управления данными



                            
                            Технология управления данными
                         Советы для начинающих программистов
                                                             
                      Как проектировать реляционную базу данных
                                        
                                                         Алан Шварц
                                                                 
            Почему используется реляционная база данных? Пусть вам необходимо
       срество для отслеживания уплаты ренты. Если  вы  разложите  данные  по
       пользователям,  операциям и средствам в одну таблицу, это причинит Вам
       немало хлопот. Суммирование значений по каждому покупателю  и  каждому
       виду платежа включает все новый и новый ввод данных, что вызывает неп-
       роизводительную  трату  времени  и дисковой памяти. Помимо этого, одна
       таблица не оставляет места человеческой ошибке - если инициалы пользо-
       вателя введены однажды, но не при последующих обращениях, вы не сможе-
       те сгенерировать точные отчеты. И если вы произведете сложение рабочих
       полей по каждой операции, вы столкнетесь с трудностями при  документи-
       ровании.  Решение  заключается  в хранении информации о пользователях,
       операций и результатов в отдельных таблицах и установлении связей меж-
       ду ними.
            Когда две таблицы имеют реляционную связь, перемещение по записям
       одной таблицы (порождающей) влечет за собой соответствующее  перемеще-
       ние  по  записям  в другой (порождаемой). То есть, пока вы работаете с
       отдельной операцией, текущая запись в таблице пользователей будет пос-
       тоянно содержать данные по  пользователю  этой  операции.  Реляционная
       связь  требует,  чтобы  две таблицы имели часть общих данных - обычно,
       хотя и не обязательно - одно поле.
            В DBASE, где каждая таблица - собственный файл данных,  вы  могли
       бы  назвать таблицы CUSTOMER.DBF, TRANS.DBF и PRODUCT.DBF. Перед уста-
       новлением связи порождаемый файл должен быть проиндексирован  по  тому
       полю, по которому он связан с порождающим. Затем использованием коман-
       ды  SET RELATION устанавливается текущая связь. Например, для построе-
       ния связи от TRANS.DBF к CUSTOMER.DBF вам следовало бы вводить  коман-
       ды, подобные следующим, полагая, что оба файла данных имеют идентичные
       поля под названием CustID:
       
            SELECT 1
            USE Customer INDEX CustID
            SELECT 2
            USE Trans INDEX Transcust,Transprod
            SET RELATION TO CustID INTO Customer
            
 
            
               РАЗУМНОЕ  ПРОЕКТИРОВАНИЕ ОЗНАЧАЕТ МОЩНОСТЬ БАЗЫ ДАННЫХ
                          
        г==========¬      г==========¬       г==========¬     г=========¬
        ¦          ¦      ¦          ¦       ¦          ¦     ¦         ¦
        ¦  TRANS   ¦      ¦ CUSTOMER ¦       ¦  TRANS   ¦     ¦ PRODUCT ¦
        ¦==========¦      ¦==========¦       ¦==========¦     ¦=========¦
        ¦          ¦      ¦Идентифи- ¦       ¦Идентифи- ¦     ¦Идентифи-¦
        ¦ Операция ¦      ¦катор поль¦<------¦катор поль¦  -->¦катор про¦
        L==========-      ¦зователя  ¦       ¦зователя  ¦  ¦  ¦дукции   ¦
        -----------¬      ¦==========¦       ¦==========¦  ¦  ¦=========¦
        ¦   Имя    ¦      ¦          ¦       ¦Идентифи- ¦  ¦  ¦         ¦
        +----------+      ¦   Имя    ¦       ¦катор про-¦---  ¦ Описание¦
        ¦          ¦      ¦==========¦       ¦дукции    ¦     ¦=========¦
        ¦Адрес и др¦      ¦          ¦       ¦==========¦     ¦         ¦
        L-----------      ¦Адрес и др¦       ¦Дата опе- ¦     ¦ Катего- ¦
        г==========¬      L==========-       ¦рации и др¦     ¦ рия и др¦
        ¦ Продукция¦                         L==========-     L=========-
        L==========-
        -----------¬
        ¦ Описание ¦
        +----------+
        ¦          ¦   ---¬
        ¦ Категория¦   ¦  ¦  - избыточные  данные
        L-----------   L---
        г==========¬
        ¦Дата опе- ¦
        ¦рации и др¦
        L==========-
              
              Попытка представления всех ваших данных в одной таблице (слева)
         приводит  к избыточности данных. Лучше сформировать несколько таблиц
         для представления данных и использовать указатели отношений для свя-
         зи между ними.
         
       --------------------------------------------------------------------
              
              
            Тогда при любом обращении к другой операции запись текущего поль-
       зователя была бы единственной,  поле  CustID  которой  идентично  полю
       CustID текущей операции. Тo ecть, команда:
         
         ? CUSTOMER -> Name
              
       возвращает имя пользователя текущей операции. Этот принцип применяется
       ко всем действиям с базами данных, включая работу с экранами, списками
       и отчетами.
            Для  полей,  используемых  для связывания таблиц, не требуются ни
       такое же имя, ни 100-процентная  идентичность  данных.  DBASE-операция
       EXACT  -  один из способов проверки того, насколько точно должны соот-
       ветствовать поля. При EXACT OFF (oтмена)  операция  с  идентификатором
       пользователя  "АС-1"  могла  бы  вызвать обращение к пользователю, чей
       идентификатор - "АС-12"; при EXACT ON требуется  точное  соответствие.
       Выбор значения ЕXACT ON или OFF зависит от ситуации, но вы всегда дол-
       жны знать, какое значение вы присвоили EXACT оператором SET EXACT.
            Для того, чтобы учесть имя пользователя и результат каждой опера-
       ции, вам необходимо установить отношения между базой  данных  TRANS  и
       обоими другими файлами. DBASE III Plus допускает только одно отношение
       порождения, но это можно обойти, полагая, что порождающий файл - один,
       в то время как на самом деле - другой, как показано ниже:
       
            SELECT 3
            USE Product INDEX ProdID
            SELECT Customer
            SET RELATION TO Trans->ProdID INTO Product
            SELECT Trans
            SET RELATION TO CustID INTO Customer
            
            Для  всех  практических применений база данных TRANS является по-
       рождающей в обоих отношениях. Но поскольку отношение с  PRODUCT  уста-
       новлено,  пока выбрана база CUSTOMER, DBASE позволяет второе отношение
       между TRANS и CUSTOMER.
            Такая хитрость не является необходимой  для  DBASE  IV,  Foxbase,
       FoxPro  или Clipper. Эти пакеты разрешают множественные отношения, та-
       кие как:
       
            SET RELATION TO ProdID INTO Product, TO CustID INTO Customer ,
            
              Это лучшее средство для установления отношений.
            Конечно,  программисты часто пользуются более чем одним средством
       одновременно, требуя установить отношение один-к-многим между TRANS  и
       PRODUCT. Перенесем, впрочем, эту беседу на другое время.


	   


 

 
Интересное в сети
 
10 новых программ
CodeLobster PHP Edition 3.7.2
WinToFlash 0.7.0008
Free Video to Flash Converter 4.7.24
Total Commander v7.55
aTunes 2.0.1
Process Explorer v12.04
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full


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

Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.