Разработка базы дискографии музыкальных коллективов, страница 2

Физическое имя поля таблицы

Название атрибута

Тип поля

Размер поля (байт)

Инкриментность

Ключ (уникальность)

Необходимость заполнения (или значение по умолчанию)

 Id_zh

Код жанра

Int

4

Да

Да

Да

zhanr

Жанр

varchar

25

Нет

Нет

Да

Id_chel

Код человека

int

4

Да

Да

Да

name

имя

varchar

20

Нет

Нет

Да

fam

фамилия

varchar

20

Нет

Нет

Да

dr

День рождения

datetime

8

Нет

Нет

Да

Id_p

Код песни

int

4

Да

Да

Да

pesnya

песня

varchar

100

Нет

Нет

Да

Id_polz

Код пользователя

int

4

Да

Да

Да

name

Имя польз

varchar

50

Нет

Нет

Да

fam

фамилия

varchar

50

Нет

Нет

Да

dr

Дата рождения

datetime

8

Нет

Нет

Да

dp

Дата заполнения

datetime

8

Нет

Нет

Да

g

группа

varchar

50

Нет

Нет

Да

f

факультет

varchar

50

Нет

Нет

Да

v

вуз

varchar

50

Нет

Нет

Да

Login

Логин

varchar

50

Нет

Нет

Да

password

Пароль

varchar

50

Нет

Нет

Да

Id_p

Код логина

int

4

Да

Да

Да

3.3 Создание индексов

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

4. Организация бизнес логики на стороне сервера

4.1 Механизмы взаимодействия клиента с сервером.

При взаимодействии клиента с сервером производятся следующие действия:

§  ввод данных в базу;

§  модификация данных;

§  получение клиентом необходимой информации.

Для ввода данных в базу оператору придётся вручную вводить в клиентскую часть данные. Ключевые поля в базе данных заполняются инкриментно.

Для модификации данных базы оператору так же придётся ввести некоторые данные в клиентскую часть. Все необходимые недостающие данные берутся из самой базы (идентификаторы полей либо сами данные). Для добавления используются через встроенные объекты C++, при этом выполняется ряд процедур.

Для получения информации требуется задать только параметр поиска.

Эти действия целесообразно оформить в виде соответствующих хранимых процедур

4.2 Описание требуемых запросов. Оформление их в виде хранимых процедур и функций.

Необходимо  найти по песни, группу и диск:

CREATE PROCEDURE poiskpesnya   @p varchar(100)  AS

select distinct pesnya, gruppa, [disk]

from poisk

where pesnya like @p+'%'

GO

Необходимо  найти по группе, песню и диск:

 


CREATE PROCEDURE poiskgruppa   @p varchar(100)  AS

select distinct pesnya, gruppa, [disk]

from poisk

where gruppa  Like @p+'%'

GO

Для получения id песни и занесения её в журнал pesn:

CREATE PROCEDURE dobidpes @p varchar(100)  AS

declare @ident int, @ident1 varchar(150)

set nocount on

DECLARE a_cursor CURSOR FOR

select distinct id_p, pesnya

from k_pesnya

where  @p=pesnya

delete from pesn

OPEN a_cursor

FETCH NEXT FROM a_cursor INTO @ident, @ident1

if(@ident=null)

begin

insert into pesn (identa) values (@ident+1)

end

if(@ident<>null)

begin

insert into pesn (identa) values (@ident)

end

DEALLOCATE a_cursor

GO

Для получения id группы и занесения её в журнал gr:

CREATE PROCEDURE dobidgr @p varchar(100)  AS

declare @ident int, @pp varchar(50)

set nocount on

DECLARE a_cursor CURSOR FOR

select id_gr, gruppa from k_gruppi

where @p=gruppa

delete from gr

OPEN a_cursor

FETCH NEXT FROM a_cursor INTO @ident, @pp

if(@ident=null)

begin

insert into gr (identa) values (0)

end

if(@ident<>null)

begin

insert into gr (identa) values (@ident)

end

DEALLOCATE a_cursor

GO

Для получения id диска и занесения её в журнал dis:

CREATE PROCEDURE dobidds @p varchar(90)  AS

declare @ident int, @pp varchar(90)

set nocount on

DECLARE a_cursor CURSOR FOR

select id_d, [disk] from k_disk

where @p=[disk]

delete from dis

OPEN a_cursor

FETCH NEXT FROM a_cursor INTO @ident, @pp

if(@ident=null)

begin

insert into dis (identa) values (0)

end

if(@ident<>null)

begin

insert into dis (identa) values (@ident)

end

DEALLOCATE a_cursor

GO

Нахождения стиля входящего в жанр:

CREATE PROCEDURE poiskst @p varchar(100)  AS

select style, zhanr  --distinct zh

from stzh

where  @p=zhanr

GO

Для получения id диска и занесения её в журнал sts:

CREATE PROCEDURE styl @p varchar(50)  AS

declare @ident int, @pp varchar(50)

set nocount on

DECLARE a_cursor CURSOR FOR

select id_st, style  from k_style

where @p=style

delete from sts

OPEN a_cursor

FETCH NEXT FROM a_cursor INTO @ident, @pp

insert into sts (ident) values (@ident)

DEALLOCATE a_cursor

GO

При регистрации для получении id логина и хранения его в журнале pasw:

CREATE PROCEDURE idlog @p varchar(100)  AS

declare @ident int, @ident1 varchar(150)

set nocount on

DECLARE a_cursor CURSOR FOR

select distinct id_p, login