9. Задачи проектирования
Обеспечение хранения всей необходимой
информации
Обеспечение возможности получения данных
по всем запросам
Сокращение избыточности и дублирования
данных
Обеспечение целостности данных
10. Проектирование на
практике
Логическое разделение сущностей
Выделение первичных ключей
Связи 1:Nреализуются через внешний ключ
Связи N:M реализуются через промежуточную
таблицу
Аттрибут с фиксированным числом значений -
внешняя таблица либо enum
18. Индексы на практике
Индексы для полей, по которым происходит
JOIN
Индексы для полей, по которым фильтруются
записи
Индексы для полей, по которым идет
сортировка
Проверять план выполнения запроса EXPLAIN
Управление оптимизатором запросов
27. Raw SQL vs ORM
ursor.execute('select*fromuserswhereage>18')
oruserincursor.fetchall():
pk,name,age=user
printname
VS
oruserinUser.objects.filter(age__gt=18):
printuser.name
28. Модели и типы данных
lassPost(models.Model):
title=models.CharField(max_length=255)
content=models.TextField()
creation_date=models.DateTimeField(
default=datetime.datetime.now
)
def__unicode__(self):
returnself.title
defget_absolute_url(self):
return'/post/%d/'%self.pk
classMeta:
ordering=['-creation_date’]