Разработка схемы данных

 

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

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

Типы integer not null, varchar(*) not null, numeric(*,*) not null означают, что поля могут быть длинными целыми числами, не содержащими NULL. Тип varchar(*) означает, что поля содержат строку символов переменной длины. Тип numeric(*,*) означает, что поля содержат масштабируемые целые числа. Тип date означает, что поля содержат календарную дату.

Поля, выделенные на схеме данных курсивом, будут являться первичными ключами (PRIMARY KEY) таблиц.

 

Рисунок 1-Логическая схема реляционной базы данных

 

1) Таблица Group_receptures:

- поля ID, Name, не могут содержать NULL;

- поле ID содержит целые числа, поле Name - строка переменной длины.

С учетом перечисленных требований оператор SQL, создающий таблицу буде выглядеть следующим образом:

create table Group_receptures

(IDinteger not null,

Name varchar(40) not null,

primary key (ID)

);

2) Таблица Group_medikaments:

- поля ID, Name, не могут содержать NULL;

- поле ID содержит целые числа, поле Name - строка переменной длины.

С учетом перечисленных требований оператор SQL, создающий таблицу буде выглядеть следующим образом:

create table Group_medikaments

(IDinteger not null,

Name varchar(40) not null,

primary key (ID)

);

3) Таблица Medikamenty:

- поля ID, Name_med, Group_ID,Edinica не могут содержать NULL;

- поля ID, Group_ID содержат целые числа, поля Name и Edinica - строки переменной длины.

С учетом перечисленных требований оператор SQL, создающий таблицу выглядит следующим образом:

create table Medikamenty

(IDinteger not null,

Name_medvarchar(40) not null,

Group_ID integer not null,

Edinicavarchar(10) not null,

primary key (ID),

foreign key (Group_ID),

references Group_medikaments

);

4) Таблица Receptures:

- поля Name_ID, Preparat_ID не могут содержать NULL;

- поля Preparat_ID, Name_ID, Kol_vo содержат целые числа.

С учетом перечисленных требований оператор SQL, создающий таблицу выглядит следующим образом:

create table Receptures

(Preparat_ID integer not null,

Name_ID integer not null,

Kol_vo integer not null,

primary key (Preparat_ID,Name_ID),

foreign key (Preparat_ID),

references Preparat,

foreign key(Name_ID),

references Medikamenty

);

5) Таблица Preparat:

- все поля таблицы не могут содержать NULL;

- поля ID, Group_ID содержат целые числа, поле Name_preparat - строка переменной длины.

Оператор SQL, создающий таблицу Preparat:

create table Preparat

(IDinteger not null,

Group_ID integer not null,

Name_preparatvarchar(40) not null,

primary key (ID),

foreign key (Group_ID),

references Group_receptures

);

 

ВЕДЕНИЕ БАЗЫ ДАННЫХ

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

Добавление новых записей в таблицы производится при помощи оператора INSERT, удаление существующих записей - оператором DELETE, изменение - оператором UPDATE. Для удобства пользователя можно свести эти операторы вместе для каждой таблицы базы данных:

1) Таблица Group_receptures:

- добавление новой записи

insert into Group_receptures (Name)

values(:Name);

здесь и далее для всех таблиц вместо наименования поля с двоеточием перед ним (напр. «:Name») при выполнении оператора должно подставляться конкретное значение;

- удаление существующей записи

delete from Group_receptures where ID = value;

здесь и далее для всех таблиц вместо «value» при выполнении оператора должно подставляться конкретное значение;

- изменение существующей записи

update Group_receptures set Name = “value”

where ID = value2;

здесь и далее для всех таблиц вместо «value1, 2,...,n» при выполнении оператора должно подставляться конкретное значение.

2) Таблица Group_medikaments:

- добавление новой записи

insert into Group_medikaments (Name)

values(:Name);

- удаление существующей записи

delete from Group_medikaments where ID = value;

- изменение существующей записи

update Groups_medikaments set Name = “value1”

where ID = value2;

3) Таблица Medikamenty:

- добавление новой записи

insert into Medikamenty (Name_med, Group_ID, Edinica)

values (:Name_med,:Group_ID,:Edinica);

- удаление существующей записи

delete from Medikamenty where ID = value;

- изменение существующей записи

update Medikamenty set Name_med= “value1”, Edinica =” value2”,

where Group_ID = value4;

4) Таблица Receptures:

- добавление новой записи

insert into Receptures (Preparat_ID, Name_ID, Kol_vo)

values(:Preparat_ID,:Name_ID,:Kol_vo);

- удаление существующей записи

delete from Receptures where Preparat_ID = value, Name_ID = value;

- изменение существующей записи

update Receptures set Kol_vo= “value1”

where Preparat_ID = value2, Name_ID = value3;

5) Таблица Preparat:

- добавление новой записи

insert into Preparat (Group_ID, Name_preparat)

values (:Group_ID,:Name_preparat);

- удаление существующей записи

delete from Preparat where ID = value;

- изменение существующей записи

update Preparat set Name_preparat =” value1”,

where Group_ID = value3;

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: