Мені відомі деякі загальні найкращі практики при розробці бази даних для програми, але як бути з перепроектуванням?
Я в команді, якій доручено переробити внутрішній бізнес-додаток, хоча, незважаючи на те, що я сказав "внутрішній", я, на жаль, багато, багато верств людей від контакту з реальними користувачами системи.
Поточна програма знаходиться у форматі Oracle Forms, розкиданій по купі ненормованих таблиць, іноді з декількома майже дублюючими таблицями, що містять незначні варіанти даних про один одного. Обмеження часто бувають у вигляді погано забезпечених зберігаються процедур. Навіть типи, здається, не зберігаються правильно. Я стикався з усілякими поганими даними, які, як видається, Oracle ігнорували, але відповідали (і це правильно) майстру імпорту / експорту SQL Server. (Наприклад, двоцифрові цілі числа не складають повний час дати!)
Оригінальна програма, ймовірно, налічує двадцять років, і всі оригінальні розробники вийшли на пенсію так давно, що навіть літні люди тут не мають уявлення, ким вони були. Як наслідок, також немає насправді жодних чітких вимог, з яких потрібно вимкнутись - ми просто повинні дублювати функціональність наявної програми та зберігати її наявні дані.
Кінцевим результатом перезапису стане веб-версія, що працює на ASP.NET з MS SQL Server для зворотного кінця.
Інші два моїх товаришів по розробникам набагато, набагато старші за мене, обидва з бізнесом / MIS-фоном, тоді як мій - CS. Досвід старшого члена був майже виключно формами Oracle, а інший член здебільшого робив бізнес-програми в Visual Basic. Хоча фон моєї бази даних обмежений розробкою нових баз даних для проектів в MySQL або SQLite, в основному для моїх нижчих класів, я, здається, єдиний, хто взагалі має досвід проектування баз даних.
Я вже написав невелику програму на C #, яка читає всі існуючі дані до нейтрального формату, готова до повторної передачі та розміщення в новій базі даних. Я планую записати код для завантаження після створення бази даних призначення, щоб дані могли бути належним чином розділені на нові нормалізовані таблиці, додані у правильному порядку для наступних нових обмежень і т. Д. Цю ж програму потім можна запустити знову пізніше скопіювати виробничі дані в реально нещодавно розгорнуте готове перепроектування. Це залишає власне перероблення бази даних як головне, що слід з'ясувати.
Отже, суть мого запитання: які найкращі практики для перепроектування з рівня бази даних до існуючої програми?