У мене цікава дискусія з іншим дизайнером баз даних щодо нормалізації. У цьому прикладі у нас є таблиця GameTitles, і кожен запис повинен містити рік виходу гри. Він каже, що 2NF передбачає, що все повинно бути нормалізовано, тож, щоб бути сумісним, поле року має бути розділене на таблицю ReleaseYears з власним первинним ключем, на який посилається таблиця GameTitles. Я кажу, що він повинен залишатися як поле у самій таблиці GameTitles.
Мій аргумент для цього полягає в тому, що рік - це просто не примітивне числове значення, яке є статичним за своєю суттю (тобто 2011 завжди буде 2011). Завдяки цьому він служить власним ідентифікатором і не потребує нічого для його посилання, оскільки він є таким, яким він є. Це також вводить додаткове обслуговування, оскільки тепер вам доведеться додати новий рік до таблиці лише для посилання на нього. Якщо ви препулюєте таблицю з великим діапазоном років, то у вас є додаткові записи, які потенційно взагалі не матимуть посилань на них. Це також збільшує розмір бази даних, оскільки тепер у вас є додаткова таблиця, накладні витрати та додатковий первинний ключ для самого року. Якщо ви збережете рік як поле в таблиці GameTitles, ви усунете все це додаткове обслуговування та накладні витрати.
Думки про це?
редагувати: мав на увазі розмістити це в StackOverflow. Чи може хтось проголосувати, щоб видалити це чи позначити це увагою?