Подходы к созданию эффективной базы данных - PullRequest
0 голосов
/ 25 января 2011

Мне было интересно, смогу ли я привлечь опытных дизайнеров баз данных. Я не очень опытен в создании баз данных, и у меня есть проект, который нужно завершить в установленные сроки (пару месяцев). Требуется построить его в третьей нормальной форме.

Мне просто интересно, каким будет лучший способ начать? Должен ли я пойти дальше и построить что-то, что будет работать (пытаясь быть настолько эффективным, насколько это возможно), а затем вернуться и реорганизовать любые части, которые можно улучшить, или есть какая-то методология, которой нужно следовать, чтобы обеспечить определенные степени нормализации с самого начала?

Ответы [ 3 ]

4 голосов
/ 25 января 2011

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

Если вы не знакомы с базой данных dsign в третьей обычной форме, потратьте пару дней на изучение структуры базы данных.Около дня вы читаете о настройке производительности базы данных - разработка базы данных с самого начала для эффективной работы сэкономит вам много времени.Это не займет больше времени, чем разработка плохо работающей базы данных, если вы знаете, что делать и чего избегать.Итак, мой первый совет для вас - получить пару больших толстых книг и прочитать их до начала.Время, потраченное на это, будет хорошо окуплено вашей способностью делать что-то лучше в оставшейся части проекта.

2 голосов
/ 25 января 2011

Вы наверняка напишите много слоев (DAL, BAL, UI) поверх этого слоя базы данных. Каждое изменение на более низком уровне будет пузыриться вверх и вызывать больше переделок, чем просто на уровне базы данных.

Я думаю, что вы должны сделать весь свой дизайн и привести базу данных к наилучшей нормализации, необходимой / необходимой для сохранения ваших данных без аномалий в самом начале.

0 голосов
/ 25 января 2011

В отличие от Front-Side-программирования, рефакторинг структуры базы данных после ее использования является не только болезненным, но и непрактичным.

Я настоятельно рекомендую получить структуру задней части прямо вперед. Хорошая новость заключается в том, что третью нормальную форму, как правило, нетрудно достичь. На самом деле, когда вы немного попрактикуетесь, становится почти второй натурой думать о данных в этих терминах.

Третья нормальная форма по существу утверждает, что каждый компонент отдельной записи в таблице должен быть уникальным для ключа этой записи. СЧИТАЮТ:

tblPerson: PersonID PK Фамилия Имя Второе имя дата рождения ПЛА Источник доходов IncomeAmount

Таблица, как определено выше, НЕ представлена ​​в трех нормальных формах, поскольку источник дохода не уникален для каждого случая присутствия человека в таблице и фактически может меняться в течение жизни этого человека. Вместо этого можно структурировать вышесказанное (в чрезмерно упрощенном виде) следующим образом:

tblPerson PersonID PK Фамилия Имя Второе имя дата рождения ПЛА

tblPersonIncome PersonIncomeID PK PersonID FK tblPerson IncomeSourceID FK tblIncomeSource Сумма дохода AsOfDate

tblIncomeSource IncomeSourceID IncomeSource

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

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

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

...