oczywiście standardową odpowiedź to jest to zależy od. Stół z wieloma polami może w niektórych sytuacjach mieć całkiem sensowny sens.
Pomyśl o danych, które będziesz tam przechowywać. Czy jest prawdopodobne, że wiele z tych pól będzie NULL? Jakie jest prawdopodobieństwo, że te pola się zmienią (np. Więcej zostanie dodanych)?
Jeśli do niektórych obiektów odnoszą się tylko niektóre pola, być może warto pomyśleć o umieszczeniu tych pól w innej tabeli. Alternatywnie, przechowuj tylko podstawowe, wspólne pola w jednej tabeli i dodatkowe informacje w innej tabeli, jeden wiersz na pole. Jak I suggested dla 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.
Należy pamiętać, że był to downvoted, i prawdopodobnie z tego powodu. Jest to opcja, niekoniecznie najlepsza opcja, ale nadal jest to metoda możliwa do zastosowania. Jednak najwyżej oceniona odpowiedź w pytaniu, które tam podłączyłem, może być najlepszym rozwiązaniem.
Edit: skoro mówisz, że będzie ona trzyma rzeczy jak ustawień użytkownika (np: kolor widget), bym faktycznie polecam metodę opisaną powyżej (z trzech tabel). Możliwe, że większość ludzi domyślnie opuści rzeczy, więc będziesz mieć cały stos niepotrzebnych informacji. Proszę przeczytać moją odpowiedź w drugim pytaniu, ponieważ inni czytelnicy zwrócili uwagę na niedociągnięcia tej metody.
BCNF jest lepszy - i zwykle to, co jest w 3NF, jest również w BCNF. –