Таблица со многими (более 80) полями или несколькими однозначными таблицами в Symfony? - PullRequest
0 голосов
/ 06 апреля 2011

Я использую Symfony1.4, поэтому мой вопрос касается как дизайна базы данных, так и Doctrine.

У меня есть объект, который имеет примерно 80 характеристик. Пользователи должны заполнить их все в 4 этапа, поэтому эти характеристики можно разделить на 4 группы. Каждая группа будет иметь ~ 20 полей. Некоторые из них должны быть обязательными, а другие нет.

Во-первых, я боролся за создание 1 основной таблицы и 3 дочерних таблиц «один к одному», потому что в этом случае symfony может создавать различные формы с обязательным полем, заданным для базы данных.

Затем я нашел это обсуждение . Если я последую совету, чтобы все поля были в одной таблице, мне придется вручную создавать 4 разные формы и контролировать необходимые поля.

Также мне интересно, какой метод будет более эффективным в Symfony. Например, все 4 таблицы никогда не будут объединены - максимум 2 из них.

1 Ответ

1 голос
/ 06 апреля 2011

Не знаю о Symfony, но я поговорю с точки зрения проектирования баз данных. Если, как вы сказали, все 4 таблицы никогда не будут объединены, их разделение может быть хорошей идеей в зависимости от запросов и общего размера таблицы. Пользователи, как правило, не очень большие таблицы, поэтому производительность не является проблемой, и простота разработки становится более важной. Но если у вас будет несколько ГБ пользователей ...

Еще один способ решения проблемы: Если связь между таблицами всегда взаимно-однозначная (запись должна присутствовать во всех них), я бы склонялся к подходу «все в одной таблице». Если некоторые таблицы могут пропустить одну запись, разбиение оказывается более привлекательным.

Вы также можете решить эту проблему с помощью чего-то вроде PostgreSQL hstore (или аналога вашей РСУБД).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...