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

Вы можете авторизоваться на сайте всего одним кликом:

2016-07-11
Основы Баз Данных → Разные сущности лучше хранить отдельно
Как правильно проектировать базу данных

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

Разные сущности лучше хранить отдельно

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

Что если какой-либо активный пользователь вашего сайта, изменит адрес электронной почты? Он начнет отправлять материалы, указывая новые сведения, а добавленные ранее записи останутся привязанными к его старому адресу. За­глянув в базу данных, вы подумаете, что записи сделаны двумя разными людьми с одинаковыми именами. Конечно, пользователь может уведомить Вас об изменении личных данных и Вы попытаетесь обновить данные во всех его материалах, указав новый адрес. Однако если Вы пропустите хотя бы одну запись, содержимое вашей базы станет некорректным. Специалисты в области проектирования называют такого рода проблемы аномалиями обновления.

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

SELECT DISTINCT authorname, authoremail
FROM material

Слово DISTINCT предотвращает вывод дублирующихся строк. Например, если некий пользователь добавил на сайт 20 записей, то благодаря этому параметру его имя появится в общем списке всего один раз, а не 20.

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

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

Сструктура базы данных подразумевает хранение двух видов сущностей (материалов и авторов), поэтому здесь наиболее подходит вариант с двумя таблицами. Всегда руководствуйтесь данным принципом при проекти­ ровании баз данных: каждый тип объекта (или сущность), должен располагаться в отдельной таблице.

472
0
Пожалуйста, авторизируйтесь, чтобы скачать архив с файлами урока