1. Вы находитесь в архивной версии форума xaker.name. Здесь собраны темы с 2007 по 2012 год, большинство инструкций и мануалов уже неактуальны.
    Скрыть объявление

Уроки "Базы данных". Или SQL с нуля.

Тема в разделе "Программирование", создана пользователем ~|~евто|-|, 23 май 2008.

  1. ~|~евто|-|

    ~|~евто|-| Silentium ..::V.I.P::..

    Регистрация:
    26 май 2007
    Сообщения:
    30
    Симпатии:
    377
    Баллы:
    0
    Вместо введения

    Решился таки начать цикл статей, о изучении теории БД с нуля.
    Для всяких скептиков, сразу скажу, я не ставлю целью написать всеобъемлющий мануал по БД, по какой-то конкретной СУБД. Я хочу научить думать человека, как спроектировать и создать реляционную БД.
    Примеры будут выкладываться на 2-х СУБД, кому какую лучше, вопрос спорный, это phpmyadmin(БД - mySQL) и MS Access(БД одноименная).

    И так приступим.

    Зачем вообще нужны БД?
    БД появились еще на заре развития вычислительной техники. И основной целью их было хранение больших объемов информации, и быстрый доступ к ней.
    Под большими объемами в разное время понимали разные вопросы, да и сейчас, область использования БД, очень разная. Кто-то использует базы данных, для того чтобы хранить историю своих покупок, кто-то для портала(форума), а кто-то использует мощные БД, например для сохранения информации о работе целой корпорации.

    Исторически так сложилось, что на момент написания статьи самые популярые и основные БД, реляционные.

    Вот их мы и будет рассматривать.
    От вас требуется желание, установить одну из предлагаемых СУБД и пиво, без него никак нельзя изучать нашу тему =)

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

    И так. Мы выделил 4 основополагающих понятия: Пользователь, Тема, Сообщение и разделы. Эти все 4 понятия в теории БД, называются сущностями.
    Каждая сущность имеет какие то свои характеристики. Рассмотрим пользователя:
    1. ID - уникальный номер каждого пользователя
    2. Ник
    3. Дата регистрации
    4. Аватара
    5. Подпись
    6. Репутация
    7. Количество собщений и т.д.

    Каждая тема так же имеет свои характеристики:
    1. ID - уникальный номер темы
    2. Название
    3. Дата создания
    4. В каком разделе она создана
    5. Кто создал и т.д.

    Каждое сообщение имеет свои характеристики:
    1. ID - уникальный номер сообщения
    2. Дата создания
    3. Заголовок сообщения
    4. Текст сообщения
    5. Кто создал
    6. В какой теме создано и т.д.

    Разделы так же имеют характеристики:
    1. ID - уникальный номер раздела
    2. Название
    3. Спискок модераторов и т.д.

    Так вот характеристики сущностей называются атрибутами.

    И так =) Мы сделали уже многое. Вы определились с сущностями и их атрибутами.

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

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

    Теперь поговорим о самих связях.
    Связей может быть 3 вида:
    1. Один к одному.
    2. Один ко многим
    3. Многие ко многим.

    Рассмотрим каждый тип отдельно:
    1. Один к одному
    Связь очень не явная. Иногда ей пренебрегают и объеденяют в 2 сущности в одну. Примером может служить... Пользователь и его описание. Например можно сделать сущность пользователь в которой будут атрибуты: ID и ник, а все остальное вынести в отдельную сущность, в которой будут хранится аватара, дата регистрации, репутация, подпись и т.д. Но в общем зачастую таких связей не делают. Гораздо выгоднее, зачастую, объеденить 2 такие сущности в одну(почему объясню попозже).
    2. Один ко многим
    Это самая пожалуй простая и понятная связь. ОДИН пользователь может создавать МНОГО тем, несколько сообщений. В ОДНОМ разделе может быть МНОГО тем, и т.д.
    3. Многие ко многим
    Одна из самых сложных для понимания связей. Тут попрошу некоторого внимания. Например. Любое сообщение может редактировать: автор, модератор, администратор. Так как модераторов и администраторов много, то получается что МНОГИЕ администраторы и модераторы могут редактировать, МНОГИЕ сообщения.
    Еще пример с форумом найти тяжело, поэтому покажу эту связь, еще с книгами и авторами. Есть автор. Есть книга. У книги может быть МНОГО авторов, у каждого автора может быть МНОГО книг.
    Еще пример с продажами. Есть товар. Есть покупатели. Товар могут покупать МНОГИЕ покупатели, и каждый покупатель может покупать МНОГО разных товаров.

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

    Написано для x-coder.ru
    ЗЫ: Более полную версию, читайте там же =)
     
    3 пользователям это понравилось.
  2. rijy

    rijy Команда форума Админ

    Регистрация:
    5 авг 2006
    Сообщения:
    521
    Симпатии:
    224
    Баллы:
    0
    с удовольстивем бы прочитал бы более полную версию..
    на нашем форуме)
     
  3. ip0.0.0.0

    ip0.0.0.0 Продвинутый

    Регистрация:
    20 фев 2008
    Сообщения:
    0
    Симпатии:
    167
    Баллы:
    0
    ~|~евто|-|, продолжи тему пожалуйста!
     

Поделиться этой страницей