- •7 Разработка sql-кода базы данных
- •7.1Sql-код создания таблиц
- •7.1.1 Создание столбцов таблиц
- •7.1.2 Создание ограничений уникальности
- •7.1.3 Создание ограничений атрибутов и кортежей
- •7.1.4 Создание ограничений ссылочной целостности
- •7.1.5 Создание триггеров базы данных
- •7.2 Sql-код создания представлений отображения
- •7.2.1 Представления отображения для функции 1
- •7.2.2 Представления отображения для функции 2
- •7.2.3 Представления отображения для функции 3
- •7.4 Вывод
7 Разработка sql-кода базы данных
Данный раздел посвящен программированию базы данных на основе концептуальной реляционной модели. Разрабатывается программный SQL-код, обеспечивающий создание структуры таблиц базы данных и представлений отображения внутренней модели во внешние модели базы данных.
7.1Sql-код создания таблиц
В данном подразделе в соответствии с реляционной моделью записываются SQL-операторы CREATE TABLE, обеспечивающие создание таблиц базы данных. Стандартные ограничения целостности, специфицированные на предыдущем этапе в таблицах 5.1–5.3 и 5.6, реализуются с помощью табличных средств, нестандартные ограничения целостности и операционные правила, специфицированные в таблицах 5.4 и 5.5, — с помощью триггеров базы данных. Для удобства контроля создание ограничений отделено от создания столбцов выполняется операторами ALTER TABLE. Триггеры базы данных создаются операторами CREATE TRIGGER. При программировании ориентировались на диалект Transact-SQL для Microsoft SQL Server 2005.
7.1.1 Создание столбцов таблиц
Для создания столбцов применяются SQL-операторы CREATE TABLE. При этом задаются имена, типы и размеры полей, а также стандартные ограничения обязательности и значения по умолчанию.
CREATE TABLE [dbo].[Тип] (
[Код типа] char(6) NOT NULL,
[Наименование] Varchar(40) NOT NULL,
[Селектор] Varchar(40) NOT NULL)
CREATE TABLE [dbo].[Документы] (
[Рег. номер] char(6) NOT NULL,
[Дата получения] DATETIME NOT NULL)
CREATE TABLE [dbo].[ОИС] (
[Код ОИС] CHAR(6) NOT NULL,
[Наименование ОИС] VARCHAR(40) NOT NULL,
[Код категории] CHAR(6) NOT NULL,
[Код типа] CHAR(6) NOT NULL)
CREATE TABLE [dbo].[Патенты] (
[Рег. номер патента] CHAR(6) NOT NULL,
[Код ОИС] CHAR(6) NOT NULL)
CREATE TABLE [dbo].[Заявки] (
[Рег. номер заявки] CHAR(6) NOT NULL,
[Код ОИС] CHAR (6) NOT NULL)
CREATE TABLE [dbo].[Организация] (
[Код организации] CHAR(6) NOT NULL,
[название организации] VARCHAR (50) NOT NULL)
CREATE TABLE [dbo].[Тип объекта] (
[Код типа] CHAR(6) NOT NULL,
[селектор] char(1) default ('Т'))
CREATE TABLE [dbo].[Категория] (
[Код типа] CHAR(6) NOT NULL,
[селектор] char(1) default('A'))
CREATE TABLE [dbo].[Предметная область] (
[Код типа] CHAR(6) NOT NULL,
[селектор] char(1) default('П'))
CREATE TABLE [dbo].[Категория] (
[Код категории] CHAR(6) NOT NULL,
[Наимменование] VARCHAR(40) NOT NULL)
CREATE TABLE [dbo].[Ответсвенный сотрудник] (
[Код ответсвенного струдника] CHAR(6)NOTNULL,
[ФИО ответсвенного сотрудника] VARCHAR(50)NOTNULL,
[Должность] VARCHAR(40) Not NULL,
[Код организации] CHAR(6) NOT NULL)
CREATE TABLE [dbo].[Лицензии] (
[Рег. номер лицензии] CHAR(6)NOTNULL,
[Код ответсвенного сторудника] CHAR(6)NOTNULL)
CREATE TABLE [dbo].[Автор] (
[Код автора] CHAR(6) NOT NULL,
[ФИО автора] VARCHAR (50) NOT NULL)
CREATE TABLE [dbo].[Должность] (
[Код должности] CHAR(6) NOT NULL,
[Название должности] VARCHAR (50) NOT NULL)
CREATE TABLE [dbo].[Автор патента] (
[Код автора] CHAR(6) NOT NULL,
[Рег. номер патента] VARCHAR (50) NOT NULL,
[Код должности] CHAR(6) NOT NULL,
[Код организации] CHAR(6)NOTNULL)
CREATE TABLE [dbo].[Автор заявки] (
[Код автора заявки] CHAR(6)NOTNULL,
[Рег. номер заявки] CHAR (6) NOT NULL,
[Код организации] VARCHAR(40)NOTNULL
)
CREATETABLE[dbo].[Квитанция об оплате] (
[Нпп] INT NOT NULL,
[Номер квитанции] CHAR (6) NOT NULL,
[Дата] DATETIME NOT NULL,
[Время] DATETIME NOT NULL,
[Место] VARCHAR(40) NOT NULL,
[Кассир] VARCHAR(40) NOT NULL,
[Рег. номер заявки] CHAR(6) NOT NULL)
CREATETABLE[dbo].[Правообладатель лицензии] (
[Код правообладателя лицензии] CHAR(6)NOTNULL,
[ФИО првообладателя лицензии] VARCHAR(50)NOTNULL,
[Рег. номер лицензии] CHAR(6)NOTNULL,
[Код организации] CHAR(6)NOTNULL)
CREATETABLE[dbo].[Правообладатель заявки] (
[Код правообладателя] CHAR(6)NOTNULL,
[ФИО правообладателя] VARCHAR(50)NOTNULL,
[Рег. номер заявки] CHAR(6) NOT NULL)
CREATETABLE[dbo].[Предметная область патента] (
[Код предметной области] char(6)notnull,
[Примечание] varchar(50)notnull,
[Рег. номер патента] char(6)notnull,
[cелектор] char(6) default('П') not null)