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.
- ¿Cómo puede uno convertirse en un buen diseñador y desarrollador web?
- ¿Qué tipo de software necesita para el diseño web?
- ¿Cómo podemos rediseñar el sistema educativo en la India?
- ¿Cómo puede el diseño del servicio mejorar el diseño del producto?
- ¿Cuáles son las características del diseño moderno de mediados de siglo? ¿Cuáles son algunos blogs útiles al respecto?
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