一.表关系
创建表关系,并创建约束
|
|
|
|
|
|
|
|
|
|
班级表:class |
|
|
|
学生表: student |
|
|
|
|
cid |
caption |
grade_id |
|
sid |
sname |
gender |
class_id |
|
1 |
一年一班 |
1 |
|
1 |
乔丹 |
女 |
1 |
|
2 |
二年一班 |
2 |
|
2 |
艾弗森 |
女 |
1 |
|
3 |
三年二班 |
3 |
|
3 |
科比 |
男 |
2 |
|
|
|
|
|
|
|
|
|
|
老师表:teacher |
|
|
|
课程表: course |
|
|
|
|
tid |
tname |
|
|
cid |
cname |
teacher_id |
|
|
1 |
张三 |
|
|
1 |
生物 |
1 |
|
|
2 |
李四 |
|
|
2 |
体育 |
1 |
|
|
3 |
王五 |
|
|
3 |
物理 |
2 |
|
|
|
|
|
|
|
|
|
|
|
成绩表:score |
|
|
|
|
年级表: class_grade |
|
|
|
sid |
student_id |
course_id |
score |
|
gid |
gname |
|
|
1 |
1 |
1 |
60 |
|
1 |
一年级 |
|
|
2 |
1 |
2 |
59 |
|
2 |
二年级 |
|
|
3 |
2 |
2 |
99 |
|
3 |
三年级 |
|
|
|
|
|
|
|
|
|
|
|
班级任职表: teach2cls |
|
|
|
|
|
|
|
|
tcid |
tid |
cid |
|
|
|
|
|
|
1 |
1 |
1 |
|
|
|
|
|
|
2 |
1 |
2 |
|
|
|
|
|
|
3 |
2 |
1 |
|
|
|
|
|
|
4 |
3 |
2 |
|
|
|
|
二.创建测试数据
1.创建项目准备环境
步骤:
(1)在终端使用mkvirtualenv命令创建一个新的虚拟环境,然后使用pip3命令下载安装django
mkvirtualenv ORMtest -p python3
pip3 install django
(2)使用django-admin命令创建django项目
django-admin startproject ORMtest
(3)在pycharm打开该项目,配置python编译器
(4)在pycharm的终端使用startapp新建子应用
python3 manage.py startapp SMS
(5)在配置文件settings.py中注册新建的子应用SMS
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'SMS.apps.SmsConfig', # <---注册新应用
]
2.创建模型
步骤:
(1)在子应用SMS文件内的模型文件models.py中创建模型类
from django.db import models # Create your models here. class Classes(models.Model): cid = models.AutoField(primary_key=True) caption = models.CharField(max_length=32) grade = models.ForeignKey("ClassGrade", on_delete=models.CASCADE) class ClassGrade(models.Model): gid = models.AutoField(primary_key=True) gname = models.CharField(max_length=32) class Student(models.Model): sid = models.AutoField(primary_key=True) sname = models.CharField(max_length=32) gender_choice = ((0, "女"), (1, "男")) gender = models.SmallIntegerField(choices=gender_choice, default=1) classes = models.ForeignKey("Classes", on_delete=models.CASCADE) class Teacher(models.Model): tid = models.AutoField(primary_key=True) tname = models.CharField(max_length=32) classes = models.ManyToManyField("Classes") class Course(models.Model): cid = models.AutoField(primary_key=True) cname = models.CharField(max_length=32) teacher = models.ForeignKey("Teacher", on_delete=models.CASCADE) class Score(models.Model): sid = models.AutoField(primary_key=True) student = models.ForeignKey("Student", on_delete=models.CASCADE) course = models.ForeignKey('Course', on_delete=models.CASCADE) score = models.IntegerField()