Brand:
name
...
Catalog:
name
name_lang2
description
description_lang2
meta_description
meta_description_lang2
meta_keywords
meta_keywords_lang2
parent -- ???
status --???
top --???
left_key
right_key
Product:
mpn -- Manufacturer part number
mpn_fix -- ???
catalog = ManyToMany(Catalog)
brand = ForeignKey(Brand)
image
-- для ускорения, после импорта прайса от поставщика,
-- можно перекалькулировать поля
price
price_median
....
Supplier:
name
name_lang2
address
phone
website
...
Product_price:
supplier = ForeignKey(Supplier)
product = ForeignKey(Product)
price
-- вариант с сохранением истории цен
date_time
User:
name
...
UserPhoto
owner = ForeignKey(User)
path_to_photo_on_disk
likes = ManyToMany(User)
Comment
user = ForeignKey(User)
photo = ForeignKey(UserPhoto)
text
datetime
Правильно ли я всё сделал, или в сущности "предприятия" слишком много атрибутов и нужно разделять? Как вариант сделать доп. сущность "Контакты_предприятий", куда поместить адрес, телефоны, время и дни работы...зависит от запросов, которые будут использоваться
Находится ли моя БД в 3NF (третья нормальная форма) на данный момент, и если нет, то как это сделать?нет
Как нормальные хомо сапиенс реализуют поля вроде "часы_работы" и "время работы"? Нужно делать отдельно время открытия и время закрытия, или можно в 1 поле всё уместить просто строкой?json поле с указанием каждого дня недели и графика работы для него
Player:
team = FK(Team)
...
Team:
...
Competition:
...
CompetitionTour:
competition = FK(Competition)
owner = FK(Team)
visitor = FK(Team)
// правильнее (с точки зрения НФ), получать результат,
// как сумму результатов игроков обеих комманд
// но если не напортачить с обработкой, то больших проблем быть не должно
owner_result
visitor_result
CompetitionTourPlayerStats:
competition_tour = FK(CompetitionTour)
player = FK(Player)
result
class School(models.Model):
name = models.CharField(max_length=200)
address = models.CharField(max_length=200)
class MyUser(AbstractBaseUser):
GROUP_DIRECT = 0
GROUP_TEACHER = 1
# ...
GROUP_PARENT = 8
GROUP_STUDENT = 9
GROUP = (
(GROUP_DIRECT, 'Director'),
(GROUP_TEACHER, 'Teacher'),
# ...
(GROUP_PARENT, 'Parent'),
(GROUP_STUDENT, 'Student'),
)
name = models.CharField(max_length=200)
email = models.EmailField()
group = models.IntegerField(choices=GROUP)
class Lesson(models.Model):
name = models.CharField(max_length=200)
# ...
school = models.ForeignKey(School)
class Director(MyUser):
description = models.CharField(max_length=200)
# ...
school = models.ForeignKey(School)
class Teacher(MyUser):
description = models.CharField(max_length=200)
# ...
school = models.ForeignKey(School)
class Student(MyUser):
description = models.CharField(max_length=200)
# ...
school = models.ForeignKey(School)
class Parent(MyUser):
description = models.CharField(max_length=200)
children = models.ManyToManyField(Student)
# ...
Склад:
предмет
количество
Предмет:
тип предмета
характеристики
ТипХарактеристики:
название
Характеристика:
тип характеристики
значение
Shop
name
Product:
name
StockUnit
name
size
StockUnitInShop
sku
count_in_shop
product = FK(Product)
shop = FK(Shop)
Тест:
название
ВерсияТеста
тест = ForeignKey(Тест)
текст
дата создания
автор
ВопросТеста
тест = ForeignKey(ВерсияТеста)
текст вопроса
ОтветНаВопроТеста
вопрос теста = ForeignKey(ВопросТеста)
friend_status
id
from_user_id
to_user_id
status = {
0: send
1: confirm
2: reject
3:...
}