Создание ограничений таблиц и индексов с помощью Azure Data Studio

Завершено

Пришло время завершить таблицы для веб-приложения с справочником по карточкам. При использовании знаний из предыдущих единиц модель данных должна использовать связи таблиц, первичные ключи и индексы. Кроме того, необходимо обеспечить целостность данных с ограничениями.

Схема модели данных с четырьмя связанными таблицами.

В этом упражнении вы создадите отношения таблиц, первичные ключи, столбцы идентификаторов и индексы для веб-приложения каталога карточек.

Таблица карточек

Помните правила таблицы карточек:

  • Только одна строка для каждой карточки в таблице карточек
  • Карточка может иметь несколько переводов на язык исходного текста и имени карточки.
  • Атрибуты карточек:
    • Идентификатор карточки
    • Имя (не более 100 символов)
    • Цвет (не более 10 символов)
    • Сила (ни одна карта не может иметь силу больше 20)
    • Тип (не более 10 символов)
    • Текст (текстовая область имеет размер 500 символов)
    • Статус
    • Искусство
  • Карточка может быть только одним из следующих цветов: черный, синий, зеленый, красный, белый, оранжевый
  • Карточка может быть только одним из следующих типов: герой, монстр, заклинание, оружие

Необходимо создать первичный ключ в столбце card_id и реализовать правила ограничения для card_color и card_type. Другое правило, которое вы должны определить, заключается в том, какие столбцы могут содержать значения NULL и какие обязательны.

Вы можете обновить таблицу с помощью того, что вы знаете из предыдущих единиц и правил сценария:

Карты

Имя столбца Тип данных Недействительный? Значения по умолчанию Примечания
идентификатор карты инт Нет ИДЕНТИФИКАТОР и первичный ключ
название карты nvarchar(100) Нет
тип_карты nvarchar(10) Нет оружие, броня, заклинание, монстр
цвет карты nvarchar(10) Нет оранжевый, черный, зеленый, синий, белый, красный
мощность_карты tinyint Нет Он может использовать целое число tinyint здесь, потому что мощность не будет больше 20.
текст карты nvarchar(500) да
статус карты бит Нет 1
card_art varbinary(max) (максимальная длина двоичных данных) Нет

Обновление таблицы карточек в Azure Data Studio

  1. Открыв Azure Data Studio из предыдущего упражнения, найдите таблицу dbo.card в навигаторе подключений в папке таблиц. Щелкните правой кнопкой мыши таблицу карточек и выберите "Конструктор".

    Снимок экрана, показывающий, как кликнуть правой кнопкой мыши на таблице карточек в навигаторе подключений и выбрать 'Дизайн'.

  2. Первая задача заключается в том, чтобы указать, какие столбцы разрешают значения NULL и какие - нет. Карта должна содержать всю соответствующую информацию на ней, такую как имя, тип, цвет, мощность, состояние и изображение. Единственный столбец, в который не нужно содержать текст, — это столбец card_text . С помощью флажков в столбце Allow Nulls в конструкторе таблиц снимите все флажки, за исключением флажка в строке card_text.

    Снимок экрана, показывающий, как снять флажки, кроме флажков в строке card_text.

  3. card_id — это идентификатор первичного ключа таблицы карточек. В столбце Primary Key конструктора таблиц установите флажок, чтобы сделать card_id первичным ключом таблицы.

    Снимок экрана, показывающий, как выбрать флажок для card_id, чтобы сделать этот первичный ключ для таблицы.

    Заметка

    Помните, определив первичный ключ, вы автоматически добавили кластеризованный индекс rowstore в эту таблицу.

  4. Помимо создания столбца card_id первичного ключа, необходимо также задать этот столбец в качестве столбца удостоверения. Чтобы сделать card_id столбцом идентификаторов, перейдите в область свойств столбца и прокрутите вниз, чтобы найти раздел Спецификация идентификатора. Здесь установите флажок "Удостоверение". Значения в поле Начальное значение идентификатора и Инкремент идентификатора должны быть установлены в 1.

    Снимок экрана, на котором показано, как выбрать флажок

  5. Затем необходимо добавить значения по умолчанию к card_type, чтобы ограничить этот столбец одним из следующих: оружие, броня, заклинание или монстр. Чтобы добавить значения по умолчанию в этот столбец, перейдите на вкладку "Контрольные ограничения" в конструкторе таблиц

    Снимок экрана: выбор вкладки

  6. Затем нажмите кнопку +Создать ограничение проверки , чтобы добавить эти ограничения в столбец.

    Снимок экрана, показывающий, как выбрать кнопку + Новый проверочный ограничитель.

  7. Задайте следующие значения в области свойств контрольных ограничений . В поле "Имя" измените имя ограничения с предоставленного по умолчанию на CK_type. Перейдите к полю выражения и введите выражение так, как это показано в следующем тексте:

    [card_type] = 'weapon' OR [card_type] = 'armor' OR [card_type] = 'spell' OR [card_type] = 'monster'
    

    Снимок экрана: создание ограничения проверки для столбца card_type.

  8. Как и в случае с card_type, необходимо добавить значения по умолчанию в столбец card_color . Цвет карточки может быть только следующими значениями: оранжевый, черный, зеленый, синий, белый или красный. При этом на вкладке "Контрольные ограничения" в конструкторе таблиц нажмите кнопку +Создать ограничение проверки , чтобы добавить новое ограничение в столбец.

    Снимок экрана, на котором показано, как нажать + Новое ограничение проверки, чтобы добавить новое ограничение в столбец card_color.

    В поле "Имя" измените имя ограничения с предоставленного по умолчанию на CK_color. Перейдите к полю выражения и введите выражение так, как это показано в следующем тексте:

    [card_color] = 'orange' OR [card_color] = 'black' OR [card_color] = 'green' OR [card_color] = 'blue' OR [card_color] = 'white' OR [card_color] = 'red'
    

    Представление ограничений проверки должно выглядеть следующим образом после добавления ограничения card_color:

    Снимок экрана: представление ограничений проверки конструктора таблиц в Azure Data Studio, в котором показано, как добавить новые ограничения проверки в столбец.

  9. Таблица карточек завершена и должна выглядеть следующим образом:

    Снимок экрана: таблица карточек, готовая в Azure Data Studio.

  10. Нажмите кнопку "Опубликовать изменения" в левом верхнем углу окна конструктора таблиц, чтобы сохранить эти изменения таблицы в базе данных.

    Снимок экрана, показывающий, как нажать кнопку

    Если появится запрос на просмотр изменений, сначала установите флажок, подтверждающий изменения, а затем нажмите кнопку "Обновить базу данных ".

    Снимок экрана: нажатие кнопки

Таблица переводов

Таблица переводов будет первой, которая использует внешний ключ для ссылки на таблицу карточек по card_id. Эта связь не только создаст ссылку на столбец card_id в таблице карточек, но и предотвратит добавление строк в эту таблицу без существования соответствующего card_id. Кроме того, он будет иметь столбец идентификаторов (translation_id), который будет служить первичным ключом. Это повторяющаяся ситуация, которую вы увидите в каждой таблице, созданной в сценарии приложения карты.

С учетом столбца идентичности и внешнего ключа, вот что вы добавите в таблицу переводов:

переводы карт

Имя столбца Тип данных Недействительный? Значения по умолчанию Примечания
идентификатор_перевода инт Нет ИДЕНТИФИКАТОР и первичный ключ
идентификатор карты инт Нет Внешний ключ обратно в таблицу "Карточки"
язык_карточки_перевода nvarchar(50) Нет
имя_карты_перевода nvarchar(500) Нет Переведенное имя карточки
текст переводческой карточки nvarchar(2000) да Переведенный текст карточки

Обновление таблицы переводов в Azure Data Studio

  1. Найдите таблицу dbo.card_translations в навигаторе подключений в папке таблиц. Щелкните таблицу правой кнопкой мыши и выберите "Конструктор".

    Снимок экрана, показывающий, как щелкнуть правой кнопкой мыши таблицу card_translations в навигаторе подключений и выбрать конструктор.

  2. Во-первых, определите, какие столбцы разрешают значения NULL и которые не допускают. Строка в этой таблице должна иметь идентификатор, ссылку на card_id из таблицы карточек , язык перевода и переведенное имя карточки. Как и в таблице карточек, translation_card_text может иметь значение NULL. В столбце Allow Nulls в конструкторе таблиц снимите флажки, кроме флажков в строке translation_card_text.

    Снимок экрана, показывающий, как снять флажки, кроме флажков в строке translation_card_text.

  3. Столбец translation_id является идентификатором первичного ключа этой таблицы. В столбце первичный ключ конструктора таблиц установите флажок, чтобы сделать translation_id первичным ключом таблицы.

    Снимок экрана, показывающий, как выбрать флажок для translation_id, чтобы сделать этот первичный ключ для таблицы.

    Заметка

    Помните, определив первичный ключ, вы автоматически добавили кластеризованный индекс rowstore в эту таблицу.

  4. В дополнение к установке столбца translation_id в качестве первичного ключа, необходимо также задать этот столбец как столбец идентификатора. Чтобы задать translation_id в качестве идентификационного столбца, перейдите в область Свойства столбца и прокрутите вниз, чтобы найти раздел Спецификация идентичности. Здесь установите флажок "Является удостоверением личности". Значения в поле Начальное значение для идентификатора и Поле прироста идентификатора должны быть установлены на 1.

    Снимок экрана, показывающий, как проверить флажок

  5. После создания столбцов необходимо создать внешний ключ. Откройте вкладку "Внешние ключи " в конструкторе таблиц и нажмите кнопку +Создать внешний ключ .

    Снимок экрана: выбор вкладки

  6. В поле "Имя внешнего ключа" введите FK_card_id_to_translation и в раскрывающемся списке "Внешняя таблица" выберите dbo.cards (таблица карточек).

    Снимок экрана, показывающий, как ввести FK_card_id_to_translation в качестве имени и использовать раскрывающийся список 'Внешняя таблица' для выбора dbo.cards.

  7. В области свойств внешнего ключа справа от конструктора таблиц выберите кнопку + Создать сопоставление столбцов.

    Снимок экрана: нажатие кнопки +Создать сопоставление столбцов в области свойств внешнего ключа.

  8. Выберите card_id, используя раскрывающийся список, для полей «Столбец» и «Внешний столбец».

    Снимок экрана: выбор card_id с помощью раскрывающегося списка для полей столбцов и внешних столбцов.

    Теперь таблица card_translations завершена и должна выглядеть следующим образом:

    Снимок экрана: таблица перевода завершенных карточек в Azure Data Studio.

  9. Нажмите кнопку "Опубликовать изменения" в левом верхнем углу окна конструктора таблиц, чтобы сохранить эти изменения таблицы в базе данных.

    Снимок экрана, показывающий, как выбрать кнопку

    Если появится запрос на просмотр изменений, сначала установите флажок, подтверждающий изменения, а затем нажмите кнопку "Обновить базу данных ".

    Снимок экрана: нажатие кнопки

Таблица наборов

Обновление таблицы наборов незначительное; нужно просто добавить первичный ключ, который также будет столбцом идентичности. Для этого обновления вы будете использовать столбец set_id . Кроме того, необходимо задать все столбцы, чтобы не принимать значения NULL.

Наборы

Имя столбца Тип данных Недействительный? Значения по умолчанию Примечания
set_id инт Нет ИДЕНТИФИКАТОР и первичный ключ
установить_имя nvarchar(50) Нет
установить_дату дата Нет Не требуется хранить время (часы/минуты/секунды), поэтому DATE будет работать здесь.

Обновление таблицы наборов в Azure Data Studio

  1. Найдите таблицу dbo.sets в навигаторе подключений в папке таблиц. Щелкните таблицу правой кнопкой мыши и выберите Конструктор.

    Снимок экрана, показывающий, как щелкнуть таблицу наборов правой кнопкой мыши и выбрать конструктор.

  2. Снимите все флажки в столбце Allow Nulls в конструкторе таблиц.

    Снимок экрана, показывающий, как снять все отметки в таблице наборов данных, чтобы разрешить значения NULL.

  3. Столбец set_id является идентификатором первичного ключа этой таблицы. В столбце Primary Key конструктора таблиц установите флажок, чтобы сделать set_id первичным ключом таблицы.

    На снимке экрана показано, как выбрать флажок для set_id, чтобы установить его в качестве первичного ключа для таблицы.

    Заметка

    Помните, определив первичный ключ, вы автоматически добавили кластеризованный индекс rowstore в эту таблицу.

  4. Помимо создания столбца set_id первичным ключом, необходимо также задать этот столбец как столбец идентичности. Чтобы сделать столбец set_id столбцом удостоверения, перейдите в область свойств столбца и прокрутите вниз, чтобы найти раздел "Спецификация идентификации ". Здесь установите флажок "Удостоверение". Значения в поле Начальное значение идентификатора и Поле увеличения идентификатора должны быть установлены на 1.

    Снимок экрана: как выбрать флажок

    Таблица наборов завершена и должна выглядеть следующим образом:

    Скриншот таблицы завершенных наборов в Azure Data Studio.

  5. Нажмите кнопку "Опубликовать изменения" в левом верхнем углу окна конструктора таблиц, чтобы сохранить эти изменения таблицы в базе данных.

    Снимок экрана, показывающий, как нажать кнопку

    Если появится запрос на просмотр изменений, сначала установите флажок, подтверждающий изменения, а затем нажмите кнопку "Обновить базу данных ".

    Снимок экрана, показывающий, как выбрать кнопку

Таблица set_lists

Для столбца set_list_id также требуется столбец удостоверений или первичный ключ. Затем необходимо создать два указателя обратно на карточки и таблицу наборов, которые будут внешними ключами; card_id и set_id с соответствующими типами данных для этих таблиц. Эта set_lists таблица будет важна, когда пользователь хочет получить всю информацию о картах в определенном наборе. Кроме того, эти связи внешнего ключа не позволят создавать таблицы с повторяющимися строками или пытаться объединить set_id в один столбец таблицы карточек, что приведет к ошибкам анализа и проблемам с производительностью.

Таблица set_lists будет выглядеть следующим образом с изменениями:

наборы_списков

Имя столбца Тип данных Недействительный? Значения по умолчанию Примечания
Установить_идентификатор_списка инт Нет ИДЕНТИФИКАТОР и первичный ключ
идентификатор карты инт Нет Внешний ключ обратно в таблицу "Карточки"
set_id инт Нет Внешний ключ, ссылающийся на таблицу "Наборы"

Обновление таблицы set_lists в Azure Data Studio

  1. Найдите таблицу dbo.set_lists в навигаторе подключений в папке таблиц. Щелкните правой кнопкой мыши таблицу карточек и выберите "Конструктор".

    Снимок экрана, показывающий, как щелкнуть правой кнопкой мыши таблицу set_lists и выбрать конструктор.

  2. Снимите все флажки в столбце Allow Nulls в конструкторе таблиц.

    Снимок экрана, показывающий, как снять флажки для таблицы set_lists, чтобы разрешить значения NULL.

  3. Столбец set_list_id — это идентификатор первичного ключа этой таблицы. В столбце первичного ключа конструктора таблиц установите флажок , чтобы сделать столбец set_list_id первичным ключом таблицы.

    Снимок экрана, показывающий, как выбрать флажок для set_list_id, чтобы сделать этот первичный ключ для таблицы.

    Заметка

    Помните, определив первичный ключ, вы автоматически добавили кластеризованный индекс rowstore в эту таблицу.

  4. Помимо установки столбца set_list_id в качестве первичного ключа, необходимо также обозначить этот столбец как столбец удостоверения. Чтобы сделать столбец set_list_id столбцом идентификатора, перейдите в область Свойства столбца и прокрутите вниз, чтобы найти раздел Спецификация идентификации. Здесь установите флажок Is Identity. Значения в полях "Начальное значение идентификатора" и "Прирост идентификатора" должны быть установлены на 1.

    Снимок экрана, показывающий, как выбрать флажок

  5. Затем необходимо создать внешние ключи. Откройте вкладку "Внешние ключи " в конструкторе таблиц и нажмите кнопку +Создать внешний ключ .

    Снимок экрана: выбор вкладки

  6. В поле "Имя внешнего ключа" введите FK_card_id_to_card и используйте раскрывающийся список "Внешняя таблица", чтобы выбрать dbo.cards.

    Экранная демонстрация, показывающая, как ввести FK_card_id_to_card и использовать раскрывающийся список «Иностранная таблица» для выбора dbo.cards.

  7. В области свойств внешнего ключа справа от дизайнера таблиц нажмите кнопку + Новое сопоставление столбцов.

    Снимок экрана, на котором показано, как выбрать кнопку +Создать сопоставление столбцов в области свойств внешнего ключа.

  8. Выберите card_id с помощью раскрывающегося списка для полей Столбец и Внешний столбец.

    Снимок экрана: выбор card_id с помощью раскрывающегося списка для полей столбца и внешнего столбца.

  9. Снова нажмите кнопку +Создать внешний ключ .

    Снимок экрана, показывающий, как выбрать вкладку

  10. В поле Имя внешнего ключа введите FK_set_id_to_set и используйте раскрывающийся список Внешняя таблица, чтобы выбрать dbo.sets.

    Снимок экрана: ввод FK_set_id_to_set и использование раскрывающегося списка

  11. В области свойств внешнего ключа справа от конструктора таблиц выберите + кнопку Новое сопоставление столбцов.

    Скриншот, показывающий, как во второй раз в области свойств внешнего ключа справа от конструктора таблиц для set_lists, нажимается кнопка +Создать сопоставление столбцов.

  12. Выберите set_id с помощью раскрывающегося списка для полей Столбец и Внешний столбец.

    Снимок экрана, показывающий, как выбрать

  13. Теперь таблица set_lists завершена. Он должен выглядеть следующим образом:

    Снимок экрана таблицы с полным списком наборов карточек в Azure Data Studio.

  14. Нажмите кнопку "Опубликовать изменения" в левом верхнем углу окна конструктора таблиц, чтобы сохранить эти изменения таблицы в базе данных.

    Снимок экрана, показывающий, как выбрать кнопку

    Если появится запрос на просмотр изменений, сначала установите флажок, подтверждающий изменения, а затем нажмите кнопку "Обновить базу данных ".

    Снимок экрана: кнопка