【发布时间】:2011-10-10 22:34:14
【问题描述】:
所以我继承了一些 django。
mySQL 表很简单,其中 parent 不是 FK 关系,只是“Parent”id:
CREATE TABLE `Child` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`parent` int(10) unsigned NOT NULL,
`name` varchar(255) NOT NULL,
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=24;
但后来发起人这样做了..
class Child(models.Model):
"""Project Child information"""
id = models.AutoField(primary_key=True)
parent = models.ForeignKey(Parent)
name = models.CharField(max_length=255)
class Meta:
managed = False
诚然,我不是 SQL 骑师,但我知道“真正的”外键关系类似于此通知 CONSTRAINT...
CREATE TABLE `Child` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) NOT NULL,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
KEY `child_63f17a16` (`parent_id`),
CONSTRAINT `parent_id_refs_id_34923e1e` FOREIGN KEY (`parent_id`) REFERENCES `Parent` (`id`)
) ENGINE=InnoDB;
我想知道的是:
- 我希望通过这种“诡计”看到什么问题。
- 虽然这似乎可行 - 是否建议或建议这样做。
- 是否建议我们将 SQL 修改为 add in the constraint?
非常感谢!
【问题讨论】:
标签: mysql django database-design django-models foreign-key-relationship