Конечно, стандартный ответ is Это зависит от размера.. В некоторых ситуациях таблица с таким количеством полей может иметь довольно большой смысл.
Подумайте о данных, которые вы будете хранить там. Вероятно, что многие из этих полей будут NULL? Какова вероятность изменения этих полей (например: добавлено больше)?
Если к определенным объектам относятся только определенные поля, возможно, подумайте о том, чтобы поместить эти поля в другую таблицу. Кроме того, сохраняйте только основные, общие поля в одной таблице и дополнительную информацию в другой таблице, по одной строке в поле. Как I suggested для a different question (which might be helpful to you):
refs (id, title, refType)
-- title of the reference, and what type of reference it is
fieldDef (id, fieldName, refType, dataType)
-- name of the field, which reference types it applies to, and
-- what type of data is stored in these fields (ISDN number, date, etc)
fields (refId, fieldId, value)
-- where you actually add data to the references.
Обратите внимание, что это было downvoted, и, вероятно, не без оснований. Это вариант, не обязательно лучший вариант, но он по-прежнему работоспособный метод. Однако самый высокий проголосовавший ответ в вопросе, который я связал с ним, может быть лучшим решением.
Edit: так как вы говорите, что он будет держать вещи, как на пользователя настройки (например: виджет цвет), я на самом деле рекомендую метода, описанного выше (с тремя столами). Скорее всего, большинство людей оставят вещи по умолчанию, поэтому у вас будет стопка бесполезной информации, хранящейся. Пожалуйста, прочитайте мой ответ в другом вопросе, потому что другие читатели указали на недостатки этого метода.
BCNF лучше - и обычно то, что находится в 3NF, также находится в BCNF. – 2008-10-21 03:51:47