ервинні ключі являють собою унікальні ідентифікатори для кожної стрічки. SQL Server дає можливість визначити в якості первинного ключа будь-який стовпець чи групу стовпців, які повинні містити унікальні значення (наявність null -значень не дозволяється !!!). Найбільш імовірними кандидатами на цю роль є, як правило, ідентифікуючі стовпці. Таблиця може мати лише один первинний ключ. Крім того, якщо використовується складовий ключ із декількох стовпців, тоді значення всіх стовпців об’єднуються, для визначення унікальності стрічок.
Вибір первинного ключа – один із найважливіших виборів, що робиться для конкретної таблиці, оскільки первинний ключ буде мігрувати в інші таблиці як вказівник на конкретне значення.
п.2 |
п.1 |
а) |
п.2 |
п.1 |
б) |
Рис. 2.6. Створення первинного ключа таблиці
Створення ПЕРВИННОГО КЛЮЧА: 1. У конструкторові таблиць вибрати стовпець (стовпці), який (які) необхідно використовувати в якості первинного ключа; для цього, утримуючи клавішу Ctrl, вибрати мишею ці стовпці, натиснувши зліва від їхнього імені (рис. 2.6). 2. Натиснути правою клавішею миші по вибраних стовпцях та в контекстному меню вибрати команду Set Primary Key (задати первинний ключ). 3. Зберегти зміни в таблиці. |
Примітка: при створенні первинного ключа SQL Server автоматично створює унікальний кластерний індекс, при умові, що не створено ще жодного іншого кластерного індексу, або тоді некластерний.
п.1 |
а) |
п.4 |
п.5 |
п.3 |
п.6 |
п.2 |
б) |
в) |
Рис. 2.7. Редагування параметрів первинного ключа таблиці
Налаштування параметрів ПЕРВИННОГО КЛЮЧА:
1. На панелі інструментів (рис. 2.7а) натиснути по іконці Manage Indexes and Keys (керування індексами та ключами).
2. У діалоговому вікні Indexes/Keys (індекси та ключі) у лівій колонці (рис. 2.7б) вибрати створений первинний ключ (крім нього можуть бути ще й інші ключі).
3. У правій частині діалогового вікна в полі (Name) [(ім’я)] скорегувати назву первинного ключа в більш зрозумілий контекст, наприклад, замість «1» вписати назву стовпця.
4. У полі Create As Clustered (створити як кластерний) вибрати необхідний варіант: кластерний чи некластерний.
5. У полі Fill Factor (фактор заповнення) при необхідності можна задати значення параметру заповнення.
6. У полі Columns (стовпці) вказуються вибрані стовпці для індексування та їхній порядок у індексі. Для внесення змін натиснути кнопку із трикрапкою, розташовану справа від поля; у результаті чого відобразиться діалогове вікно Index Columns (стовпці індексу) (рис. 2.7в). У лівій частині вікна за допомогою випадаючих списків поля Column Name (ім’я стовпця) можна змінити кількість, вид та порядок входження стовпців у первинний ключ. Для кожного стовпця справа від нього в полі Sort Order (порядок сортування) можна задати окремий порядок сортування для індексу як Ascending (по зростанню), або як Descending (по спаданню).
7. Закрити діалогове вікно та зберегти зміни в таблиці.
Фактор заповнення індексів визначає, який відсоток вільного місця на сторінках має зарезервувати система при створенні нового індексу. Якщо сторінки повністю заповненні, то при добавленні нових даних у таблицю системі необхідно їх розщеплювати, що у свою чергу знижує продуктивність. Значення, рівне 100, означає, що сторінки будуть повністю заповненими. У цьому випадку для збереження даних необхідно мінімум простору. Менше значення залишає більше вільного простору на сторінках, і, відповідно, знижується потреба у розбитті сторінок з даними в процесі росту індексів, але при цьому необхідно більше місця для збереження даних. Хоча зарезервований простір з часом теж заповниться, і при вставленні даних серверу все таки доведеться виконувати розщеплення сторінок; при необхідності перерозподілу даних, рекомендують заново створити індекс.
Встановлення фактору заповнення – це певний компроміс для продуктивності: при надто великому значенні, система буде повільніше виконувати операції додавання даних у таблицю, при надто низькому – можливе зниження продуктивності читання даних. Значення 100% рекомендують використовувати для статичних таблиць, що призначенні лише для читання.
За замовчуванням значення фактору заповнення встановлене в 0%, що вказує серверу на автоматичну оптимізацію заповнення індексів, будь-яке інше значення є дійсним відсотком заповнення. Дії системи при значенню 0% в певній мірі аналогічні як при значенню 100: SQL Server створює кластерні індекси із заповненими сторінками даних та некластерні індекси із заповненими сторінками у вершинах індексного дерева. Однак значення 0%, на відміну від 100, дає можливість росту на верхньому рівні дерева індексів. Тому 100% заповнення слід використовувати лише в таблицях, призначених тільки для читання, і в які не планується додавати дані.
Значення поля Pad Index (розрідити індекс) вказує на необхідність встановлення долі вільного простору, відповідно до значення фактору заповнення, у проміжних сторінках цього індексу.