Схема БД, таблица с множеством столбцов - PullRequest
0 голосов
/ 30 августа 2011

Я разрабатываю схему для системы управления обучающимися.

В настоящее время у меня есть таблица LearnerDetails , в которой хранится информация категорий ниже.- данные учетной записи пользователя для входа в систему - контактные данные и домашний адрес - информация, касающаяся места жительства учащегося, включая информацию о гражданстве, текущие данные о визе, чтобы остаться в Великобритании и т. д. - информация о текущем государственном пособии учащегося - сведения о текущем статусе занятости учащегося

Проблемау меня есть то, что, когда вся эта информация представлена ​​в одной таблице, количество столбцов превышает 70 столбцов.

Одна вещь, которую я могу сделать, это то, что я могу разделить информацию в разные таблицы, представляющие упомянутые категориивыше, и свяжите эти таблицы с их родительской таблицей LearnerDetails как отношения 1: 1.

Я хотел бы знать, является ли это рекомендуемым подходом или нет.По моему мнению, отношения 1: 1 будут представлять базу данных, которая является более нормализованной.Но если бы я этого не сделал, это привело бы к созданию огромной горизонтальной таблицы в качестве моей LearnerDetails таблицы.

Буду очень признателен, если вы сообщите мне свое мнение / предложения.

Ответы [ 3 ]

2 голосов
/ 30 августа 2011

Нет ничего плохого по сути со многими столбцами в таблице, если у вас есть 5NF или по крайней мере 3NF.

Но есть немало примеров, когда вертикальное разбиение (1 :: 1) делаетсмысл - взгляните на аналогичный вопрос .

2 голосов
/ 30 августа 2011

Насколько широки столбцы?Если ваша запись шире, чем размер страницы, то наличие одной широкой таблицы - это проблема производительности, ожидающая своего появления.

Адрес, как правило, НЕ является отношением 1-1 к человеку.Да, у большинства людей есть только один, но это не относится ко всем.Студенты, например, иногда живут неполный рабочий день с каждым из своих разведенных родителей.Я хотел бы предложить, чтобы адрес был выделен.Если вы храните телефонные номера, эти два, как правило, не находятся в отношении 1-1.У вас может быть телефон для звонков, номер телефона и номер домашнего (стационарного) телефона.Все, что имеет хорошую возможность в конечном итоге вступить в отношения один-много, должно быть отделено с самого начала.

Если вы разделяете таблицы и хотите применить взаимно-однозначное отношение, вы можете использовать идентификатор из родительской таблицы в качестве PK в дочерней таблице или иметь другой Pk для таблицы иустановить уникальный индекс для поля FK.Не устанавливайте взаимную связь один-к-одному без способа принудительного применения в базе данных.

1 голос
/ 30 августа 2011

Нет проблем иметь 70 или более столбцов, если это требуется для нормализации. Вы не упомянули, какие rdbms вы используете, но большинство поддерживают не менее 255 полей.

...