откуда вы знаете, как проектировать базу данных mysql при создании продвинутого php-приложения?


Я никогда не создавал корзину покупок или форум на php. помимо просмотра и анализа проекта другого человека или просмотра учебных пособий, в которых показано, как создать такой проект или как стать таким проектом. откуда человеку знать, как спроектировать структуру базы данных, чтобы создать такую вещь? я предполагаю, что это, вероятно, методом проб и ошибок...

Author: user27751, 2008-10-14

3 answers

Основной метод, который вы можете изучить при проектировании базы данных, называется Нормализация базы данных.

Нормализация базы данных имеет свои ограничения, особенно если у вас много транзакций. В какой-то момент вы можете быть вынуждены Денормализовать.

Но имхо всегда лучше начинать с нормализованного дизайна базы данных.

 3
Author: Joe Scylla, 2008-10-15 01:13:50

Вы должны прочитать и понять основы нормализации. для большинства проектов нормализация до 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)
 17
Author: Owen, 2008-10-14 07:44:04

Я бы также рекомендовал использовать визуальный редактор для создания схемы базы данных. Я недавно использовал: http://dev.mysql.com/workbench/

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

Итак, дизайн, получайте обратную связь, но не бойтесь меняться.

 1
Author: rlorenzo, 2008-10-16 21:11:33