【问题标题】:Database design for optional parameters可选参数的数据库设计
【发布时间】:2015-11-11 10:03:06
【问题描述】:

我有这个模型:

class Floor(models.Model):
        label = models.CharField(null=False, blank=False, max_length=100)

class Area(models.Model):
    label = models.CharField(null=False, blank=True, max_length=100)
    floor = models.ForeignKey(Floor)

class Room(models.Model):
    label = models.CharField(null=False, blank=True, max_length=100)
    area = models.ForeignKey(Area)

有时,如果房间没有设置到地板的特定区域,也可以。

那么,我正在考虑两种选择。

选项 1:我保留此数据结构,并在未指定区域时创建“label=default”区域。

选项2:我改成这个模型:

class Floor(models.Model):
    label = models.CharField(null=False, blank=False, max_length=100)

class Area(models.Model):
    label = models.CharField(null=False, blank=True, max_length=100)
    floor = models.ForeignKey(Floor)

class Room(models.Model):
    label = models.CharField(null=False, blank=True, max_length=100)
    area = models.ForeignKey(Area, null=True)
    floor = models.ForeignKey(Floor)

这两个选项看起来都不错,但你的赞成/反对意见是什么?

【问题讨论】:

  • 你能不能强制每个房间都必须有地板?我不知道曾经建造过没有一楼/一楼的建筑物

标签: django database-design django-models


【解决方案1】:

建筑物怎么可能没有楼层?我会给每栋建筑至少一层楼并使用第一个选项。

因为在选项 2 中,您将有多余的 FK 到建筑物(房间和楼层)

【讨论】:

  • 查看新编辑:我将楼层更改为区域,它更真实。小楼层不需要有单独的区域,但大楼层需要。
猜你喜欢
  • 2014-10-10
  • 1970-01-01
  • 2016-04-03
  • 2012-10-05
  • 2011-10-24
  • 1970-01-01
  • 2014-08-21
  • 1970-01-01
  • 2020-07-16
相关资源
最近更新 更多