Создание ограничений таблиц и индексов с помощью 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
Открыв Azure Data Studio из предыдущего упражнения, найдите таблицу dbo.card в навигаторе подключений в папке таблиц. Щелкните правой кнопкой мыши таблицу карточек и выберите "Конструктор".
Первая задача заключается в том, чтобы указать, какие столбцы разрешают значения NULL и какие - нет. Карта должна содержать всю соответствующую информацию на ней, такую как имя, тип, цвет, мощность, состояние и изображение. Единственный столбец, в который не нужно содержать текст, — это столбец card_text . С помощью флажков в столбце Allow Nulls в конструкторе таблиц снимите все флажки, за исключением флажка в строке card_text.
card_id — это идентификатор первичного ключа таблицы карточек. В столбце Primary Key конструктора таблиц установите флажок, чтобы сделать card_id первичным ключом таблицы.
Заметка
Помните, определив первичный ключ, вы автоматически добавили кластеризованный индекс rowstore в эту таблицу.
Помимо создания столбца card_id первичного ключа, необходимо также задать этот столбец в качестве столбца удостоверения. Чтобы сделать card_id столбцом идентификаторов, перейдите в область свойств столбца и прокрутите вниз, чтобы найти раздел Спецификация идентификатора. Здесь установите флажок "Удостоверение". Значения в поле Начальное значение идентификатора и Инкремент идентификатора должны быть установлены в 1.
Затем необходимо добавить значения по умолчанию к card_type, чтобы ограничить этот столбец одним из следующих: оружие, броня, заклинание или монстр. Чтобы добавить значения по умолчанию в этот столбец, перейдите на вкладку "Контрольные ограничения" в конструкторе таблиц
Затем нажмите кнопку +Создать ограничение проверки , чтобы добавить эти ограничения в столбец.
Задайте следующие значения в области свойств контрольных ограничений . В поле "Имя" измените имя ограничения с предоставленного по умолчанию на CK_type. Перейдите к полю выражения и введите выражение так, как это показано в следующем тексте:
[card_type] = 'weapon' OR [card_type] = 'armor' OR [card_type] = 'spell' OR [card_type] = 'monster'
Как и в случае с card_type, необходимо добавить значения по умолчанию в столбец 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:
Таблица карточек завершена и должна выглядеть следующим образом:
Нажмите кнопку "Опубликовать изменения" в левом верхнем углу окна конструктора таблиц, чтобы сохранить эти изменения таблицы в базе данных.
Если появится запрос на просмотр изменений, сначала установите флажок, подтверждающий изменения, а затем нажмите кнопку "Обновить базу данных ".
Таблица переводов
Таблица переводов будет первой, которая использует внешний ключ для ссылки на таблицу карточек по card_id. Эта связь не только создаст ссылку на столбец card_id в таблице карточек, но и предотвратит добавление строк в эту таблицу без существования соответствующего card_id. Кроме того, он будет иметь столбец идентификаторов (translation_id), который будет служить первичным ключом. Это повторяющаяся ситуация, которую вы увидите в каждой таблице, созданной в сценарии приложения карты.
С учетом столбца идентичности и внешнего ключа, вот что вы добавите в таблицу переводов:
переводы карт
Имя столбца | Тип данных | Недействительный? | Значения по умолчанию | Примечания |
---|---|---|---|---|
идентификатор_перевода | инт | Нет | ИДЕНТИФИКАТОР и первичный ключ | |
идентификатор карты | инт | Нет | Внешний ключ обратно в таблицу "Карточки" | |
язык_карточки_перевода | nvarchar(50) | Нет | ||
имя_карты_перевода | nvarchar(500) | Нет | Переведенное имя карточки | |
текст переводческой карточки | nvarchar(2000) | да | Переведенный текст карточки |
Обновление таблицы переводов в Azure Data Studio
Найдите таблицу dbo.card_translations в навигаторе подключений в папке таблиц. Щелкните таблицу правой кнопкой мыши и выберите "Конструктор".
Во-первых, определите, какие столбцы разрешают значения NULL и которые не допускают. Строка в этой таблице должна иметь идентификатор, ссылку на card_id из таблицы карточек , язык перевода и переведенное имя карточки. Как и в таблице карточек, translation_card_text может иметь значение NULL. В столбце Allow Nulls в конструкторе таблиц снимите флажки, кроме флажков в строке translation_card_text.
Столбец translation_id является идентификатором первичного ключа этой таблицы. В столбце первичный ключ конструктора таблиц установите флажок, чтобы сделать translation_id первичным ключом таблицы.
Заметка
Помните, определив первичный ключ, вы автоматически добавили кластеризованный индекс rowstore в эту таблицу.
В дополнение к установке столбца translation_id в качестве первичного ключа, необходимо также задать этот столбец как столбец идентификатора. Чтобы задать translation_id в качестве идентификационного столбца, перейдите в область Свойства столбца и прокрутите вниз, чтобы найти раздел Спецификация идентичности. Здесь установите флажок "Является удостоверением личности". Значения в поле Начальное значение для идентификатора и Поле прироста идентификатора должны быть установлены на 1.
После создания столбцов необходимо создать внешний ключ. Откройте вкладку "Внешние ключи " в конструкторе таблиц и нажмите кнопку +Создать внешний ключ .
В поле "Имя внешнего ключа" введите FK_card_id_to_translation и в раскрывающемся списке "Внешняя таблица" выберите dbo.cards (таблица карточек).
В области свойств внешнего ключа справа от конструктора таблиц выберите кнопку + Создать сопоставление столбцов.
Выберите card_id, используя раскрывающийся список, для полей «Столбец» и «Внешний столбец».
Теперь таблица card_translations завершена и должна выглядеть следующим образом:
Нажмите кнопку "Опубликовать изменения" в левом верхнем углу окна конструктора таблиц, чтобы сохранить эти изменения таблицы в базе данных.
Если появится запрос на просмотр изменений, сначала установите флажок, подтверждающий изменения, а затем нажмите кнопку "Обновить базу данных ".
Таблица наборов
Обновление таблицы наборов незначительное; нужно просто добавить первичный ключ, который также будет столбцом идентичности. Для этого обновления вы будете использовать столбец set_id . Кроме того, необходимо задать все столбцы, чтобы не принимать значения NULL.
Наборы
Имя столбца | Тип данных | Недействительный? | Значения по умолчанию | Примечания |
---|---|---|---|---|
set_id | инт | Нет | ИДЕНТИФИКАТОР и первичный ключ | |
установить_имя | nvarchar(50) | Нет | ||
установить_дату | дата | Нет | Не требуется хранить время (часы/минуты/секунды), поэтому DATE будет работать здесь. |
Обновление таблицы наборов в Azure Data Studio
Найдите таблицу dbo.sets в навигаторе подключений в папке таблиц. Щелкните таблицу правой кнопкой мыши и выберите Конструктор.
Снимите все флажки в столбце Allow Nulls в конструкторе таблиц.
Столбец set_id является идентификатором первичного ключа этой таблицы. В столбце Primary Key конструктора таблиц установите флажок, чтобы сделать set_id первичным ключом таблицы.
Заметка
Помните, определив первичный ключ, вы автоматически добавили кластеризованный индекс rowstore в эту таблицу.
Помимо создания столбца set_id первичным ключом, необходимо также задать этот столбец как столбец идентичности. Чтобы сделать столбец set_id столбцом удостоверения, перейдите в область свойств столбца и прокрутите вниз, чтобы найти раздел "Спецификация идентификации ". Здесь установите флажок "Удостоверение". Значения в поле Начальное значение идентификатора и Поле увеличения идентификатора должны быть установлены на 1.
Таблица наборов завершена и должна выглядеть следующим образом:
Нажмите кнопку "Опубликовать изменения" в левом верхнем углу окна конструктора таблиц, чтобы сохранить эти изменения таблицы в базе данных.
Если появится запрос на просмотр изменений, сначала установите флажок, подтверждающий изменения, а затем нажмите кнопку "Обновить базу данных ".
Таблица set_lists
Для столбца set_list_id также требуется столбец удостоверений или первичный ключ. Затем необходимо создать два указателя обратно на карточки и таблицу наборов, которые будут внешними ключами; card_id и set_id с соответствующими типами данных для этих таблиц. Эта set_lists таблица будет важна, когда пользователь хочет получить всю информацию о картах в определенном наборе. Кроме того, эти связи внешнего ключа не позволят создавать таблицы с повторяющимися строками или пытаться объединить set_id в один столбец таблицы карточек, что приведет к ошибкам анализа и проблемам с производительностью.
Таблица set_lists будет выглядеть следующим образом с изменениями:
наборы_списков
Имя столбца | Тип данных | Недействительный? | Значения по умолчанию | Примечания |
---|---|---|---|---|
Установить_идентификатор_списка | инт | Нет | ИДЕНТИФИКАТОР и первичный ключ | |
идентификатор карты | инт | Нет | Внешний ключ обратно в таблицу "Карточки" | |
set_id | инт | Нет | Внешний ключ, ссылающийся на таблицу "Наборы" |
Обновление таблицы set_lists в Azure Data Studio
Найдите таблицу dbo.set_lists в навигаторе подключений в папке таблиц. Щелкните правой кнопкой мыши таблицу карточек и выберите "Конструктор".
Снимите все флажки в столбце Allow Nulls в конструкторе таблиц.
Столбец set_list_id — это идентификатор первичного ключа этой таблицы. В столбце первичного ключа конструктора таблиц установите флажок , чтобы сделать столбец set_list_id первичным ключом таблицы.
Заметка
Помните, определив первичный ключ, вы автоматически добавили кластеризованный индекс rowstore в эту таблицу.
Помимо установки столбца set_list_id в качестве первичного ключа, необходимо также обозначить этот столбец как столбец удостоверения. Чтобы сделать столбец set_list_id столбцом идентификатора, перейдите в область Свойства столбца и прокрутите вниз, чтобы найти раздел Спецификация идентификации. Здесь установите флажок Is Identity. Значения в полях "Начальное значение идентификатора" и "Прирост идентификатора" должны быть установлены на 1.
Затем необходимо создать внешние ключи. Откройте вкладку "Внешние ключи " в конструкторе таблиц и нажмите кнопку +Создать внешний ключ .
В поле "Имя внешнего ключа" введите FK_card_id_to_card и используйте раскрывающийся список "Внешняя таблица", чтобы выбрать dbo.cards.
В области свойств внешнего ключа справа от дизайнера таблиц нажмите кнопку + Новое сопоставление столбцов.
Выберите card_id с помощью раскрывающегося списка для полей Столбец и Внешний столбец.
Снова нажмите кнопку +Создать внешний ключ .
В поле Имя внешнего ключа введите FK_set_id_to_set и используйте раскрывающийся список Внешняя таблица, чтобы выбрать dbo.sets.
В области свойств внешнего ключа справа от конструктора таблиц выберите + кнопку Новое сопоставление столбцов.
Выберите set_id с помощью раскрывающегося списка для полей Столбец и Внешний столбец.
Теперь таблица set_lists завершена. Он должен выглядеть следующим образом:
Нажмите кнопку "Опубликовать изменения" в левом верхнем углу окна конструктора таблиц, чтобы сохранить эти изменения таблицы в базе данных.
Если появится запрос на просмотр изменений, сначала установите флажок, подтверждающий изменения, а затем нажмите кнопку "Обновить базу данных ".