Создание таблицы с использованием инструмента графического дизайна
- Определение столбцов
- Указание первичного ключа
- Автоматический рост личности
- Сохранение таблицы в базе данных
Чтобы иметь возможность хранить любую информацию в базе данных, в этой базе данных должны быть созданы соответствующие таблицы. Структура созданных таблиц будет зависеть от того, окажется ли созданная база данных простой в использовании, и позволит ли она эффективно и результативно извлекать собранную в ней информацию.
В SQL Server 2016 мы можем создать новую таблицу двумя различными способами - с помощью инструмента проектирования, доступного в SQL Server Management Studio, и с помощью стандартных команд T-SQL. В этой статье мы познакомимся с процессом создания новой таблицы с помощью инструмента графического оформления таблиц.
Чтобы создать новую таблицу в существующей пользовательской базе данных с помощью SQL Server Management Studio, после подключения к конкретному экземпляру сервера базы данных в окне обозревателя объектов разверните узел, представляющий базу данных, щелкните правой кнопкой мыши подраздел « Таблицы» и выберите « Таблица» . В основной части Management Studio будет отображаться специальная форма ввода данных, с помощью которой мы сможем точно спроектировать каждый столбец таблицы и таким образом придать ему определенную структуру.
Определение столбцов
Процесс определения компонентов столбцов таблицы очень прост и состоит в определении имен каждого столбца (значения в столбце «Имя столбца»), типов данных, которые они будут хранить (значения в столбце « Тип данных» ) и определения того, находится ли в данном столбце Значения NULL ( флажки Allow Nulls ) будут разрешены. Как вы помните, значение, определенное как NULL, указывает на то, что это значение не существует, неизвестно или неприменимо в вашем случае. Таким образом, проверяя поле «Разрешить пустые значения» в любом столбце, мы решаем, будут ли требоваться значения этого столбца (другими словами, если они вставляют данные в таблицу полей в этом столбце, их можно оставить пустыми или нет).
В первом столбце первой строки мы определяем имя первого столбца таблицы. По соглашению имена обычно пишутся с использованием записи Camel Case, поэтому мы не используем имена пробелов в них, и каждое слово начинается с заглавной буквы. Во втором столбце первой строки мы определяем тип данных, которые будут храниться в первом столбце таблицы. Мы можем выбирать из десятков различных типов данных, которые мы подробно обсудили в одной из предыдущих статей. В третьем столбце первой строки формы мы указываем, будут ли в первом столбце созданной таблицы значения NULL. Чтобы прояснить это ограничение, вы должны отменить выбор или поставить флажок в наличии. После определения первого столбца в первой строке формы мы можем перейти к определению следующего столбца таблицы в следующей строке формы, повторяя этот процесс до тех пор, пока структура новой таблицы не будет завершена. Как вы можете видеть, процесс определения отдельных столбцов таблицы относительно прост и не создает никаких проблем сам по себе, но в процессе создания новой таблицы мы также должны принять во внимание несколько других вещей.
Указание первичного ключа
В соответствии с основными принципами проектирования таблиц в реляционной базе данных каждая таблица должна содержать столбец, значения которого будут однозначно идентифицировать каждую строку (запись данных) в этой таблице. Столбец формально называется первичным ключом. Чтобы лучше понять необходимость такого ключа, давайте рассмотрим пример, в котором мы создаем таблицу данных для хранения информации о клиентах. Эта таблица может называться Customer или Customers, в зависимости от выбранного нами соглашения об именах таблиц. Для целей данного примера эта таблица будет состоять из столбцов FirstName и LastName , в которых будут соответственно храниться имена и фамилии клиентов нашей компании, а также любые дополнительные столбцы, которые в данный момент нам не интересны. Предположим, однажды вам нужно отправить или выписать счет клиенту по имени Джон Смит. Чтобы сделать это возможным, мы должны иметь возможность точно определить, какой клиент в нашей базе данных является целевым клиентом.
Из этого примера ясно, что первичным ключом таблицы Customers не может быть поле FirstName, поскольку этот столбец может содержать два или более одинаковых значения (одинаковых имени), которые будут ссылаться на разных клиентов. Поэтому мы не можем отличить наших клиентов только по имени, поскольку такое различие в некоторых случаях может быть невозможным. Не важно, что во время существования базы данных эти значения не повторялись, т. Е. В базе данных нет двух одинаковых людей по имени Джон. Задача ограничения Первичного ключа - защитить нас от возникновения такой ситуации.
То же самое относится и к столбцу LastName. Этот столбец также не может быть первичным ключом в таблице «Клиенты», поскольку вполне возможно, что в таблице появятся два идентичных человека с одинаковыми именами. В этом случае столбец LastName также не сможет выполнять функцию первичного ключа, поскольку, используя значения, хранящиеся в нем, мы не сможем отличить клиентов друг от друга.
В принципе, можно констатировать, что один из столбцов таблицы «Клиенты», описывающий конкретные свойства клиентов, не может выполнять функцию первичного ключа, поскольку практически каждое из этих значений может повторяться в один прекрасный день и мешать нам однозначно идентифицировать людей. Поэтому, чтобы избежать этой проблемы, мы обычно будем использовать обходной путь, который определен в таблице дополнительных столбцов для хранения числовых идентификаторов клиента. Такой столбец с определенным ограничением первичного ключа практически не отражается в реальности, поэтому он существует только с целью идентификации определенных строк в таблицах. Поскольку мы полностью определяем его значения, не влияя на данные наших клиентов и в то же время, как того требует уникальность первичного ключа, это решение отвечает всем нашим потребностям.
Для таблицы Customers этот столбец просто CustomerID . Значения в столбце CustomerID будут целыми числами, которые, благодаря их простоте и уникальности, позволяют нам уникально идентифицировать каждого клиента, независимо от того, как его называют и каким имуществом он владеет. С тех пор у нас может быть 10 клиентов с именем Джон Смит, и все же каждого из них будет легко отличить в базе данных, используя предоставленный ему идентификатор. Столбец ID будет хранить числовые значения, поэтому мы обычно выбираем тип INT в качестве типа данных его значений. Чтобы значения в этом столбце не могли повторяться, и в то же время они всегда вводились в базу данных, не опускаясь, мы снимаем флажок Allow Null для него, что означает, что система не позволит нам ввести нового клиента в базу данных, для которого мы не указали соответствующий идентификатор.
Кстати, если нам нужно установить флажок «Разрешить пустые значения» для данного столбца, это будет зависеть от множества различных факторов. Если мы определили ограничение для обеспечения уникальности данных, например ограничение «Первичный ключ» или «Уникальный» для этого столбца, у нас не останется иного выбора, кроме как снять флажок, чтобы столбец всегда содержал уникальную неуникальную информацию. Для других столбцов эта ситуация не столь очевидна и потребует соответствующего отражения. Нужно учитывать не только полезность и необходимость таких данных, но и то, хотят ли наши клиенты делиться ими с нами вообще. Поэтому, если мы определим столбец с установленным флажком «Разрешить пустые значения», а затем добавим клиента, мы поймем, что он не предоставил нам эту конкретную информацию, тогда мы не сможем сохранить этого клиента в базе данных.
Чтобы принудительно установить ограничение первичного ключа для столбца ID (в нашем примере CustomerID), нажмите кнопку «Первичный ключ» на главной панели инструментов, расположенной над окном проектирования таблицы. После нажатия этой кнопки рядом с указанным нами столбцом появится символ ключа, который будет указывать на то, что этот столбец является первичным ключом в таблице, определяющей идентичность каждой строки данных.
Автоматический рост личности
На этом этапе ядро базы данных уже знает, что столбец CustomerID является первичным ключом в таблице Customers. Таким образом, введенные в него значения никогда не могут быть повторены или опущены. Если позже мы введем информацию о наших клиентах в эту таблицу и для одного из них, в этом столбце мы введем числовое значение идентификатора, который уже был присвоен другому клиенту, система не позволит нам ввести такого человека в базу данных.
По этой причине вместо того, чтобы вручную присваивать идентификаторы каждому клиенту, мы можем делегировать эту работу ядру базы данных. Для этого выберите определенный нами ключевой столбец - в данном случае CustomerID - и перейдите в окно Свойства столбца под формой оформления таблицы. В окне свойств столбца разверните раздел параметров спецификации идентификации и измените значение свойства (Is Identity) на Да . Это активирует две последовательные настройки для этого столбца. Свойство «Увеличение идентификатора» указывает числовое значение, на которое будут увеличиваться последовательно сгенерированные идентификаторы клиентов. По умолчанию это значение 1, поэтому, если третий идентификатор клиента равен 3, то четвертый, который мы добавляем в базу данных, получит идентификатор на единицу больше, то есть 4. В свою очередь, Identity Seed идентифицирует начальный идентификатор, с которого начинается подсчет записей. Поэтому, если для этого свойства установлено значение 201, то с шагом 1 первые три клиента автоматически получат идентификаторы 201, 202 и 203.
Сохранение таблицы в базе данных
Чтобы сохранить и ввести новую таблицу в базу данных, просто нажмите кнопку « Сохранить» , доступную на панели инструментов, или просто закройте вкладку с проектом текущей таблицы с помощью специальной кнопки X. В обоих случаях перед сохранением разработанной таблицы нам будет предложено указать ее имя. Чтобы новая таблица отображалась в окне обозревателя объектов, обновите содержимое этого окна с помощью кнопки Обновить .
Когда у нас будет новая и правильно спроектированная таблица для хранения интересующих нас данных, мы можем приступить к ее заполнению соответствующими значениями. Для этого просто щелкните правой кнопкой мыши имя пустой таблицы в окне обозревателя объектов, затем выберите « Редактировать верхние 200 строк» , и откроется редактор данных, из которого мы сможем изменить или расширить таблицу дополнительными записями.
Если мы определили какой-либо из столбцов в таблице как первичный ключ, мы должны помнить, что введенные в него значения являются уникальными для всех строк. Если в этом столбце мы использовали функцию автоматического определения личности, то при вводе данных мы не сможем вставить в нее какие-либо значения, потому что система заполнит столбец соответствующими числами. Мы заполняем все остальные столбцы в таблице, как предполагалось, с учетом существующих ограничений, связанных с конкретным типом данных. Запись полной строки (записи) данных в базу данных происходит только после ввода значений во все столбцы этой строки. После завершения ввода значений в последнем столбце строки вы можете либо нажать клавишу Enter, либо нажать кнопку, помеченную значком пера, видимым в левой части первого столбца строки. В обоих случаях строка будет полностью сохранена в таблице, и система перейдет к редактированию следующей строки.
Если при вводе данных в таблицу оказывается, что таблицу необходимо изменить, все, что вам нужно сделать, - это щелкнуть правой кнопкой мыши таблицу в окне обозревателя объектов, выбрать « Дизайн» и перезапустить процесс проектирования столбца таблицы.