powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Сертификация и обучение [игнор отключен] [закрыт для гостей] / 70-228 Вопрос из Testking 1.5 № 116
3 сообщений из 3, страница 1 из 1
70-228 Вопрос из Testking 1.5 № 116
    #32503163
chack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
You are the administrator of a SQL Server 2000 computer at a doctor's
office. The server contains a database named Medical. The database stores
patient and treatment information and is configured as shown in the
exhibit.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
CREATE TABLE [dbo].[Patients] (
	[Name] [char] ( 10 ) COLLATE Cyrillic_General_CI_AS NULL ,
	[Address] [char] ( 10 ) COLLATE Cyrillic_General_CI_AS NULL ,
	[BloodType] [char] ( 10 ) COLLATE Cyrillic_General_CI_AS NULL ,
	[ParentID] [int] NOT NULL ,
	[NativeLanguage] [char] ( 10 ) COLLATE Cyrillic_General_CI_AS NULL 
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Treatments] (
	[PatientID] [int] NULL ,
	[TreatmentDate] [datetime] NULL ,
	[TreatmentType] [char] ( 10 ) COLLATE Cyrillic_General_CI_AS NULL ,
	[Doctor] [char] ( 10 ) COLLATE Cyrillic_General_CI_AS NULL 
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[Patients] ADD 
	CONSTRAINT [PK_Patients] PRIMARY KEY  CLUSTERED 
	(
		[ParentID]
	)  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[Treatments] ADD 
	CONSTRAINT [FK_Treatments_Patients] FOREIGN KEY 
	(
		[PatientID]
	) REFERENCES [dbo].[Patients] (
		[ParentID]
	)
GO

The office accountant needs access to the total number of treatments that
have been performed in the office. The accountant should not have access
to any other patient data and should not be able to change any information
in the database.

The accountnat has a SQL Server Authenticated login and database user
account named AccountUser.

You need to make the appropriate information available to the accountant,
while protecting the other information in the database. Which batch of
Transact-SQL statements should you execute?

A. CREATE VIEW TotalTreatments AS SELECT COUNT(PatientID) AS Total FROM dbo.Patients GO GRANT ALL ON TotalTreatments TO AccountUser
B. CREATE VIEW TotalTreatments AS SELECT COUNT(*) AS Total FROM dbo.Patients GO GRANT ALL ON TotalTreatments TO AccountUser
C. CREATE PROCEDURE TotalTreatments AS SELECT COUNT(*) AS Total FROM dbo.Patients GO GRANT ALL ON TotalTreatments TO AccountUser
D. CREATE PROCEDURE TotalTreatments AS SELECT COUNT(PatientID) AS Total FROM dbo.Patients GO GRANT ALL ON TotalTreatments TO AccountUser

Testking предлагает следующий ответ С
с объяснением

Using a procedure is a good way of protecting from direct access to the user table. The users would only have to be granted acces to the procedure not to the underlined table.
(Хотя в данном случае VIEW not updatable, и мое субьективное мнение, что пользователям из VIEW легче получить данные, чем из PROCEDURE )

We must use COUNT(*) since COUNT(*) returns the number of rows that math the search conditions specified in the query without eliminated duplicates. It counts each row separately, including rows that contain null values.
COUNT(PatientID) would count distinct rows and would not include rows with NULL values in the PatientID column
(Хотя в данном случае PatientID PRIMARY KEY Он не может содержать NULL и неуникальные значения. Следовательно COUNT(PatientID) =COUNT(*) и даже предпочтительнее, так как теоретически выполняется быстрее)

НО самое главное, в вопросе требуется посчитать общее количество посещений, которое надо считать по таблице посещений Treatments, а не по таблице пациентов Patients
СЛЕДОВАТЕЛЬНО : Все ответы НЕВЕРНЫ

А Ваше мнение ?
...
Рейтинг: 0 / 0
70-228 Вопрос из Testking 1.5 № 116
    #32503303
Фотография josia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
chackНО самое главное, в вопросе требуется посчитать общее количество посещений, которое надо считать по таблице посещений Treatments, а не по таблице пациентов Patients
я тоже так думаю, вероятно это просто ошибка в Testking. Там где одна ошибка может быть и две. Например в оригинале может быть SELECT COUNT(DISTINCT PatientID) или в C запрос к Treatments, а в D запрос к Patients.
chack(Хотя в данном случае VIEW not updatable, и мое субьективное мнение, что пользователям из VIEW легче получить данные, чем из PROCEDURE ) это не так. Создавать VIEW содержащий одно скалярное значение странно. PROC здесь выглядит естественнее. Удачи
...
Рейтинг: 0 / 0
70-228 Вопрос из Testking 1.5 № 116
    #32507355
Dixi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
josia прав, здесь скорее несколько опечаток в условиях задачи.

Варианты ответов могут звучать примерно так:

A. CREATE VIEW TotalTreatments AS SELECT COUNT(PatientID) AS Total FROM dbo.Patients
GO GRANT ALL ON TotalTreatments TO AccountUser

B. CREATE VIEW TotalTreatments AS SELECT COUNT(*) AS Total FROM dbo.Patients
GO GRANT ALL ON TotalTreatments TO AccountUser

C. CREATE PROCEDURE TotalTreatments AS SELECT COUNT(*) AS Total FROM dbo.Treatments
GO GRANT ALL ON TotalTreatments TO AccountUser

D. CREATE PROCEDURE TotalTreatments AS SELECT COUNT(PatientID) AS Total FROM dbo.Treatments
GO GRANT ALL ON TotalTreatments TO AccountUser

Тогда ответ D (исключаем строки с PatientID is Null в dbo.Treatments)


Кто сдавал 70-228 подскажите как звучат варианты ответов на самом деле?
А может ли быть опечатка не в TestKing, а в самом экзамене?
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Сертификация и обучение [игнор отключен] [закрыт для гостей] / 70-228 Вопрос из Testking 1.5 № 116
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]