Есть 100 users.
Каждый user может создавать любое количество fields (в реальной жизни 5...20) и любое количество pages (1...10...100...1000).
Необходимо в базе хранить значения fields для pages.
При этом не обязательно для каждой page будут иметься значения для каждого field.
Связи между объектами разных users исключены.
Основная проблема в том, что fields есть как int, так и text, так и bool и других типов, обычно используемых.
Я вижу 4 варианта на данный момент:
1) Сделать несколько (values_int, values_text...) таблиц (по одной для каждого типа данных) с полями page_id, field_id, value.
2) Сделать одну таблицу с полями page_id, field_id, value_int, value_text, value_bool.
3) Сделать одну таблицу и все значения хранить в типе text. Поля будут просто page_id, field_id, value.
4) На каждого user создавать собственную таблицу, например: values_1, values_2... (по id user), с полем только page_id. А при добавлении/удалении fields - добавлять/удалять поля в таблице (менять структуру таблицы, т.е.), в соответствии с типом field.
Прошу помощи в прояснении плюсов и минусов каждого способа. База MySQL. Масштабы проекта приблизительные указал в начале поста. Заранее кланяюсь

Спустя 12 минут, 28 секунд (27.08.2011 - 22:57) neadekvat написал(а):
Собственно, все упирается в то, для чего будут служить поля fields. Если по ним не будет производится поиск - то собрать все в одну таблицу
pages_fields
field_id, page_id, name, value.
pages_fields
field_id, page_id, name, value.
Спустя 14 минут, 8 секунд (27.08.2011 - 23:11) jackDaniels написал(а):
Поиск и сортировка понадобятся периодически.
Из плюсов-минусов, что сам набросал:
предопределенная структура таблиц - 1,2,3
возможность изменения типа field (без переноса по 1000 записей) - 3,4
предопределенное и вменяемое количество таблиц - 1,2,3
простота запросов - 3,4
возможность выборки списка pages со значениями одним запросом - 4
легкое визуальное восприятие в pma - 4
корректная типизация - 1,2,4
адекватная сортировка - 1,2,4
Определиться никак не могу, разве что вариант 2 меньше всех нравится.
В 4 нравится все, кроме невменяемого количества таблиц.
В 1 не нравится, что каждую page надо собирать из нескольких таблиц.
В 3 не нравится, что нет корректной сортировки. С отсутствием типизации я бы смирился.
Все fields - дополнительные поля, никакой системной важности для приложения не несут.
Из плюсов-минусов, что сам набросал:
предопределенная структура таблиц - 1,2,3
возможность изменения типа field (без переноса по 1000 записей) - 3,4
предопределенное и вменяемое количество таблиц - 1,2,3
простота запросов - 3,4
возможность выборки списка pages со значениями одним запросом - 4
легкое визуальное восприятие в pma - 4
корректная типизация - 1,2,4
адекватная сортировка - 1,2,4
Определиться никак не могу, разве что вариант 2 меньше всех нравится.
В 4 нравится все, кроме невменяемого количества таблиц.
В 1 не нравится, что каждую page надо собирать из нескольких таблиц.
В 3 не нравится, что нет корректной сортировки. С отсутствием типизации я бы смирился.
Все fields - дополнительные поля, никакой системной важности для приложения не несут.
Спустя 18 минут, 35 секунд (27.08.2011 - 23:30) neadekvat написал(а):
Тогда используй указанную мной.
Кроме того, посмотри в документации, там кажется были функции для того, чтобы рассматривать текстовое поле как числовое, это для корректной сортировки понадобиться (использовать функции надо при самой выборке с этой сортировке, физически это так и будет текстовым полем).
Можно еще добавить поле, чтобы указывать, что за тип у этого field
Кроме того, посмотри в документации, там кажется были функции для того, чтобы рассматривать текстовое поле как числовое, это для корректной сортировки понадобиться (использовать функции надо при самой выборке с этой сортировке, физически это так и будет текстовым полем).
Можно еще добавить поле, чтобы указывать, что за тип у этого field