У мене є сценарій розробки таблиць, і я, як тип, який не є DBA, хотів би думати про те, який є більш масштабним.
Скажімо, вам пропонується записати інформацію про будинки для метрополітену, починаючи з невеликого мікрорайону (200 будинків), але з часом зростаючи до 5000000+ будинків.
Вам потрібно зберігати базову інформацію: ID # (унікальний лот #, який ми можемо використовувати як унікальний індекс), Addr, City, State, Zip. Тонка, проста таблиця впорається з цим.
Але щороку вам пропонують записувати додаткову інформацію про всі будинки - і ЩО інформація буде змінюватися щороку. Так, наприклад, перший рік вас просять записати прізвище власників і квадратні кадри. На другий рік вас просять зберегти прізвище, але скиньте квадратні кадри і замість цього почніть збирати імена власників.
Нарешті - щороку кількість зайвих стовпців змінюватиметься. Можна почати з 2 додаткових стовпців, потім перейти до 6 наступного року, а потім повернутися до 2.
Отже, один підхід таблиці полягає в тому, щоб спробувати додати користувацьку інформацію у вигляді стовпців у домашніх таблицях, щоб була лише одна таблиця.
Але в мене є ситуація, коли хтось викладав таблиці для цього як:
Стовпці "Домашня таблиця": ідентифікатор, адреса, місто, штат, поштовий індекс - з одним рядком на будинок
ID Addr City State Zip
-------------------------------------------
1 10 Maple Street Boston MA 11203
2 144 South Street Chelmsford MA 11304
3 1 Main Avenue Lowell MA 11280
Стовпці "Спеціальна таблиця інформації": ідентифікатор, ім'я, значення - таблиця виглядає так:
ID Name Value
1 Last Name Smith
2 Last Name Harrison
3 Last Name Markey
1 Square Footage 1200
2 Square Footage 1930
3 Square Footage
Таким чином, існує кілька рядків для кожного окремого запису будинку. Щороку, коли потрібна необов'язкова інформація змінюється, ця таблиця буквально переробляється, тому наступного року вона може виглядати так:
1 Last Name Smith
2 Last Name Harrison
3 Last Name Markey
1 First Name John
2 First Name Harry
3 First Name Jim
Врешті-решт, ви наберете 100 000 домашніх рядів І на рік з’являється 10 додаткових відомостей; друга таблиця наразі складає 1 000 000 рядків інформації, багато з яких мають зайву (описову) інформацію. Загальні вимоги до бази даних полягають у тому, що людям потрібно буде отримувати інформацію про домашні ряди + пов’язані значення спеціальних полів тисячі разів на день.
Тож моє запитання: чи погана (або жахлива) практика замість того, щоб:
A) Розкладіть таблицю будинку з відгадкою на макс. # Користувацьких стовпців (називається можливо "від 1" до "10") та вставляйте ці власні значення прямо в рядки будинку
АБО
B) Зберігайте нестандартну інформацію в домашній таблиці, але щороку, коли вимоги змінюються, перебудовуйте таблицю будинку лише з # стовпцями, необхідними для користувацької інформації, з думкою, що вимоги можуть збитися, і ви ніколи не знаєте, скільки максимальних необов'язкові поля можуть бути запрошені?
Дякую, сподіваюся, це має сенс!