2017-01-04 2 views
-1

Relation Schema for Questions RevisionSQL супер ключи и команды

У меня есть вопрос Im делает для пересмотра Определить два Superkeys и ключ-кандидат в account_branch отношении. У меня есть идея, но мне нужна проверка, если у кого-то есть предложения, до сих пор у меня есть ключ-кандидат, который является account_number, супер-ключи - это имя_ account_number + имя_памяти, а также account_number + assets

Еще один запрос на SQL-команду: найдите имя каждого города и количество скамеек в городе, в котором имеется более 3 филиалов, каждый из которых имеет более 1 000 000 активов. Я попытался это с помощью GROUP BY и HAVING, это правильный способ пойти, к сожалению, я не могу проверить, как все это теория с ручкой и бумагой

Моя попытка ответить на это:

SELECT branch_city, COUNT(branch_city) 
FROM branch 
WHERE assets > 1000000 
GROUP BY branch_city 
HAVING COUNT(branch_city) > 3 
+0

, вероятно, вы получите лучшие ответы, если вы представите то, что вы пробовали, или, по крайней мере, в этом случае, что вы думаете, во-первых. – Gratzy

+0

Если вы написали какой-то псевдо sql, то можете добавить это к своему вопросу. – Gratzy

+0

Обновлено все попытки в –

ответ

0

Ключ-кандидат - это столбец или набор столбцов в таблице, которая может однозначно идентифицировать любую запись базы данных без ссылки на какие-либо другие данные (без дополнительных столбцов)

account_number является первичным ключом в таблице account_branch и поэтому однозначно идентифицирует строку в таблице без каких-либо посторонних столбцов так что да это соответствует критериям кандидата ключа

суперключа представляет собой комбинацию столбцов, которые однозначно идентифицируют любую строку в реляционной базе данных (может иметь дополнительные столбцы не нужна для уникальности)

Поскольку ACCOUNT_NUMBER является первичный ключ в таблице account_branch и имя_панель - это внешний ключ в таблице ветвей. Account_number + имя_пакета однозначно идентифицирует строку в отношении account_branch, так что да, это супер-ключ. Поскольку Account_number + имя_файла уже идентифицирует уникальную строку, добавляющую любой другой столбец из ветки, по-прежнему будет идентифицировать уникальную запись, так что Account_number + branch_name + assets также является супер-ключом.

SELECT branch_city, COUNT(branch_city) 
FROM branch 
WHERE assets > 1000000 
GROUP BY branch_city 
HAVING COUNT(branch_city) > 3 

ли вернуть нужный набор результатов:

SELECT branch_city 
FROM branch 
WHERE assets > 1000000 

возвращает результирующий набор из ветви всех строк, где активы являются более 1000000

GROUP BY branch_city 

Сообщает базу данных для группы, которые являются результатом set by branch_city

с добавлением функции агрегата

COUNT(branch_city)/агрегатные функции требуют группы с/

возвращает количество строк или вхождений, каждый город в этом наборе результатов

HAVING COUNT(branch_city) > 3 

Затем облицовки, что результирующий набор вниз только Города, которые произошли более 3 раз

Смежные вопросы