¿Cuáles son los pasos que toma para diseñar una base de datos para un sitio web?

Voy a responder una pregunta ligeramente diferente, que es “¿cómo comenzaría con el modelado de datos para un sitio web?”, Porque lo que haría es algo como: “Piensa mucho y luego escribe el esquema”. ;).

Soy parcial a las bases de datos relacionales para el back-end del sitio web.

Primero pensaría en:

  • ¿Cuáles son las entidades en mi modelo de datos? Si estuviera escribiendo un sitio web como Quora, mis entidades podrían ser como:
    • Los usuarios
    • Temas
    • Preguntas
    • Preguntas Respuestas
    • Comentarios
  • Para cada entidad, pensaría en qué atributos tendría. Por ejemplo, mi entidad de usuario podría tener:
    • ID, nombre, correo electrónico, contraseña, cumpleaños, URL de la imagen de perfil
    • Prestaría especial atención a lo que hace que cada uno de mis usuarios sea único, porque quiero poder identificar cada fila de cada tabla en mi base de datos de manera única. En este caso, acabo de agregar un atributo “id” que estableceré para que sea único para cada usuario (en realidad, dejaré que la base de datos lo haga por mí).
  • Para cada entidad, pensaría en las relaciones que tendría. Por ejemplo, mi entidad de usuario tendría:
    • Temas seguidos
    • Biografía del tema
    • Preguntas escritas, preguntas seguidas
    • Respuestas escritas
    • Comentarios escritos

Luego seleccionaría un Object Relational Mapper para el lenguaje de implementación en el que estoy trabajando. Supongamos que estamos escribiendo Python y estamos usando SQLAlchemy.

Un Mapeador Relacional de Objetos (ORM) le permite definir las estructuras de su base de datos en código fuente, y simplifica enormemente la tarea de conectarse a la base de datos, leer y escribir desde la base de datos. Le permite desarrollar una aplicación de base de datos sin aprender el lenguaje de definición de datos de su base de datos, o incluso SQL. Está bien aprender estas cosas, simplemente no es necesario.

Por ejemplo, podría tomar mis entidades de Usuario y Pregunta, y codificarlo en Python con:

db = … crear conexión SQLAlchemy a la base de datos …
Usuario de clase (db.Model):
id = db.Column (db.Integer, primary_key = True)
nombre = db.Column (db.String (128))
email = db.Column (db.String (128, único = Verdadero)
cumpleaños = db.Column (db.Date ())

Pregunta de clase (db.Mode):
id = db.Column (db.Integer, primary_key = True)
question = db.Column (db.String (128))

# Relacionemos cada pregunta con un solo autor, que es un usuario.
author_id = db.Column (db.Integer, db.ForeignKey (‘user.id’))
author = db.relationship (‘Usuario’, backref = db.backref (‘pregunta’))

Si, en este momento, no está seguro de poder hacer esto, me tomaría un tiempo hacer primero algunos tutoriales, para aprender las habilidades antes de diseñar su propio sitio web desde cero.

Aquí hay algunos tutoriales en Python usando Flask y SQLAlchemy. Las bibliotecas de Python aquí son bastante buenas, y creo que son más avanzadas que algunos otros idiomas, pero debería haber cosas comparables, si no equivalentes, en su idioma:

El Mega Tutorial del Frasco, Parte IV: Base de datos

Frasco SQLAlchemy

A veces es tan simple como decidir que tiene información para almacenar … puede almacenarla en un archivo plano y escribir código para analizar ese archivo plano. Y más código para manejar la inserción de entradas e incluso más código para proteger esos datos. Y algo de código para borrar o editar entradas.

En un momento bastante temprano, es posible que se dé cuenta de que realmente necesita una base de datos para ayudar con todo eso, por lo que convierte a una base de datos como mySQL o ya ha comenzado con todo eso y se saltó un montón de codificación. La base de datos generalmente ayuda a acortar todo ese esfuerzo de codificación.

Pero no hay nada de malo en un archivo plano si es pequeño y hace el trabajo.

Cualquier proyecto de desarrollo comienza definiendo claramente las necesidades del sistema. Las necesidades de la base de datos para un sitio web serán muy específicas para el tipo y el alcance del sitio web que está creando. Me imagino que una simple discusión sobre el alcance establecería el marco para el sitio y luego, utilizando ese marco, puede definir las tablas y los campos de la base de datos necesarios para soportar el sitio. Con cualquier proyecto de desarrollo, el alcance inicial conducirá a cambios en el esquema de la base de datos en el futuro, pero definir la necesidad primero es clave.