Проектування бази даних (FAQ), Різне, Програмні керівництва, статті









З чого почати будувати базу даних, щоб уникнути проблем у майбутньому. Це мій досвід, сподіваюся, він виявиться для вас корисним.
 
Будемо будувати цей матеріал методом тез. Поділ на блоки робить зрозумілим навіть самий заплутаний текст.)

1. Ясна ТЗ.
Технічне завдання, яке ставить вас в тупик уб’є вашу базу, наскільки хорошим програмістом ви б не були. Завжди слід пам’ятати, що ваш погляд на проблему – це ваш погляд. Нав’язати його майбутньому користувачу можна, але від цього він працювати краще і швидше не стане.
І це стосується не тільки інтерфейсу. Хоча це і є те, до чого у користувача найчастіше виникають претензії. Але, нерідко користувач каже: а можна тут зробити так, а тут так. І починаєш розуміти, що намальована схема даних летить до біса, тому що ви неправильно зрозуміли ТЗ, або ТЗ було сформовано нечітко.
Прописуємо ТЗ на папері разом з користувачем, аж до кожного поля і кожному зв’язку. Малюйте форми, уточнюйте тонкощі майбутнього інтерфейсу. Чим точніше буде малюнок, тим простіше буде працювати вам. До 50% часу витрачається на сидіння біля монітора і думок “щоб ще такого зробити” – від цього не піти (якщо ви, звичайно, програміст і в душі), але витрати часу можна скоротити до 5-10%.
Другий варіант: писати програми на основі вже працює (існуючої) програми але з меншим функціоналом або просто убогою в силу різних причин. Не копіювати, а використовувати вже працюючу схему, як вказівка ​​для дій.

2. Якщо ТЗ вам зрозуміло, то можна приступати до створення схеми даних. ВИКОРИСТОВУЙТЕ реляції. Якщо ви їх не використовуєте, значить, Access зі своїм функціоналом не так вже й потрібний. Основний плюс MS Access саме в наявності реляцій. Реалізація каскадного оновлення і в першу чергу каскадного видалення дозволяє не думати про зачищення бази даних і купі сміття в даних. По-друге, це дає суттєву економію місця під дані. Як я вже згадував в ряді статей, річна база з 10 таблицями в сумі на 100-200 тис. записів з 10-30 полів займає у мене 10-20 Мб.

3. Не зловживайте реляціями, якщо ви розраховуєте, що кількість записів в таблицях буде перевищувати 2-5 тис. Два приклади.
– Запит вистачає інформацію про назву товару з довідника за кодом в своєму полі. Якщо кількість товарів буде перевищувати певну критичну величину, то через якийсь час відкриття запиту стане великим. Видалення ж рядки із довідника призведе до неправильної посиланням у запиті.
– Запит вартості замовлення = сума вартості окремих позицій. Отримувати такий результат в запиті можна через DSum або свою функцію. Набагато швидше працює вкладений запит типу “SELECT SUM (sm) AS sm FROM tbl “, але і він через якийсь час почне заїкатися.
Резюме: зберігайте розрахункову інформацію в темпових полях, якщо ви плануєте роботу бази з великим числом записів.

4. Чи повинна база бути мережевий? Тобто повинні таблиці зберігатися в клієнті або бути прілінкованнимі. Для мене такого питання давно немає: всі дані повинні бути прілінкованнимі. Локальними залишаються: темпова таблиця, таблиці-охоронці локальної інформації (шляхи до бази даних, таблиця-перелік прілінкованних таблиць, таблиця-перелік звітів), тобто інформація, яка напряму залежить від версії клієнта.
Що це дає? Ви легко і швидко змінюєте клієнта (без імпорту / експорту даних). База вже готова як мережевий варіант.

5. Коли захищати базу даних? Якщо плануєте закривати дані і код за допомогою файлу груп, то краще робити це відразу і лише за допомогою майстра MS Access. Останнє дозволить уникнути безлічі косяків.
Зробити захист на працюючій базі даних, це зупинити роботу на добу і зробити базу можливо непрацездатною (забудете дати права на який-небудь запит, наприклад). Приклад: вже півроку збираюся закрити таким чином одну з розробок, але не можу в силу різних причин (не можливості зупинити конвеєрну роботу, доведеться тиждень стояти поруч і виправляти можливі косяки, та й просто руки дрожжат).

6. Інтерфейс – це важливо, але якщо немає пристойної схеми даних, то як його не лад.) Питання інтерфейсу – це окреме питання, і його ми обговоримо в іншій статті.

Можливо і навіть більш ніж імовірно, що тут охоплено не всі і не так детально, як декому б хотілося. Але головне завдання даного матеріалу – посіяти розумні думки. Детальну опрацювання можна знайти в інших статтях чи здогадатися самому.)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*