откуда вы знаете, как проектировать базу данных mysql при создании продвинутого php-приложения?
Я никогда не создавал корзину покупок или форум на php. помимо просмотра и анализа проекта другого человека или просмотра учебных пособий, в которых показано, как создать такой проект или как стать таким проектом. откуда человеку знать, как спроектировать структуру базы данных, чтобы создать такую вещь? я предполагаю, что это, вероятно, методом проб и ошибок...
3 answers
Основной метод, который вы можете изучить при проектировании базы данных, называется Нормализация базы данных.
Нормализация базы данных имеет свои ограничения, особенно если у вас много транзакций. В какой-то момент вы можете быть вынуждены Денормализовать.
Но имхо всегда лучше начинать с нормализованного дизайна базы данных.
Вы должны прочитать и понять основы нормализации. для большинства проектов нормализация до 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-я таблица, которая позволяет нам понять связь между конкретным ученик, конкретный класс и оценка, связанная с этим классом. из нашей первой исходной таблицы у нас теперь есть 3 таблицы в нормализованной базе данных (давайте предположим, что нам больше не нужно нормализовывать оценки для примера:))
Несколько вещей, которые мы можем извлечь из этого очень простого примера:
- все наши данные привязаны к какому-либо ключу (student_id, class_id и student_id + class_id). это уникальные идентификаторы в каждой таблице.
- с нашими ключевыми отношениями, мы можем соотносить информацию друг с другом (во скольких классах обучается ученик № 4096?)
- мы видим, что наши таблицы теперь не будут содержать дублирующихся данных (подумайте о нашей первой таблице, где student_class может иметь одинаковое значение для многих студентов. если бы нам пришлось изменить название класса, нам пришлось бы обновить все записи. в нашем нормализованном формате мы можем просто обновить class_name class_id)
Я бы также рекомендовал использовать визуальный редактор для создания схемы базы данных. Я недавно использовал: http://dev.mysql.com/workbench/
Как только вы создадите проект базы данных, попросите кого-нибудь с большим опытом просмотреть его и дать вам обратную связь. Но знайте, что столько времени, сколько вы можете потратить на проектирование, вам в конечном итоге придется заняться реализацией, и вы обнаружите, что вам чего-то не хватает или вы могли бы сделать еще лучше, сделав это другим способом.
Итак, дизайн, получайте обратную связь, но не бойтесь меняться.