Я не знаю много о структуре базы данных.Тем не менее, я хотел бы структурировать свои модели таким образом, чтобы он был хотя бы несколько эффективен.Например, у меня есть стандартная модель Django User
.Когда пользователи регистрируются, они создают профиль, выбирают несколько действий (в интерфейсе, который показывает доступные действия) и ранжируются в соответствии с упомянутыми действиями:
from django.db. import models
from django.contrib.auth.models import User
class UserProfile(models.Model):
user = OneToOneField(User)
...
display_name = models.CharField(max_length=20)
class UserActivity(models.Model):
RANKINGS = (
(0, '0 - Newbie'),
(1, '1 - Advanced'),
(2, '2 - Expert'),
)
activity = ForeignKey(Activity, related_name="activities")
user = ForeignKey(UserProfile)
rank = models.PositiveSmallIntegerField(choices=RANKINGS)
class Activity(models.Model):
label = models.CharField(max_length=20)
description = models.TextField()
Это кажется мне хорошим и хорошим, но частовещи кажутся хорошими и хорошими и ... хорошо, они не.Мне интересно, есть ли набор стандартов или эвристик, которые я могу использовать для структурирования моделей.О чем мне следует думать, когда я создаю ManyToMany
отношений или, например, ForeignKeys
?