Bermuda
Новичок
Резиновая таблица с неограниченным количеством полей.
Задача: создать систему почтовой рассылки.
Имеются группы рассылки. С каждой группой рассылки связано некоторое количество записей. Каждая запись имеет следующие поля:
- email
- имя
- фамилия
и еще N полей.
Система должна быть универсальной. Одна из возможностей - почтовая рассылка с использованием шаблонов. В шаблоны парсятся данные из базы. Данные в базу данных можно добалять из следующих источников.
- CSV файл
- таблица базы данных
- существующая группа рассылки
- вручную
Проблема: невозможно знать заранее какие поля и сколько полей понадобится в базе данных для хранения.
Примеры.
случай а)
- email
- имя
- фамилия
случай б)
- email
- дата рождения
- дата регистрации
- марка машины
случай в)
- email
- статус
- телефон
- пол
- возраст
Т. е. в принципе для каждой группы рассылки количество полей, их тип и имена в общем случае разные.
Варианты:
- Создавать для каждой группы рассылки новую таблицу -- решение довольно прозрачное, но не подходит так как абсолютно неверное.
- Создать таблицу со всеми возможными полями -- не годится, как результат перегрузка интерфеса пользователя и нерациональное использование БД.
- Добавлять/удалять поля "на лету" - не годится.
Таким образом положение спасает некоторая абстрактная "резиновая" таблица с неограниченным количеством полей.
Как реализовать на практике такую таблицу?
Задача: создать систему почтовой рассылки.
Имеются группы рассылки. С каждой группой рассылки связано некоторое количество записей. Каждая запись имеет следующие поля:
- имя
- фамилия
и еще N полей.
Система должна быть универсальной. Одна из возможностей - почтовая рассылка с использованием шаблонов. В шаблоны парсятся данные из базы. Данные в базу данных можно добалять из следующих источников.
- CSV файл
- таблица базы данных
- существующая группа рассылки
- вручную
Проблема: невозможно знать заранее какие поля и сколько полей понадобится в базе данных для хранения.
Примеры.
случай а)
- имя
- фамилия
случай б)
- дата рождения
- дата регистрации
- марка машины
случай в)
- статус
- телефон
- пол
- возраст
Т. е. в принципе для каждой группы рассылки количество полей, их тип и имена в общем случае разные.
Варианты:
- Создавать для каждой группы рассылки новую таблицу -- решение довольно прозрачное, но не подходит так как абсолютно неверное.
- Создать таблицу со всеми возможными полями -- не годится, как результат перегрузка интерфеса пользователя и нерациональное использование БД.
- Добавлять/удалять поля "на лету" - не годится.
Таким образом положение спасает некоторая абстрактная "резиновая" таблица с неограниченным количеством полей.
Как реализовать на практике такую таблицу?