Использование абстрактного подкласса в Doctrine: любопытная генерация базы данныхPhp

Кемеровские программисты php общаются здесь
Anonymous
Использование абстрактного подкласса в Doctrine: любопытная генерация базы данных

Сообщение Anonymous »

Сейчас я работаю над проектом Symfony2/MySQL, используя Doctrine2. В нашей концепции у нас есть «супер» абстрактный класс, который расширяется абстрактными подклассами, которые сами расширяются конкретными классами.
Вот мой код: И затем: И вот мой последний код: Когда я генерирую свой код SQL, я получаю:

Код: Выделить всё

CREATE TABLE superabstractclass (id INT AUTO_INCREMENT NOT NULL, libelle LONGTEXT NOT NULL, discr VARCHAR(2) NOT NULL, PRIMARY KEY(id))
DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
CREATE TABLE abstractclass (id INT NOT NULL, subLabel LONGTEXT NOT NULL, PRIMARY KEY(id))
DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
CREATE TABLE concreteclass1 (id INT NOT NULL, details LONGTEXT NOT NULL, PRIMARY KEY(id))
DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
CREATE TABLE concreteclass2 (id INT NOT NULL, detailsautres LONGTEXT NOT NULL, PRIMARY KEY(id))
DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;

ALTER TABLE abstractclass
ADD CONSTRAINT FK_438A1A85BF396750 FOREIGN KEY (id)
REFERENCES superabstractclass (id) ON DELETE CASCADE;

ALTER TABLE concreteclass1
ADD CONSTRAINT FK_474E75CFBF396750 FOREIGN KEY (id)
REFERENCES superabstractclass (id) ON DELETE CASCADE;
Последняя строка меня немного удивила. Почему моя таблица конкретныйкласс1 ссылается на суперабстрактныйкласс (см. *FK_474E75CFBF396750*), а не на абстрактный класс. Я беспокоюсь за целостность своих данных: что произойдет, если я удалю строку абстрактного класса. У меня по-прежнему будет строка superabstractclass и конкретный класс1 (то есть экземпляры объектов), но я потеряю некоторые фрагменты информации о своих объектах.
Я что-то упустил? Я искал уже несколько часов, но не смог ничего найти. Спасибо за любую помощь.

Подробнее здесь: https://stackoverflow.com/questions/324 ... generation

Вернуться в «Php»