откуда вы знаете, как проектировать базу данных MySQL при создании расширенного приложения PHP?
Вопрос
Я никогда не создавал корзину или форум на PHP.помимо просмотра и анализа проектов других людей или просмотра руководств, в которых показано, как создать такой проект или как быть таким проектом.откуда человеку знать, как спроектировать структуру базы данных для создания такой вещи?Я предполагаю, что это, вероятно, методом проб и ошибок...
Решение
Основной метод, который вы можете изучить при проектировании базы данных, называется Нормализация базы данных.
Нормализация базы данных имеет свои ограничения, особенно если у вас много транзакций.В какой-то момент вас могут заставить Денормализовать.
Но, по моему мнению, всегда лучше начинать с нормализованного дизайна базы данных.
Другие советы
вам следует прочитать и понять основы нормализация.для большинства проектов нормализация к 3-й нормальной форме подойдет.всегда есть определенные сценарии, когда вам нужна более или менее нормализация, но понимание лежащих в ее основе концепций позволит вам подумать о том, как структурирована ваша база данных в нормализованном формате.
вот очень простой пример нормализации таблицы:
students
student_id
student_name
student_class
student_grade
довольно стандартная таблица, содержащая различные данные, но мы сразу видим некоторые проблемы.мы видим, что имя учащегося зависит от его идентификатора, однако учащийся может обучаться более чем в одном классе, и каждый класс предположительно будет иметь разную оценку.тогда мы можем подумать о таблицах как таковых:
students
student_id
student_name
class
class_id
class_name
это неплохо, теперь мы видим, что у нас разные ученики и разные классы, но мы не фиксировали оценки учеников.
grades
student_id
class_id
grade
теперь у нас есть третья таблица, которая позволяет нам понять связь между конкретным учеником, конкретным классом и оценкой, связанной с этим классом.из нашей первой исходной таблицы теперь у нас есть 3 таблицы в нормализованной базе данных (предположим, что нам больше не нужно нормализовать оценки, например :))
несколько вещей, которые мы можем почерпнуть из этого очень простого примера:
- все наши данные привязаны к некоторому ключу (student_id, class_id и Student_id + class_id).это уникальные идентификаторы внутри каждой таблицы.
- с помощью наших ключевых отношений мы можем связывать информацию друг с другом (в скольких классах учится студент № 4096?)
- мы видим, что наши таблицы теперь не будут содержать повторяющиеся данные (подумайте о нашей первой таблице, где Student_class может иметь одно и то же значение для многих студентов.если бы нам пришлось изменить имя класса, нам пришлось бы обновить все записи.в нашем нормализованном формате мы можем просто обновить имя_класса для идентификатора_класса)
Я бы также рекомендовал использовать визуальный редактор для создания схемы базы данных.Недавно я использовал: http://dev.mysql.com/workbench/
После того как вы создадите проект базы данных, попросите кого-нибудь с большим опытом просмотреть его и дать вам отзыв.Но знайте, что сколько бы времени вы ни потратили на проектирование, в конечном итоге вам придется заниматься реализацией, и вы обнаружите, что чего-то не хватает или что вы могли бы сделать это еще лучше, сделав это другим способом.
Итак, проектируйте, получайте обратную связь, но не бойтесь меняться.