Как сделать связи в sql server management studio

Обновлено: 06.07.2024

Среда SQL Server Management Studio имеет два основных назначения: администрирование серверов баз данных и управление объектами баз данных. Эти функции рассматриваются далее.

Администрирование серверов баз данных

Задачи администрирования, которые можно выполнять с помощью среды SQL Server Management Studio, включают, среди прочих, следующие:

подключение к серверу;

создание новых групп серверов;

управление множественными серверами;

пуск и остановка серверов.

Эти задачи администрирования описываются в следующих подразделах.

Среда SQL Server Management Studio отделяет деятельность по регистрации серверов от деятельности по исследованию баз данных и их объектов. (Действия этих обоих типов можно выполнять посредством обозревателя объектов.) Прежде чем можно использовать базы данных и объекты любого сервера, будь то локального или удаленного, его нужно зарегистрировать.

 Диалоговое окно New Server Registration

Выберите имя сервера, который нужно зарегистрировать, и тип проверки подлинности для этого сервера (т.е. проверка подлинности Windows или проверка подлинности SQL Server), после чего нажмите кнопку Save.

Подключение к серверу

Создание новой группы серверов

Управление множественными серверами

Посредством обозревателя объектов среда SQL Server Management Studio позволяет администрировать множественные серверы баз данных (называемые экземплярами) на одном компьютере. Каждый экземпляр компонента Database Server имеет свой собственный набор объектов баз данных (системные и пользовательские базы данных), который не разделяется между экземплярами.

Для управления сервером и его конфигурацией щелкните правой кнопкой имя сервера в обозревателе объектов и в появившемся контекстном меню выберите пункт Properties (Свойства). Откроется диалоговое окно Server Properties (Свойства сервера), содержащее несколько страниц, таких как General (Общие), Security (Безопасность), Permissions (Разрешения) и т.п.

На странице General отображаются общие свойства сервера:

Можно изменить имя сервера, присвоив ему новое имя. Для этого щелкните правой кнопкой требуемый сервер в окне обозревателя объектов и в контекстном меню выберите пункт Register. Теперь можно присвоить серверу новое имя и изменить его описание. Серверы не следует переименовывать без особой на это надобности, поскольку это может повлиять на другие серверы, которые ссылаются на них.

Запуск и останов серверов

Сервер Database Engine по умолчанию запускается автоматически при запуске операционной системы Windows. Чтобы запустить сервер с помощью среды SQL Server Management Studio, щелкните правой кнопкой требуемый сервер в инспекторе объектов и в контекстном меню выберите пункт Start (Запустить). Это меню также содержит пункты Stop (Остановить) и Pause (Приостановить) для выполнения соответствующих действий с сервером.

Управление базами данных посредством обозревателя объектов Object Explorer

Задачи администрирования, которые можно выполнять с помощью среды SQL Server Management Studio, включают:

создание баз данных, не прибегая к использованию языка Transact-SQL;

модифицирование баз данных, не прибегая к использованию языка Transact-SQL;

управление таблицами, не прибегая к использованию языка Transact-SQL;

создание и исполнение инструкций SQL (описывается в следующей статье).

Создание баз данных без использования T-SQL

Новую базу данных можно создать посредством обозревателя объектов Object Explorer. Как можно судить по его названию, обозреватель объектов также можно использовать для исследования объектов сервера. С панели этого инструмента можно просматривать все объекты сервера и управлять сервером и базами данных. Дерево иерархии объектов сервера содержит, среди прочих папок, папку Databases (Базы данных). Эта папка, в свою очередь, содержит несколько подпапок, включая папку для системных баз данных, и по папке для каждой базы данных, созданной пользователем.

Чтобы создать базу данных посредством обозревателя объектов, щелкните правой кнопкой узел Databases и выберите пункт меню New Database (Создать базу данных). В открывшемся диалоговом окне New Database в поле Database name введите имя новой базы данных, после чего нажмите кнопку ОК.

Диалоговое окно New Database


Свойства файлов данных определенной базы данных перечисляются на странице Files (Файлы) и содержат такую информацию, как имя и начальный размер файла, расположение базы данных, а также тип файла (например, primary). База данных может храниться в нескольких файлах. В SQL Server применяется динамическое управление дисковым пространством. Это означает, что можно сконфигурировать размер базы данных для автоматического увеличения и уменьшения по мере надобности.

Чтобы изменить свойство Autogrowth (Автоувеличение) на странице Files, в столбце Autogrowth нажмите значок троеточия (. ) и внесите соответствующие изменения в диалоговом окне Change Autogrowth. Чтобы позволить автоматическое увеличение размера базы данных, нужно установить флажок Enable Autogrowth. Каждый раз, когда существующий размер файла недостаточен для хранения добавляемых данных, сервер автоматически запрашивает систему выделить файлу дополнительное дисковое пространство. Объем дополнительного дискового пространства (в процентах или мегабайтах) указывается в поле File Growth (Увеличение размера файла) в том же диалоговом окне. А в разделе Maximum File Size (Максимальный размер файла) можно или ограничить максимальный размер файла, установив переключатель Limited to (MB) (Ограничение (Мбайт)), или снять ограничения на размер, установив переключатель Unlimited (Без ограничений) (это настройка по умолчанию). При ограниченном размере файла нужно указать его допустимый максимальный размер.

На странице Filegroups (Файловые группы) диалогового окна Database Properties отображаются имена файловых групп, к которым принадлежит файл базы данных, раздел файловой группы (по умолчанию или заданный явно), а также операции, разрешенные для выполнения с файловой группой (чтение и запись или только чтение).

На странице Options (Параметры) диалогового окна Database Properties можно просмотреть и модифицировать все параметры уровня базы данных. Существуют следующие группы параметров: Automatic (Автоматически), Containment (Включение), Cursor (Курсор), Miscellaneous (Вспомогательные), Recovery (Восстановление), Service Broker (Компонент Service Broker) и State (Состояние). Группа State содержит, например, следующие четыре параметра:

Database Read-Only (База данных доступна только для чтения)

Позволяет установить доступ к базе данных полный доступ или доступ только для чтения. В последнем случае пользователи не могут модифицировать данные. Значение по умолчанию этого параметра - False.

Restrict Access (Ограничение доступа)

Устанавливает количество пользователей, которые могут одновременно использовать базу данных. Значение по умолчанию - MULTI_USER.

Database State (Состояние базы данных)

Описывает состояние базы данных. Значение по умолчанию этого параметра - Normal.

Encryption Enabled (Шифрование включено)

Определяет режим шифрования базы данных. Значение по умолчанию этого параметра - False.

На странице Extended Properties (Расширенные свойства) отображаются дополнительные свойства текущей базы данных. На этой странице можно удалять существующие свойства и добавлять новые.

На странице Permissions (Разрешения) отображаются все пользователи, роли и соответствующие разрешения.

Остальные страницы Change Tracking (Отслеживание изменений), Mirroring (Зеркальное отображение) и Transaction Log Shipping (Доставка журналов транзакций) описывают возможности, связанные с доступностью данных.

Модифицирование баз данных

С помощью обозревателя объектов можно модифицировать существующие базы данных, изменяя файлы и файловые группы базы данных. Чтобы добавить новые файлы в базу данных, щелкните правой кнопкой требуемую базу данных и в контекстном меню выберите пункт Properties. В открывшемся диалоговом окне Database Properties выберите страницу Files и нажмите кнопку Add, расположенную внизу раздела Database files. В раздел будет добавлена новая строка, в поле Logical Name которой следует ввести имя добавляемого файла базы данных, а в других полях задать необходимые свойства этого файла. Также можно добавить и вторичную файловую группу для базы данных, выбрав страницу Filegroups (Файловые группы) и нажав кнопку Add.

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

Чтобы удалить базы данных с помощью обозревателя объектов, щелкните правой кнопкой имя требуемой базы данных и в открывшемся контекстном меню выберите пункт Delete (Удалить).

Управление таблицами

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

Для практики создания таблиц, в базе данных SampleDb создадим таблицу Department. Чтобы создать таблицу базы данных с помощью обозревателя объектов, разверните в нем узел Databases, а потом узел требуемой базы данных, щелкните правой кнопкой папку Tables и в открывшемся контекстном меню выберите пункт New Table. В верхней части с правой стороны окна средства Management Studio откроется окно для создания столбцов новой таблицы. Введите имена столбцов таблицы, их типы данных и разрешение значений null для каждого столбца, как это показано в правой верхней панели на рисунке ниже:

Создание таблицы Department базы данных SampleDb посредством обозревателя объектов

Чтобы выбрать для столбца один из поддерживаемых системой типов данных, в столбце Data Type (Тип данных) выберите, а затем нажмите направленный вниз треугольник у правого края поля (этот треугольник появляется после того, как будет выбрана ячейка). В результате в открывшемся раскрывающемся списке выберите требуемый тип данных для столбца.

Тип данных существующего столбца можно изменить на вкладке Column Properties (Свойства столбца) (нижняя панель на рисунке). Для одних типов данных, таких как char, требуется указать длину в строке Length, а для других, таких как decimal, на вкладке Column Properties требуется указать масштаб и точность в соответствующих строках Scale (Масштаб) и Precision (Точность). Для некоторых других, таких как int, не требуется указывать ни одно из этих свойств. (Недействительные значения для конкретного типа данных выделены затененным шрифтом в списке всех возможных свойств столбца.)

Чтобы разрешить значения null для данного столбца, следует установить для него соответствующий флажок поля. Также, если для столбца требуется значение по умолчанию, его следует ввести в строку Default Value or Binding (Значение по умолчанию или привязка) панели Column Properties. Значение по умолчанию присваивается ячейке столбца автоматически, если для нее явно не введено значение.

Столбец Number является первичным ключом таблицы Department. Чтобы сделать столбец первичным ключом таблицы, щелкните его правой кнопкой и в контекстном меню выберите пункт Set Primary Key (Задать первичный ключ).

Для просмотра и изменения свойств существующей таблицы разверните узел базы данных, содержащей требуемую таблицу, разверните узел Tables в этой базе данных и щелкните правой кнопкой требуемую таблицу, а затем в контекстном меню выберите пункт Properties. В результате для данной таблицы откроется диалоговое окно Table Properties. Для примера, на рисунке ниже показано диалоговое окно Table Properties на вкладке General для таблицы Employee базы данных SampleDb.

Диалоговое окно Table Properties

Чтобы переименовать таблицу, в папке Tables щелкните ее правой кнопкой в списке таблиц и в контекстном меню выберите пункт Rename. А чтобы удалить таблицу, щелкните ее правой кнопкой и выберите пункт Delete.

Создав все четыре таблицы базы данных SampleDb (Employee, Department, Project и Works_on - подробную структуру таблиц вы можете найти в исходниках), можно использовать еще одну возможность среды SQL Server Management Studio, чтобы отобразить диаграмму типа "сущность - отношение" - диаграмму (ER) (entity-relationship) этой базы данных. (Процесс преобразования таблиц базы данных в диаграмму "сущность - отношение" (ER) называется обратным проектированием.)

Чтобы создать диаграмму ER для базы данных SampleDb, щелкните правой кнопкой ее подпапку Database Diagrams (Диаграммы баз данных) и в контекстном меню выберите пункт New Database Diagram (Создать диаграмму базы данных). Если откроется диалоговое окно, в котором спрашивается, создавать ли вспомогательные объекты, выберите ответ Yes.

После этого откроется диалоговое окно Add Table, в котором нужно выбрать таблицы для добавления в диаграмму. Добавив все необходимые таблицы (в данном случае все четыре), нажмите кнопку Close, и мастер создаст диаграмму, подобную показанной на рисунке ниже:

Начальная диаграмма ER базы данных SampleDb

На рисунке показана только промежуточная, а не конечная диаграмма ER базы данных SampleDb, поскольку, хотя на ней и показаны все четыре таблицы с их столбцами (и соответствующими первичными ключами), на ней все же отсутствуют отношения между таблицами. Отношение между двумя таблицами основывается на первичном ключе одной из таблиц и возможным соответствующим столбцом (или столбцами) другой таблицы.

Между таблицами базы данных SampleDb существует три отношения. Таблица Department имеет отношение типа 1:N с таблицей Employee, поскольку каждому значению первичного ключа таблицы Department (столбец Number) соответствует одно или более значений столбца DepartmentNumber таблицы Employee (в одном отделе может работать несколько сотрудников).

Аналогично существует отношение между таблицами Employee и Works_on, поскольку только значения, которые присутствуют в столбце первичного ключа таблицы Employee (Id) также имеются в столбце EmpId таблицы Works_on. Третье отношение существует между таблицами Project и Works_on, т.к. только значения, которые присутствуют в первичном ключе таблицы Project (Number) также присутствуют в столбце ProjectNumber таблицы Works_on.

Чтобы создать эти три отношения, диаграмму ER нужно реконструировать, указав для каждой таблицы столбцы, которые соответствуют ключевым столбцам других таблиц. Такой столбец называется внешним ключом (foreign key). Чтобы увидеть, как это делается, определим столбец DepartmentNumber таблицы Employee, как внешний ключ таблицы Department. Для этого выполним следующие действия:

В созданной диаграмме щелкните правой кнопкой графическое представление таблицы Employee и в контекстном меню выберите пункт Relationships (Отношения). В открывшемся диалоговом окне Foreign Key Relationships (Связи по внешнему ключу) нажмите кнопку Add.

В правой панели диалогового окна расширьте первый столбец, выберите в нем строку Table and Columns Specification (Спецификация таблиц и столбцов) и нажмите кнопку с троеточием во втором столбце этой строки.

В открывшемся диалоговом окне Tables and Columns в раскрывающемся списке Primary key table (Таблица первичного ключа) выберите таблицу с соответствующим первичным ключом. В данном случае это будет таблица Department.

Создание связи между таблицами

Подобным образом создаются и другие два отношения. На рисунке ниже показана диаграмма ER, отображающая все три отношения между таблицами базы данных SampleDb:

r_keeper_7 можно связать только с MS SQL версии 2012 и выше.

Настройка связи с MS SQL 2012

Установка SQL сервера

1. Установить MS SQL Server 2012 или выше. Можно использовать выпуск Express.
Во время установки сервера следует использовать смешанный режим аутентификации и задать пароль для пользователя "sa".

2. Запустить SQL Management Studio и создать новую базу, например с именем RK7.

3. В Диспетчере конфигурации SQL Server включить протокол TCP/IP. Перезапустить SQL Server.


4. Перевести базу в режим версионности строк (Row Versioning)

По умолчанию SQL Server работает в режиме "Read Commited", который подразумевает блокирование данных во время запроса. Это может сильно помешать в случае многопользовательской работы. Начиная с версии 2005 поддерживается режим "READ COMMITTED using row versioning", при котором блокировки могут помешать только в случае, когда разные пользователи пишут в одно и то же место, чтение же данных никогда не блокируется и никого не блокирует.

Для включения режима версионности строк надо выполнить скрипт:

ALTER DATABASE RK7 SET READ_COMMITTED_SNAPSHOT ON;

Подробнее смотрите здесь или здесь.

Настройка менеджерской станции

2. В поле Основное > Строка соединения (Base > Connection string) нажать на кнопку в конце строки.


3. Нажать кнопку "Build. " и настроить связь с БД, созданной в пункте 1.

Если нужного сервера нет в списке, то необходимо вручную ввести его имя (обычно совпадает с именем компьютера, на котором стоит SQL Server (в качестве имени также может выступать IP-адрес)). После этого обязательно ввести "имя пользователя" и "пароль" и только потом выбирать базу!
Имя сервера можно посмотреть при запуске SQL Server Management Studio (рис .ниже).


5. В итоге "Строка соединения" примет вид "Provider=SQLOLEDB.1;Password=1;Persist Security Info=True;User Catalog=RK7;Data Source= 127.0.0.1 2 "

Data Source = имя или IP-адрес компьютера, на котором стоит SQL Server. Возможен вариант с именем экземпляра сервера, например 192.168.190.150\SQLEXPRESS.

6. Далее делаем выгрузку в БД SQL, используя созданную настройку.

8. В блоке "Параметры экспорта" оставляем галочки по умолчанию, если выгрузка происходит в чистую БД SQL.

11. Далее необходимо настроить сервер справочников (или отчетов), пролицензировав его и выбрав настройку созданную в п.5.

12. Откройте справочник Настройки > OLAP Отчеты > Серверы Отчетов, выберите нужный сервер и настройте его согласно пунктам ниже.

13. Пролицензируйте сервер справочников/отчетов согласно описанию в статье настройка сервера справочников

14. В группе Связь с внешней БД сделать следующее:

15. Укажите такие же настройке в группе Логи справочников:

  1. llAll протоколировать все запросы
  2. llErroneous протоколировать запросы с ошибками
  3. llNone — не протоколировать

В поле Режим базы данных UDB выбрать один из режимов: большой, средний, маленький, ультра легкий. Данный режим относиться к накопительной базе Check.udb. Описание ниже.

  • Большой (полная копия). Это режим по умолчанию. Использовался для простых ресторанов (не сетевых). Раньше это был единственный возможный вариант, если не использовалось подключение к внешней базе данных. Не меняйте параметр "Полная копия" на другое, пока не настроите соединение с внешней базой данных.
  • Средний (частичная копия). Режим означает, что кроме данных заказов, все суммы будут сохраняется в check.udb.
  • Маленький (только чеки). Режим используется, если вы уверены, что будет иметься достаточно много накопительных данных (несколько ресторанов). В большинстве случаев рекомендуется использовать этот режим, чтобы база не становилась слишком большой.
  • Ультралегкий (только общие смены). В check.udb будет содержаться только информация об общих сменах и ссылки на них в базе SQL.

Если вы решили изменить режим "базы данных UDB" с большого на маленький при настроенной связи с SQL (т.е. ресторан проработал в таком режиме уже продолжительное время) и выполнить ручной экспорт накопительных данных повторно, то размер файла Check.udb автоматически уменьшиться, в результате чего большая часть информации из этой базы будет удалена, и в базу SQL экспортируются не все данные. Поэтому никогда не делайте экспорт накопительных данных, если вы используете режим базы данных UDB Маленький или Средний.
Выбранный режим базы данных UDB никак не влияет на справочную информацию. Справочная информация всегда сохраняется на каждом сервере отчетов в полном объеме и может быть экспортирована повторно при необходимости.

17. В секции Обработка данных выбрать рестораны (ресторан представлен набором кассовых серверов), данные с которых мы хотим собирать и видеть в отчетах.

18. В файле конфигурационном файле сервера справочников rk7srv.INI / отчетов repsserv.ini прописать параметр

для сервера справочников прописывать в секции [RefServer], для сервера отчетов — в секции [Config]

19. Обязательно перезагрузить сервер справочников / отчетов.

Если необходимо поменять что-то в настройках какой-либо внешней БД, то первоначально нужно остановить все серверы отчётов, которые используют эту настройку и запустить их с параметром UseSQL=0, поменять настройки, вновь остановить сервер, потом вернуть параметру UseSQL значение 1 (UseSQL=1). Т.е. все изменения в настройках внешней БД происходят во время работы сервера при параметре UseSQL=0.

При смене режима базы данных UDB с большого на средний или маленький и последующей выгрузке в SQL, произойдет удаление большинства накопленной информации в базе check.udb. Это критично, когда не используется внешняя накопительная БД в SQL.

Одновременно для нескольких ролей в РК7 нельзя сделать связь с БД в SQL Server используя одного и того же пользователя в БД SQL. В РК7 просто не сохраниться информация о пользователе в настройках связи с внешней БД.

Оптимизация производительности

В целях экономии дискового пространства и некоторого увеличения производительности рекомендуется использовать "Простую" ("Simple") модель восстановления


После изменения модели восстановления необходимо выполнить сжатие файла лога, меню на используемой БД: Задачи (Tasks) -> Сжать (Shrink) -> Файлы (Files), в следующем окне выбрать типа файла: "Журнал" ("Log").



Возможные проблемы

Проблема 1: Иногда может не идти экспорт в только что созданную БД сервера SQL Server 2008 при выбранном провайдере Native Client согласно п.3.1.3.
Решение: Выберите другой провайдер Microsoft OLE DB Provider for SQL Server, создайте заново чистую БД и повторите экспорт.

Проблема 2: Не строятся прямые отчёты
Решение: Для каждой роли, если у нее разные права на доступ на просмотр отчетов на разные объекты (например у одной роли разрешен просмотр для одного объекта, а у другой - на несколько), то для роли для построения прямых отчетов нужно заводить разных пользователей на SQL сервере и соответственно настроить роли с такими пользователями в SQL. Схематично показано на рисунке ниже.

Диаграмма базы данных (далее -БД) — это графическое представление таблиц БД с визуальным отображением связей между таблицами по внешним ключам (англ. foreign key).

Для того, чтобы в MS SQL Server построить диаграмму БД необходимо:

1. Открыть консоль MS SQL Managment Studio

2. Подключиться к нужному серверу:

MS SQL Server - connect to server

New Database Diagram

New diagram - Add tables

После чего нажмите кнопку «Add«.

В случае, если по каким либо причинам в MS SQL Server Managment Studio не удается построить диаграмму — возможно воспользоваться сторонним ПО, например, универсальный DBeaver.

Xочу создать еще одну таблицу, которая будет связана с таблицей A один к одному.

Kак это сделать ?



Задача искусственная. На практике такая связь почти никогда не используется. Разве что достигнуто ограничение на количество полей (атрибутов).

1 ответ 1

Сделайте вот так:

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


Всё ещё ищете ответ? Посмотрите другие вопросы с метками sql oracle или задайте свой вопрос.

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2022 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2022.1.27.41279

В качестве примера спроектируем несложную базу данных информационной системы кинотеатра. При этом, решим следующие задачи:

    для определения состава и содержания информации, обрабатываемой информационной системой, а также пользовательских потребностей; , заключающееся в выявлении сущностей и связей между ними, а также отображение этой информации в виде ER-диаграммы; базы данных и ее реализация в MS SQL Server.

1 Анализ предметной области

Из этого описания понятны основные функции системы, изображенные на рисунке с помощью нотации диаграммы прецедентов UML. На диаграмме не отображена роль администратора базы данных, так как администратор обычно взаимодействует с системой не через интерфейс, а через выполнение SQL-запросов.



Каждая сущность, кроме hall_row содержит поле id, которое идентифицирует объект. У сущности hall_row поле id не нужно, так как в одном и том же зале кинотеатра (id_hall) не могут повторяться номера рядов (number).

Когда пользователь выберет зал и прокат — система должна отобразить заполненность зала, при этом надо отобразить конфигурацию зала с пометкой занятых и свободных мест. Под конфигурацией зала тут имеется ввиду, что разные залы имеют разный размер, а ряды зала могут иметь различное количество мест. Поэтому в базе данных зал (hall) составляется из рядов (hall_row), одним из параметров которых является вместимость (capacity).

2 Построение концептуальной модели

Выше были отображены основные сущности, но не отображены роли пользователей, хотя их тоже должна хранить система. Они показаны ниже на ER-диаграмме в нотации Чена [1].


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

  1. создании всех таблиц базы;
  2. добавлении залов и рядов в них;
  3. добавлении кассиров и менеджеров.

На диаграмме не отражена роль посетителя, так как:

  1. билет не содержит информации о том, кто его купил (посетитель может подарить билет другу);
  2. система вообще не хранит информацию о посетителях;
  3. покупку билета он осуществляет через общение с кассиром вне системы;
  4. никакие данные в базе посетитель самостоятельно изменить не может.

На диаграмме проставлены кратности связей, например, видно, что один менеджер может добавить много (N) прокатов. В этой базе не оказалось связей типа N:M, сложных или рекурсивных связей — такие связи являются препятствиями в проектировании и решаются изменением ее структуры.

Для формирования схемы данных необходимо сначала дополнить ER-диаграмму реквизитами сущностей (уточнить ее) — результат приведен на рисунке.


В ходе анализа этой диаграммы были найдены несколько недочетов, допущенных при выделении сущностей системы:

  • система не должна позволять продавать несколько билетов на одно и то же место при одном показе фильма. Это значит, что вторичным ключем для Билета должен быть кортеж (id_screening, row, seat). Однако, тогда нет необходимости в id билета — на билеты не ссылается ни одна таблица, это поле может быть удалено. Изначально id был добавлен потому, что обычно на билетах в кинотеатрах печатается номер;
  • билет хранит поле id_hall, это было сделано для того, чтобы посетитель кинотеатра мог найти свой кинозал. Однако, билет, выдаваемый пользователю — это не тоже самое, что информация о билетах, хранимая в базе данных. Билет базы данных хранит также поле id_screening, а Показ уже ссылается на id_hall. Таким образом, в базе нет смысла хранить id_hall в таблице билетов.

Исправленная ER-диаграмма приведена ниже:


Таблица менеджеров и кассиров не объединены в таблицу Users так как вопросы разграничения прав доступа в различных СУБД решаются по-разному. Так, в MS SQL пользователи добавляются с помощью специальных запросов типа:

CREATE LOGIN Manager_Name WITH PASSWORD='Some Passwrd';

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

3 Физическое проектирование

ER-диаграмма отражает основные таблицы, связи и атрибуты, на ее основе можно построить модель БД. На ER-диаграммы нет стандарта, но есть ряд нотаций (Чена, IDEFIX, Мартина и т.п.) [2], но на модель предметной области не удалось найти ни стандарта, ни нотаций. Однако, в ходе построения такой диаграммы обязательно выделяются ключевые поля (внешние и внутренние), иногда — индексы и типы данных. Схема базы данных, приведенная на рисунке, выполнена с использованием открытого инструмента plantuml [3], при этом:

Читайте также: