Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Возможности реиндексации в БД

 

План:

Типы БД, для которых может понадобиться реиндексация

Возможности реиндексации:

- Изменения типа ключевого поля в сторону увеличения разрядности

- Алгоритм реиндексации, представленный ниже на примере двух связанных таблиц Справочник должностей и Справочник учителей:

1) проверить наличие потерянных записей в подчиненной таблице

2) проверить наличие каскадного обновления у связи или сделать его

3) во временную таблицу переместить список отсортированных ключей

4) в цикле заменить старое значение ключа на новое

 

--Создание тестовой БД

create database db_teachers

use db_teachers

 

create table sppost(idpost int primary key, postname char(30))

 

--возможные варианты создания связанной таблицы

--с соединением

create table spteachers(idteacher int primary key identity (1,1),

idpost int Foreign key references sppost(idpost), FIO char(30))

 

--с соединением и каскадным обновлением

create table spteachers(idteacher int primary key identity (1,1),

idpost int Foreign key references sppost(idpost) On update cascade, FIO char(30))

 

--без соединения

create table spteachers(idteacher int primary key identity (1,1),

idpost int, FIO char(30))

 

--ввод тетовых данных

insert into sppost(idpost, postname)Values(20, 'матем')

insert into sppost(idpost, postname)Values(10, 'физика')

insert into sppost(idpost, postname)Values(30, 'литер')

insert into sppost(idpost, postname)Values(15, 'черчение')

insert into sppost(idpost, postname)Values(16, 'механика')

insert into sppost(idpost, postname)Values(17, 'БД')

 

insert into spteachers(idpost, FIO)Values(20, 'Иванов')

insert into spteachers(idpost, FIO)Values(10, 'Петров')

insert into spteachers(idpost, FIO)Values(10, 'Сидоров')

insert into spteachers(idpost, FIO)Values(18, 'Федоров')

insert into spteachers(idpost, FIO)Values(16, 'Капин')

insert into spteachers(idpost, FIO)Values(16, 'Сорин')

 

--просмотр данных на предмет потерянных записей

--select * from spteachers left join sppost on spteachers.idpost=sppost.idpost

 

--удаление потерянных записей

--delete from spteachers where not exists(select * from sppost where spteachers.idpost=sppost.idpost)

 

--изменение связи

alter table spteachers drop constraint fk_teac_post

alter table spteachers add constraint fk_teac_post foreign key (idpost) references sppost(idpost) on update cascade

 

--создание временной таблицы

Declare @temp0 table(idpost int)

insert into @temp0 select idpost from sppost order by idpost asc

declare temp1 scroll cursor for (select idpost from @temp0)

open temp1

declare @i int, @id int

set @i = 0

 

--реиндексация

WHILE @@FETCH_STATUS = 0

BEGIN

FETCH NEXT FROM temp1 into @id

set @i = @i+1

update sppost set idpost = @i where idpost = @id

END

close temp1

DEALLOCATE temp1

 

--просмотр результата

select * from sppost

select * from spteachers left join sppost on spteachers.idpost=sppost.idpost

 

<== предыдущая лекция | следующая лекция ==>
Поддержание ссылочной целостности данных в субд на примере субд vfp | Особенности объединения БД
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 394; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.