Loading...
galya.miteva avatar galya.miteva 28 Точки

Лекцията "Table Relations"

Здравейте, имам няколко въпроса от лекцията "Table Relations". 

1. ON UPDATE CASCADE / ON DELETE CASCADE: Нали не е добра практика да се ползва каскадно изтриване/промяна в таблиците? По подразбиране не е зададено, но примерно при инсерт на данни в таблицата объркам някой от записите, тогава мога ли с Alter table да сложа ON UPDATE CASCADE, за да поправя записа и после по какъв начин мога пак да го изключа?

2. За индексирането, във видеото , когато Теодор показа какви индекси имаме в таблицата  NONcLUSTERED и PRIMARY KEY, на вторичните индекси пишеше NON UNIQUE това означава ли , че примерно ако имам 2 записа (first_name, salary) Иван с 1000лв заплата и още един запис друг Иван пак с 1000лв заплата, ще ми създаде ли два различни индекса за тях? Какво става в този случай?

 

 

Тагове:
0
Module: Java DB
TeodorDimitrov avatar TeodorDimitrov Trainer 46 Точки
Best Answer

Здравей,

1) Не е добра практика, понеже FK пази данните конситенти и не ти дава да триеш и променяш редове от рефернтна таблица. Ако искаш да добавиш CASCADE ще трябва да създадеш FK наново.

2) В описаният от теб случай ще имаш един индекс по (first_name, salary). Ако имаш 2ма Ивановци с по 1000 лв. заплата ще имаш два реда в индекса.

SQL Server Demo:

 

INSERT INTO [dbo].[Employees]
           ([FirstName],[LastName],[MiddleName],[JobTitle],[DepartmentID],[ManagerID],[HireDate],[Salary],[AddressID])
     VALUES('Ivan','Ivanov','Ivanov','Manager',1,2,'20160801',1000,1),
		   ('Ivan','Ivanov','Ivanov','Manager',3,4,'20160801',1000,5)
GO


CREATE NONCLUSTERED INDEX IX_Employees_FirstName_Salary
ON [dbo].[Employees]([FirstName],[Salary])

-- Find the fist page of your index
DBCC IND(SoftUni,Employees,-1)
GO
-- Check Index Data
DBCC PAGE(SoftUni, 
1, -- file number
440, -- page
3) -- display options
GO

И ето го и резултата. Това са редовете в индекса:
Data

1
10/10/2016 15:56:55
galya.miteva avatar galya.miteva 28 Точки

Благодаря за отговора!

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.