Sem II (Datenbanken) - N5 Flashcards

1
Q

Wie funktioniert die Projektion in der Relationalen Algebra?

A

Проекция выбирает определенные атрибуты реляции, тем самым уменьшая количество столбцов.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Wann benötigt man eine Umbenennung (ρ) in der Relationalen Algebra?

A

Umbenennung wird benötigt, wenn zwei Relationen mit unterschiedlichen Attributnamen verglichen oder vereinigt werden sollen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Was ist der Unterschied zwischen UNION und UNION ALL in SQL?

A

UNION: Исключает повторяющиеся кортежи.
UNION ALL: Сохраняет повторяющиеся кортежи.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Was ist der Mengendurchschnitt () in der Relationalen Algebra und wie wird er berechnet?

A

Пересечение множеств () возвращает общие кортежи двух реляций с одинаковой схемой. Оно может быть выражено через разницу множеств: (S = R - (R - S) ). В SQL для этого используется команда INTERSECT

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Wie wird der natürliche Join in der Relationalen Algebra definiert?

A

Естественное соединение объединяет две реляции, связывая кортежи с одинаковыми значениями в атрибутах соединения

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Wie arbeitet der Join-Operator im Kontext von relationalen Datenbanken?

A

Оператор соединения объединяет две реляции на основе общих атрибутов. Например, соединение между таблицами „слушать” и „Лекции” возвращает новую реляцию с информацией из обеих таблиц.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

В чем особенность применения переименований в реляционной алгебре?

A

Переименования позволяют переименовывать атрибуты, чтобы сделать реляции совместимыми, например, для пересечения множеств.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Wie wird die Differenz in der Relationalen Algebra berechnet?

A

Die Differenz ( R - S ) gibt die Tupel aus ( R ) zurück, die nicht in ( S ) vorkommen. In SQL wird dies durch EXCEPT ausgedrückt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Warum ist der Mengendurchschnitt nicht immer direkt auf SQL übertragbar?

A

Nicht alle Datenbanksysteme unterstützen den INTERSECT-Befehl. Alternativ kann der Mengendurchschnitt mit Differenzoperationen ausgedrückt werden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Was ist ein 3-Wege-Join und wann wird er benötigt?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Was ist ein Theta-Join und wie unterscheidet er sich vom Equi-Join?

A

1) Тета-соединение позволяет использовать условие соединения с произвольным предикатом.
2) Эквисоединение является частным случаем тета-соединения, где условие ограничено равенством атрибутов.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Wie unterscheidet sich ein Join vom kartesischen Produkt?

A

Соединение соответствует декартову произведению, к которому применяется селекция для фильтрации результатов, удовлетворяющих условию соединения.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Was ist der Unterschied zwischen einem natürlichen Join und einem äußeren Join?

A

1) Естественное соединение объединяет только кортежи, у которых совпадают значения общих атрибутов.
2) Внешнее соединение (левое, правое или полное) дополнительно сохраняет кортежи из одной или обеих реляций, которые не находят совпадения, и заполняет отсутствующие значения как NULL.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Was versteht man unter einem Semi-Join?

A

Полу-соединение возвращает только кортежи из первой реляции, которые совпадают хотя бы с одним кортежем второй реляции. Дополнительные атрибуты второй реляции в результат не включаются.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Как удалить дубликаты в SQL?

A

Mit dem DISTINCT-Keyword.
~~~
SELECT DISTINCT Rang FROM Professoren;

~~~

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Wie sortiert man Ergebnisse in SQL?

A

Mit ORDER BY
~~~
SELECT PersNr, Name, Rang FROM Professoren ORDER BY Rang DESC, Name ASC;

~~~

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Wie funktioniert die Verwendung von Platzhaltern in SQL?

A

% обозначает любое количество символов (включая ноль).
_ обозначает ровно один символ.

SELECT * FROM Studenten WHERE Name LIKE 'T%eophrastos';
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Какова цель GROUP BY и HAVING?

A

GROUP BY группирует записи на основе определенных столбцов.
HAVING фильтрует группы на основе условий.
~~~
SELECT Titel, COUNT()
FROM Vorlesungen
GROUP BY Titel
HAVING COUNT(
) > 1;
~~~

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Как идентифицировать записи, которые не встречаются в подзапросе?

A

Mit NOT IN
~~~
SELECT Name FROM Professoren WHERE PersNr NOT IN (SELECT gelesenVon FROM Vorlesungen);

~~~

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Wie findet man die Studenten, die am längsten studieren?

A

С помощью ALL
~~~
SELECT Name FROM Studenten WHERE Semester >= ALL (SELECT Semester FROM Studenten);

~~~

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Как выполнять объединения в SQL?

A

Путем связывания таблиц через условия:
~~~
SELECT s.Name, v.Titel
FROM Studenten s, hören h, Vorlesungen v
WHERE s.MatrNr = h.MatrNr AND h.VorlNr = v.VorlNr;
~~~

22
Q

Как проверить, не имеет ли лекция последующих лекций?

A

С помощью NOT IN:
~~~
SELECT Titel FROM Vorlesungen WHERE VorlNr NOT IN (SELECT Vorgänger FROM voraussetzen);

~~~

23
Q

Как использовать CASE в SQL?

A
SELECT MatrNr, 
  (CASE 
    WHEN Note < 1.5 THEN 'sehr gut'
    WHEN Note < 2.5 THEN 'gut'
    WHEN Note < 3.5 THEN 'befriedigend'
    WHEN Note <= 4 THEN 'ausreichend'
    ELSE 'Nicht bestanden'
  END) AS Bewertung
FROM pruefen;
24
Q

Как можно определить диапазоны значений с помощью BETWEEN?

A
SELECT * FROM Studenten WHERE Semester BETWEEN 1 AND 4;
25
Q

Как можно отфильтровать данные, соответствующие определенным условиям?

A

С помощью условия WHERE, например:
~~~
SELECT * FROM таблица WHERE столбец = ‘значение’;
~~~

26
Q

Was ist der Unterschied zwischen INNER JOIN und OUTER JOIN?

A

INNER JOIN: Возвращает только записи, у которых есть совпадения в обеих таблицах.
OUTER JOIN: Возвращает также записи, у которых нет совпадений (LEFT, RIGHT или FULL).

27
Q

Как можно обновить данные в таблице?

A

С помощью команды UPDATE:
```
UPDATE tabellenname
SET spalte = wert
WHERE bedingung;
~~~

28
Q

Что делает условие GROUP BY?

A

Оно группирует записи, имеющие одинаковые значения в определённых столбцах, и позволяет выполнять агрегации (например, SUM, AVG).

29
Q

Что такое транзакция в SQL и как она управляется?

A

Транзакция — это единица SQL-команд, которая выполняется как единое целое.

Она управляется с помощью:

BEGIN TRANSACTION: Startet die Transaktion.
COMMIT: Bestätigt die Änderungen.
ROLLBACK: Macht Änderungen rückgängig.
30
Q

Как удалить таблицу?

A

DROP TABLE tabellenname;

31
Q

Was ist der Unterschied zwischen DELETE und TRUNCATE?

A

DELETE: Удаляет определённые записи на основе условия.
TRUNCATE: Удаляет все записи из таблицы, но сохраняет её структуру.

32
Q

Как работает индекс в SQL?

A

Индекс ускоряет запросы к базе данных, обеспечивая быстрый поиск значений в столбцах. Он создаётся с помощью CREATE INDEX.

33
Q

Was ist eine Ansicht (VIEW)?

A

Представление — это сохранённый запрос, который обрабатывается как таблица. Синтаксис:

CREATE VIEW имя_представления AS
SELECT столбцы
FROM таблица
WHERE условие;
34
Q

Как обрабатываются значения NULL?

A

NULL обозначает неизвестные или отсутствующие значения. Условия проверяются с помощью IS NULL или IS NOT NULL.

35
Q

В чём разница между UNION и UNION ALL?

A

UNION: Объединяет наборы результатов и удаляет дубликаты.
UNION ALL: Объединяет наборы результатов без удаления дубликатов.

36
Q

Какую роль играет команда HAVING?

A

HAVING используется с GROUP BY для фильтрации групп, которые удовлетворяют агрегатным функциям.

37
Q

Как управляются права в SQL?

A

С помощью GRANT и REVOKE. Пример:

GRANT SELECT ON таблица TO пользователь;
REVOKE SELECT ON таблица FROM пользователь;
38
Q

Как связать права с ролями?

A
GRANT SELECT, INSERT ON studenten TO pruefungsamt;
GRANT pruefungsamt TO gaertner
39
Q

Что произойдет при запросе SELECT * FROM pruefen, если не все столбцы доступны пользователю?

A

Будет выдана ошибка прав доступа, если у пользователя нет всех необходимых прав.

40
Q

Что хранится в списке контроля доступа (ACL)?

A

- Субъект (например, пользователь или роль),
- Право (например, SELECT, INSERT),
- Передающий и получающий пользователи.

41
Q

Какие проблемы могут возникнуть при передаче прав?

A

Случай 1: Если S2 передал право от S1 к S3 и впоследствии S1 отозвал это право у S2, могут возникнуть несогласованные состояния.
Случай 2: При рекурсивной передаче и отзыве прав могут образовываться циклы, которые сложно обрабатывать алгоритмически.

42
Q

Что происходит при каскадном отзыве прав?

A

- Все права, зависящие от данной выдачи, также отзываются.
- Циклы в иерархии прав должны быть учтены.

43
Q

Как можно проверить права на таблицу?

A
SELECT * FROM information_schema.table_privileges WHERE table_name = 'Mitarbeiter';
44
Q

Как можно ограничить доступ к данным с определёнными условиями?

A

Создать представление (view):
~~~
CREATE VIEW lowProfs AS SELECT persnr, name, raum FROM professoren WHERE rang <= ‘C3’;

**Предоставить доступ к представлению:**

GRANT SELECT ON lowProfs TO xyzRole;

~~~

45
Q

Что такое представление (Sicht) в базе данных?

A

Представление — это виртуальная таблица, которая объединяет данные из одной или нескольких таблиц для определённой цели.

46
Q

Какие преимущества дают представления?

A

- Защита данных
- Упрощение взаимосвязей данных
- Построение статистических отчётов

47
Q

Wie wird eine Sicht in SQL definiert?

A
CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW name [ ( column_name [, ...] ) ] AS query
48
Q

В чём разница между представлением и оператором WITH?

A

Представления определяются на постоянной основе и доступны в течение всего времени работы системы. Оператор WITH действует только временно для одной конкретной запроса.

49
Q

Как можно отобразить все определённые представления в PostgreSQL?

A

С помощью команды \d в клиенте psql.

50
Q

Как можно создать представление для защиты данных?

A
CREATE VIEW prüfenSicht AS
SELECT MatrNr, VorlNr, PersNr
FROM prüfen;