¿Cómo sabes cómo diseñar una base de datos mysql cuando creas una aplicación php avanzada?

StackOverflow https://stackoverflow.com/questions/200257

  •  03-07-2019
  •  | 
  •  

Pregunta

nunca he creado un carrito de compras o un foro en php. además de ver y analizar el proyecto de otras personas o ver tutoriales que muestran cómo hacer un proyecto de este tipo o cómo serlo. ¿Cómo sabría una persona cómo diseñar la estructura de la base de datos para crear tal cosa? estoy adivinando que es probable a través de prueba y error ...

¿Fue útil?

Solución

La técnica principal que puede conocer sobre el diseño de la base de datos se llama Normalización de la base de datos .

La normalización de la base de datos tiene sus límites, especialmente si tiene muchas transacciones. En algún momento puede verse obligado a Denormalize .

Pero ahora siempre es mejor comenzar con un diseño de base de datos normalizado.

Otros consejos

debe leer y comprender los conceptos básicos de normalización . Para la mayoría de los proyectos, la normalización a la tercera forma normal estará bien. siempre hay ciertos escenarios cuando desea más o menos normalización, pero entender los conceptos subyacentes le permitirá pensar cómo está estructurada su base de datos en un formato normalizado.

Aquí hay un ejemplo muy básico de normalizar una tabla:

students
  student_id
  student_name
  student_class
  student_grade

una tabla bastante estándar que contiene varios datos, pero podemos ver algunos problemas de inmediato. podemos ver que el nombre de un estudiante depende de su identificación, sin embargo, un estudiante puede participar en más de una clase, y cada clase posiblemente tenga un grado diferente. Entonces podemos pensar en las tablas como tales:

students
  student_id
  student_name

class
  class_id
  class_name

Esto no está mal, ahora podemos ver que tenemos varios estudiantes y varias clases, pero no hemos capturado las calificaciones de los estudiantes.

grades
  student_id
  class_id
  grade

ahora tenemos una tercera tabla, que nos permite comprender la relación entre un estudiante en particular, una clase en particular y un grado asociado con esa clase. de nuestra primera tabla inicial, ahora tenemos 3 tablas en una base de datos normalizada (supongamos que ya no necesitamos normalizar las calificaciones por ejemplo :)

algunas cosas que podemos deducir de este ejemplo muy básico:

  • nuestros datos están todos vinculados a una clave de algún tipo (student_id, class_id, y student_id + class_id). estos son identificadores únicos dentro de cada tabla.
  • con nuestras relaciones clave, podemos relacionar información entre nosotros (¿en cuántas clases está inscrito el estudiante # 4096?)
  • podemos ver que nuestras tablas no contendrán datos duplicados ahora (piense en nuestra primera tabla, donde student_class podría tener el mismo valor para muchos estudiantes. Si tuviéramos que cambiar el nombre de la clase, tendríamos que actualizar todos los registros . En nuestro formato normalizado, solo podemos actualizar class_name of class_id)

También recomendaría usar un editor visual para crear el esquema de su base de datos. Recientemente he estado usando: http://dev.mysql.com/workbench/

Una vez que haya creado un diseño de base de datos, haga que alguien con más experiencia lo revise y le dé su opinión. Pero tenga en cuenta que tanto tiempo como pueda dedicar al diseño, eventualmente tendrá que hacer la implementación y descubrirá que le falta algo o que podría hacer un trabajo aún mejor haciéndolo de otra manera.

Entonces, diseña, obtén retroalimentación, pero no tengas miedo de cambiar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top