|
Программирование >> Руководство по sql
мере является вопросом физического проектирования, нежели логического и обсуждается в главах 3 и 10. Плохая структура базы данных приводит к непониманию результатов выполнения запросов; повышает риск введения в базу данных- противоречивой информации; порождает избыточные данные; усложняет выполнение изменений структуры созданных ранее и уже заполненных данными таблиц. Не сушествует идеального решения, полностью удовлетворяюшего все требования, предъявляемые при проектировании баз данных. Часто вы чем-то жертвуете, основываясь на требованиях и особенностях приложений, которые будут использовать вашу базу данных. Описание нашей базы данных в первую очередь, обращаем ваше внимание, что база данных bookbiz является исключительно учебной базой данных. Ее основное назначение - обеспечить вас небольшим набором интересных данных, манипулируя которыми вы сможете изучить синтаксис и семантику языка SQL. База данных bookbiz содержит информацию о не существующей на самом деле компании, занимающейся издательской деятельностью и имеющей три дочерних издательства. В ней представлены данные, которые могут потребоваться редакторам, менеджерам и другим сотрудникам компании - информация о книгах, их авторах, редакторах, о финансовом состоянии компании. На их основе можно получать самые разнообразные отчеты, например о текущих продажах, сравнивать книги разных издательств, узнать, какие редакторы работали с какими авторами и т.д. Пользователи базы данных bookbiz могут задавать самые разные запросы. Кто из авторов проживает в Калифорнии? Какие книги стоят больше $9.95? Кто написал самое большее количество книг? Чем мы обязаны автору книги Life Without Fear (Жизнь без страха)? Какова средняя стоимость книг по психологии? Как повлияет на авторский гонорар увеличение на 10% стоимости книг по кулинарии? Как продаются книги по компьютерам? Разрабатывая базу данных, даже не пытайтесь представить себе, какой из запросов будет наиболее важным для будущих пользователей вашего детища. Исследуйте их потребности на основе имеющегося у вас набора данных и личных бесед с пользователями. Важной областью исследований являются бизнес-правила и политика вашей организации, которые могут оказывать влияние на данные. База данных bookbiz учитывает следующие особенности: автор может написать несколько книг; книга может быть написана несколькими авторами; порядок фамилий авторов на первой странице является критической информацией, так как влияет на получаемый ими гонорар; редактор может работать над несколькими книгами, и в каждой книге может быть несколько редакторов; в заказе на покупку может быть перечислено несколько книг. ДАННЫЕ И ВЗАИМОСВЯЗИ Мы начнем рассмотрение структуры базы данных bookbiz с построения простой модели взаимосвязи объектов. В самых общих чертах такое моделирование (иногда называемое объектным моделированием) подразумевает определение объектов, информация о которых будет содержаться в базе данных; свойств этих объектов; взаимосвязей между ними. Объекты Сначала рассмотрим объекты, на основе которых будет построена база данных bookbiz. Без учета финансовой информации список объектов будет выглядеть так: авторы, книги которых опубликованы компанией; сами книги; редакторы, работающие на компанию; издательства, которыми владеет компания. Каждый пункт в этом списке описывает объект, существующий независимо от других объектов в мире базы bookbiz. Каждый такой объект представляется отдельной таблицей. (Ряд других объектов также представлен в этой базе данных отдельными таблицами, но пока не будем забегать вперед.) Каждый из этих объектов обладает собственными свойствами, которые также записаны в базе данных. Среди них название книги стоимость книги дата выхода книги имя автора адрес автора номер телефона автора имя редактора адрес редактора номер телефона редактора название издательства адрес издательства Каждый пункт этого списка описывает отдельное свойство или атрибут рассматриваемого объекта (автор, книга, редактор или издательство) и является потенциальным столбцом в базе данных. Названия столбцов должны быть предельно ясными (назначение столбца должно быть понятно из его названия) и краткими (чтобы упростить ввод их названий и уменьшить их ширину). Создание списка объектов и их свойств должно помочь вам решить, какие таблицы и столбцы нужно включить в базу данных. В результате вы можете получить, например, следующий макет базы: Таблица titles
Другой способ представления информации используется в диаграммах взаимосвязей между объектами (рис. 2.1). Обычно каждая таблица представляется на такой диаграмме в виде прямоугольника, содержащего в себе, кроме того, названия полей. Этот макет из четырех таблиц, каждая из которых имеет по несколько столбцов, является первым щагом на пути построения реальной базы данных. Вы можете представить себе, что каждая таблица будет содержать множество строк данных. Каждая строка в таблице описывает вхождение (occurrence) или экземпляр (instance) объекта - отдельную книгу, автора, редактора или издательство. Одна из задач проектирования базы данных состоит в обеспечении способа идентификации различных объектов, другими словами, система должна уметь отличать друг от друга отдельные строки таблицы. Как мы уже отмечали, строки отличаются друг от друга по значению первичного ключа таблицы. Неформально, первичный ключ - это столбец или набор столбцов, однозначно определяющий строку. titles name price pubdate publishers name address editors name address phone Рис. 2.1. Макет базы данных bookbiz Первичные ключи. Что будет первичными ключами для каждой из этих таблиц? Рассмотрим таблицу authors. Среди ее столбцов очевидным кандидатом на первичный ключ является пате. Авторов всегда можно различить по имени. Однако использовать этот столбец в качестве первичного ключа достаточно проблематично по нескольким причинам. Во первых, значения в столбце пате состоят из имени и фамилии автора. Объединение в одном столбце имени и фамилии обычно является не слишком дальновидным поступком, хотя бы потому, что в некоторых системах бывает трудно (а иногда просто невозможно) выполнить алфавитную сортировку по фамилиям. Таким образом, первым необходимым изменением (рис. 2.2) будет разбиение столбца пате на два отдельных столбца (как в таблице authors, так и в таблице editors). Теперь, возвращаясь к вопросу о выборе первичного ключа в таблице authors, для этих целей можно использовать комбинацию столбцов aujname и аиJname. Эта комбинация будет удовлетворять нас, пока таблица не разрастется до такой степени, что в ней появятся авторы с одинаковыми именами и фамилиями. Например, как только в таблице появятся две Магу Smitlis, комбинация полей aujname и аиJname перестанет однозначно идентифицировать каждого автора. authors aujname aujname address phone publishers name address editors edJname edjname address phone Рис. 2.2. Разделение имен авторов и редакторов на два столбца
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |