Я провів неабияку роботу з реляційними базами даних, і думаю, що я досить добре розумію основні поняття хорошого дизайну схем. Нещодавно мені було доручено взяти на себе проект, де БД був розроблений високооплачуваним консультантом. Будь ласка, дайте мені знати, чи моя кишка непомітна - "WTF ??!" - це гарантовано, чи цей хлопець такий геній, що він працює поза моєю цариною?
Розглянута БД - це власний додаток, який використовується для введення запитів працівників. Просто переглянувши невеликий його розділ, ви маєте інформацію про користувачів та інформацію про запит, що робиться. Я б створив це так:
Таблиця користувачів:
UserID (primary Key, indexed, no dupes)
FirstName
LastName
Department
Таблиця запитів
RequestID (primary Key, indexed, no dupes)
<...> various data fields containing request details
UserID -- foreign key associated with User table
Просте, правда?
Консультант розробив це так (із зразками даних):
UsersTable
UserID FirstName LastName
234 John Doe
516 Jane Doe
123 Foo Bar
ВідділиТаблиця
DepartmentID Name
1 Sales
2 HR
3 IT
UserDepartmentTable
UserDepartmentID UserID Department
1 234 2
2 516 2
3 123 1
RequestTable
RequestID UserID <...>
1 516 blah
2 516 blah
3 234 blah
Вся база даних побудована так, кожен фрагмент даних укладений у власну таблицю з числовими ідентифікаторами, що пов'язують все разом. Мабуть, консультант читав про OLAP і хотів "швидкості цілочисельних пошуку"
Він також має велику кількість збережених процедур для перехресного посилання на всі ці таблиці.
Це дійсна конструкція для малого та середнього розміру SQL БД?
Дякуємо за коментарі / відповіді ...