1. 程式人生 > >django項目數據庫中 表結構設計 和 同一表中設置多個聯合唯一 存在的問題分析

django項目數據庫中 表結構設計 和 同一表中設置多個聯合唯一 存在的問題分析

images 文件中 ... -o 表結構設計 char 分享圖片 vpd process

問題描述:

我現在有的表結構是班級表課程表
班級表的主要結構如下

課程名稱 學 期 校 區 任課老師 s
class_title time campuses teachers

表結構中:
class_title,time,campusees必須設置聯合唯一,
所以在django中的modes.py 文件中設置如下

from django.db import models
class ClassList(models.Model):
    """
    班級表
    """
    course = models.CharField("課程名稱", max_length=64, choices=course_choices)
    semester = models.IntegerField("學期")
    campuses = models.ForeignKey(‘Campuses‘, verbose_name="校區")
    teachers = models.ManyToManyField(‘UserProfile‘, verbose_name="老師")

    class Meta:
            unique_together = ("course", "semester", ‘campuses‘)

課程表的主要結構如下

班 級 授課內容 節 次 授課時間 班主任
re_class content day_num date b_teacher

設置class與date_num為聯合唯一,保證一個班級一天只能上一節課

class CourseRecord(models.Model):
    """課程記錄表"""
    day_num = models.IntegerField("節次", help_text="此處填寫第幾節課或第幾天課程...,必須為數字")
    date = models.DateField(auto_now_add=True, verbose_name="上課日期")
    course_title = models.CharField(‘本節課程標題‘, max_length=64, blank=True, null=True)

    re_class = models.ForeignKey(‘ClassList‘, verbose_name="班級")
    teacher = models.ForeignKey(‘UserProfile‘, verbose_name="班主任")

    class Meta:
        unique_together = (‘re_class‘, ‘day_num‘)

但是就存在問題了???

如何保證同一個老師不會被’分身‘??
如:
python-1期-海南 3-31 第一節 penny老師
python-2期-上海 3-31 第一節 penny老師

如何解決呢???

方法一重新建表結構:

班 級 授課內容 節 次 授課時間 班主任 授課教師
re_class content day_num date b_teacher teacher

將節次,授課時間,授課老師設為聯合唯一
而已經設置class與date_num為聯合唯一
這可就出現了倆個聯合唯一的問題了???

class Meta:
        unique_together = [(‘re_class‘, ‘day_num‘), (‘date‘, ‘day_num‘, ‘teacher‘)]

]

但是:

雖然可以限制,但是會出現飄頁面錯誤的問題!!!!

技術分享圖片

django項目數據庫中 表結構設計 和 同一表中設置多個聯合唯一 存在的問題分析