Итак, я унаследовал некоторый django.
Таблица mySQL достаточно проста, где parent - это НЕ отношение FK, а просто идентификатор "Parent":
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 на , добавить в ограничение ?
Большое спасибо!