Программирование баз данных MS SQL Server (1084479), страница 47
Текст из файла (страница 47)
А за первой строкой озе следует оператор с уже известным нам форматом, но с тем количеством определений столбцов, которое больше напоминает используемое на практике. Любой сценадий, пдеднозначенный для угегуляузного пдименения в наной-то нонндетной базе даннът, должен включать команду СТАЕ с указанием имени втой базы даннъсс Соблюдение указанного условия позволяет гаузантиузовать, что операции создания, модификации и уданосил обынтов действительно будут осуозествллтъся в той базе данных, длл котоузой они предназначены.
186 Глава 5 Автфу неоднок)>атно п(пгходилось становиться жфтв п1 собственной забьючивости, когда он вслепую открывал сценарий и вызывал его на выполнение лишь для того, чтобы затем обнаружить, что текущей оказалась не та база данных, котфая требовалась, уничтожены таблицы с именами, совпадающими с ухозанными в опфатфе удаления (и при этом потфяны все данные), а вместо существующих таблиц похвались таблицы с новой структу )лп1.
гьроме того, нфедхо гфиходится слышать о том, хах рафаботчики, гфосмапфивая базу данных ваэгег, обнаРуживают в нп1 несколько постфонних табгиц, котгфые пахвилшь из-за того, что хахиевпо рафаботчихи выполню)и гфименительно к базе данных вавсег сцена)зии СЕЕАТЕ, п(зеднозначенные для другт1 базы данных. 1ОЕМТТТУ Это — довольно упрощенная таблица по сравнению с теми, которые обычно используются на практике, но мы имеем широкие возможности внести дополнения в ее определение в ходе дальнейшего изложения (и, безусловно, воспользуемся этими возможностями). После создания таблицы желательно проверить, что она действительно создана и что в ней имеются все предусмотренные столбцы, типы которых соответствуют ожидаемым.
Для этой цели можно использовать несколько разных команд, но, повидимому, наилучшей из них является та, которая станет для вас старой знакомой к концу изучения настоящей книги — эр )зе1р. Эта команда имеет простой синтаксис: ЕХЕС зр пе1р <оЬЗесг пате> Чтобы воспользоваться данной командой, указав имя только что созданного объекта таблицы, вызовите на выполнение следующий код: ЕХЕС эр Ле1р Спзсовегз Команда ЕХЕС имеет два разных назначения.
Приведенный здесь вариант ее применения предназначен для выполнения хранимых процедур; в данном случае системной хранимой процедуры. Второй вариант использования этой команды будет описан позже, когда речь пойдет о более сложной тематике выполнения запросов и хранимых процедурах. ОЯЕ Ассоппсгпц СЕЕАТЕ ТАВЬЕ Спзсотега Соэсовегно Спзговегнаве АсЫгезз1 Ас(агезз2 Сзгу Ясасе ггр сопгасг. Р)зопе Рес)10Мо Оасе1пзузсев ) гпг чагспаг(30) чагс)заг(30) чагсваг(30) чагспаг(20) сваг(2) чагсваг(10) чагспаг(25) с)заг (15) чагс)заг(9) зва11аагегзве МОТ МОЬЬ, МОТ МОЬ1, МОТ МОЬЬ, МОТ МОЬЬ, МОТ МОЬЬ, МОТ МОЬЬ, МОТ МОЬЬ, МОТ МОЬЬ, МОТ МОЬЬ, МОТ МОЬ1, МОТ МОЬЬ Создание и модификация таблиц 187 4'фарыгаЛЬНОй тОЧКИ'ЗрЕНИЛ:.дсчсуОКавтоя 'ВОЗМОжНОСтСЬ,(ВЫПСЛНЕНйн.краНИМОй''ПрсОцГЕдурЫ йРОСтО.ПУТЕМ',ЕЕ ВЫЗОЕВС(бЕЗЧИСПбЛЬЗОгааННЯ'КЛЮЧ)ЕВОГО::СЛаааЕ)(ЕР))' НОВРУОбЛЕМа ЗаКщОЧа-етсв:.'в т(чм,,'что'такой.способ вызоаанза айполчнесниее пргввйдйт'к 'послучениЮ йдинообразных результатов, ,'только алели)'вызаа:хранимой процадурыг 'калган как печрвы)й''оператор в пачкет: НОМ' файяв "ЛК)бОГО тИПа'.
ВЕЗуоьяйВНСК ВМЕОтгО ПорИВЕдЕННОйЕЫШЕ'-КЕМайд(Ы МОЖНО 6Ь)ягс бм йроатбдздатз Вр,';-'ВЕ1у";ССХВКОйЕКЗ;,-НО ЕаЛИ;бм,' ПЕрвд)втИМ:='бЬ)за НрвдлрИНатал ЛссйцтКа выгполнить оператор,зеыст:,', то: погследующлий:вмзов храаимойс преецедуры:завершился бы аварийно'.'Отказчют примаснеенй кпвчйваго(слова,'ехйс прйзбдитт.,кс тому,'.что.,'хйайймые:проу цедсуры':выззыавемые'-на-'аылполненнзе,' ведтузт'-себяуосчень:незпкредсказуезмо,:, спетому нсеобхьдимосизйегабь::таких вариантов оргвнисэацйи:рабйтй,, После вызова указанной команды на выполнение обнаруживается, что один за другим формируется несколько результирующих наборов. Поэтому полученная информация включает целый ряд отдельных результирующих наборов, содержащих описанные ниже данные.
О Имя таблицы, схема, тип таблицы (системная или пользовательская) и дата создания. О Имена столбцов, типы данных, возможность применения неопределенных значений, размер и способ упорядочения. О Столбец идентификации (если он существует), в том числе информация о начальном значении и шаге.
О Столбец Нон001РСо1 (если он существует). О Информация о файловой группе. О Имена индексов (если они имеются), типы и включенные в индексы столбцы. О Имена ограничений (если они имеются), типы и включенные в ограничения столбцы. О Имена внешних ключей (если они имеются) и относящиеся к ним столбцы. О Имена всех представлений, относящихся к схеме (дополнительная информация по этой теме приведена в главе 10), которые зависят от таблицы. Убедившись в том, что таблица создана успешно, перейдем к созданию еще одной таблицы — Емр1оуеез. Но на этот раз примем другой подход — вначале рассмотрим, для чего должна быть предназначена эта таблица, а затем определим, что можно сделать, чтобы составить код сценария СВЕАТЕ самостоятельно.
Таблица Ежр1оуеез также должна быть достаточно простой. В частности, в этой таблице должна находиться перечисленная ниже информация. О Идентификатор служащего. Это значение должно вырабатываться системой автоматически. О Имя. О При желании, средний инициал (сокращенное обозначение отчества). О Фамилия. О Должность. О Номер карточки социального обеспечения. 188 Глава 5 0 Зарплата. 0 Предыдущая зарплата. К1 Величина последнего повышения зарплаты.
С1 Дата найма на работу. С3 Дата окончания договора найма (если таковая известна). 0 Руководитель служащего. О Отдел. Вначале попытайтесь сформировать компоновку этой таблицы самостоятельно. Но прежде чем перейти к изучению варианта, приведенного в книге, примите заверения автора в том, что не следует слишком расстраиваться, если предложенная вами компоновка не полностью совпадает с описанной.
Дело в том, что и в данном случае действует принцип — сколько голов, столько и мнений, т.е. сколько проектировщиков баз данных, столько и разных проектов баз данных, и все эти проекты начинаются с проектов таблиц. К тому же обычно для любой задачи можно найти несколько разных путей решения. Поэтому важнее всего убедиться в том, что вы действительно смогли учесть все требования, исходящие из поставленной задачи. На этом лирическое отступление заканчивается, поэтому перейдем к рассмотрению одного из способов создания указанной таблицы. В определении таблицы автор предусмотрел специальный столбец. Значения полей столбца Евр1оуее1Р должны вырабатываться системой, и поэтому данный столбец превосходно подходит для использования в качестве либо столбца идентификации, либо столбца ЕонСРТРСо1. В пользу того или иного варианта может выступать несколько важных факторов, но в данном случае предусмотрено применение столбца Емр1оуее1Р в качестве столбца идентификации по нескольким описанным ниже причинам.
11 Данные, хранящиеся в этом столбце, предназначены для использования обычными людьми (поэтому вряд ли кому-то захочется запоминать значения Ш1Р). 11 Выбранный вариант приводит к снижению издержек. Теперь мы можем приступить к формированию оператора создания таблицы: СККЛТК тЛВЬК Кэртоуеез ( Евр1оуее1Р твг 1РЕМТ1ТУ НОТ НРЬЬ, Для этого столбца опция НОТ НРКК должна быть выбрана автоматически в связи с использованием опции 1РЕИТ1ту, поскольку в столбце типа 1РЕНТ1ТТ не допускается наличие ЬПЛ.1;значений. Но следует отметить, что все равно необходимо будет, по всей вероятности, указать опцию НОТ ИРКЕ явным образом, чтобы не зависеть от параметров настройки сервера (если она не задана, то может возникнуть ошибка в том случае, когда по умолчанию допускается использование Х(ЛЛ:значений).
Затем необходимо ввести в определение таблицы столбцы для хранения компонентов имен. Автор обычно допускает применение приблизительно 25 символов для представления имен. Безусловно, большинство компонентов имен имеет гораздо меньшую длину, но на практике слишком часто приходится сталкиваться с тем, что некоторые компоненты имен имеют довольно большую длину (особенно если это имена, соединенные дефисами, которые становятся все более популярными), поэто- Создание и модификация таблиц 189 му приходится предусматривать для них лишнее место. Кроме того, для таких столбцов целесообразно использовать строковый тип данных переменной длины по двум описанным ниже причинам. О Это позволяет не занимать полностью место на внешнем устройстве, отведенное для столбца, если фактически хранимые данные имеют длину меньше объявленной (поскольку система использует незаполненное пространство для других целей).
Ы Поиск с помощью конструкции вНЕЕЕ упрощается, в отличие от столбцов со строковыми данными постоянной длины, которые дополняются пробелами, а это требует дополнительных операций при выполнении сравнений с полями этого типа ЦЕЛИ. КОд дсртура) К,'бава''дайНЫКцфарМдяатся'НаоеерЕдетВВННр На яэгЫКЕ Т;8(КК -'тс В:СУВД ВЩ:Вв(увт.'ввтойатячвеки; рвзрйааютея вев 'прббламы'; евяарнйыв'еб' еурввярн(чвм п)олв)й йоетоянной4лнны, со отрезками;,запрлнвмнйми йробелаумв,,я валей парвмйнной длины.