Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекция 1

.docx
Скачиваний:
54
Добавлен:
25.02.2015
Размер:
22.78 Кб
Скачать

Владелец базы данных обозначается, как DBO. Операция create всегда локальна, то есть создает данные только для одной базы данных.

Большинство имен объектов начинается с Латинской букв или спец символов :

# - объект временный

@ - в большинстве случаев мы имеем дело с переменной

@@ - либо глобальная переменная, либо функция

_ - указывает на то, что объект принадлежит системе

Создание базы данных делается с помощью операции create database <имя>. В данном случае операция create будет создавать новую базу данных: два файла, один с расширением mdf, другой - <имя>.log.mdf. В первом файле будет храниться фактическое наполнение базы данных, размер файлов (2 Мб и 0,5 Мб), во втором - все действия, производимые над базой. В 2 Мб находятся системные процедуры, необходимые для работы базы данных, сведенья о владельце базы данных, базовые настройки. Существенная часть системных процедур живет в базе данных Master, в таких же таблицах. Все объекты живут в базах данных. Файлы находятся в том же месте, где стоит программное обеспечение.

Параметры для create database <имя>:

  • On - говорит о том, что сейчас пойдут настройки для файла <имя>.mdf;

  • Primary - создается группа первичных файлов;

  • Collate - указывает порядок сравнения в данной базе данных, порядок сравнения задается на уровне субд;

  • Name ='' - логическое имя файла базы данных в терминах базы данных, именно по этому имени будут обращаться к базе данных;

  • Filename ='' - имя файла базы данных в терминах операционной системы, полное имя;

  • Size - размер в Мб, первоначальный размер базы данных;

  • MaxSize - максимальный размер в байтах или unlimited;

  • Filegrowth - при радение файла либо в Мб, либо в процентах;

  • Log on - параметры, которые накладываются на файл <имя>.log.mdf, они аналогичны для главного файла. Это параметр можно опустить, тогда файл будет определен неявно (по усмотрению системы).

Дополнительные параметры with:

  • Non_transaction_access - может принимать значение off (по умолчанию, разрешен не транзакционный доступ), full (разрешен полный транзакционный доступ);

  • Default_fulltext_language - параметр, который контролирует полнотекстовые индексы;

  • For attach - параметр, говорит о том, что база данных будет создана на основе уже существующих файлов баз данных;

  • For load - база данных будет создана на основе существующих резервов баз данных.

Use <имя базы данных> - переключение между двумя базами данных.

Go - хороший подход для разделения кусков кода.

Создание таблиц

Create table <имя>

( <имя столбца><тип данных>,

У столбца могут быть следующие параметры

  • Primary key - создание первичного ключа;

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

  • Null - в столбце по умолчанию разрешены нулевые значения;

  • Not null - не допустимы нулевые значения;

  • Default 0 - позволяет установить значение по умолчанию;

  • Identity (1,1) - автоинкримент, то есть начальное значение будет начинаться с 1 и будет иметь при радение 1. Минус - цифры используются только один раз.

Set - команда присвоении set incert.indentity on или off - включение/выключение автоинкримента.

  • Collate - порядок сравнения;

  • Textimage_on <filegroup> - для отдельного столбца в таблице можно выделить отдельное место на диске.

Max int,

Min int,

Delta as max-min, - автоматически определится тип данных, который находится

check max >100, ограничение доменом , если мы попытаемся ввести меньше 100, сервер выдаст ошибку.

On delete cascade - механизм проверяющий что делать с удаляемыми связанными данными или no action

On update - в случае изменения

Create table department

( ID int primary key,

Title varchar(50)

)

Create table staff

(ID int primary key,

Name varchar (50),

ID_dep int references department (ID),

)

Таким образом можно реализовать связь один ко многим или многие ко многим, но только для одиночных ключей.

Create table department

( ID int,

Title varchar(50)

Constraint PK.department primary key (ID, title) - создание ограничение

)

Create table staff

(ID int primary key,

Name varchar (50),

ID_dep int,

Constraint FK_staff_department foreign key (ID_dep) references department (ID)

)

Жесткое ограничение информации, которую необходимо хранить.

Сущность - таблица, свойства которой:

1. Состоит из атрибутов (столбцов);

2. Каждый столбец имеет набор допустимых значений. Эти значения ограничиваются форматов данных (только целые числа) или форматом данных+бизнес логика (например, сотрудник был старше 18, то есть исключим некоторые ошибки);

3. Набор атрибутов определяет кортеж отношений (строку отношений), на который накладывается правило: каждая строка уникальна (иначе это не база данных), теоретически строки и атрибуты не имеют порядка, каждый атрибут в кортеже (ячейка) должен обладать свойством атомарности (набор информации, который нельзя разделить на уровне логики базы данных). Для того чтобы отделить кортежи друг от друга используется потенциальный ключ - атрибут или набор атрибутов, который однозначно определяют кортеж в отношении. Может быть несколько потенциальных ключей.

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

Бывают составные потенциальные ключи (серия и номер паспорта), однако это не очень хорошая ситуация, поэтому желательно вводить дополнительный потенциальный ключ - ввести ID (в некоторых случаях ID позволяют осуществлять поиск более быстрее, чем по строкам).

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

Связь между таблицами

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

Атрибут не может быть пустым, но если нет жестких ограничений, можно ввести значение неопределенности (NULL). Однако в жизни это очень плохо.

Связь "Один ко многим" - когда один первичный ключ соответствует многим внешним ключам. Это типичная связь в реалий ионной модели. Связь "один к одному", когда одному первичному ключу соответствует один внешний ключ. Такая связь редко используется.

Связь "таблица сама к себе"

Связь "многие ко многим". Для реализации создается промежуточная таблица

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

Нельзя допускать зависимости между атрибутами. Сомое плохое, когда происходит зависимость от части ключа.

Если одно и тоже значение, которое многократно повторяется в таблице, необходимо делать отдельную таблицу.

Когда в базе есть сокращение необходимо создавать полное название и сокращение.

Не меньше трех представлений продемонстрировать отличие представлений от физических таблиц

Продемонстрировать работу с временными таблицами

Предомонстрировать работу с типом данных таблица

Создание диаграммы данных Visio

Соседние файлы в предмете Проектирование баз данных