Sem II (Datenbanken) - N5 Flashcards
Wie funktioniert die Projektion in der Relationalen Algebra?
Проекция выбирает определенные атрибуты реляции, тем самым уменьшая количество столбцов.
Wann benötigt man eine Umbenennung (ρ) in der Relationalen Algebra?
Umbenennung wird benötigt, wenn zwei Relationen mit unterschiedlichen Attributnamen verglichen oder vereinigt werden sollen.
Was ist der Unterschied zwischen UNION und UNION ALL in SQL?
UNION: Исключает повторяющиеся кортежи.
UNION ALL: Сохраняет повторяющиеся кортежи.
Was ist der Mengendurchschnitt () in der Relationalen Algebra und wie wird er berechnet?
Пересечение множеств () возвращает общие кортежи двух реляций с одинаковой схемой. Оно может быть выражено через разницу множеств: (S = R - (R - S) ). В SQL для этого используется команда INTERSECT
Wie wird der natürliche Join in der Relationalen Algebra definiert?
Естественное соединение объединяет две реляции, связывая кортежи с одинаковыми значениями в атрибутах соединения
Wie arbeitet der Join-Operator im Kontext von relationalen Datenbanken?
Оператор соединения объединяет две реляции на основе общих атрибутов. Например, соединение между таблицами „слушать” и „Лекции” возвращает новую реляцию с информацией из обеих таблиц.
В чем особенность применения переименований в реляционной алгебре?
Переименования позволяют переименовывать атрибуты, чтобы сделать реляции совместимыми, например, для пересечения множеств.
Wie wird die Differenz in der Relationalen Algebra berechnet?
Die Differenz ( R - S ) gibt die Tupel aus ( R ) zurück, die nicht in ( S ) vorkommen. In SQL wird dies durch EXCEPT ausgedrückt.
Warum ist der Mengendurchschnitt nicht immer direkt auf SQL übertragbar?
Nicht alle Datenbanksysteme unterstützen den INTERSECT-Befehl. Alternativ kann der Mengendurchschnitt mit Differenzoperationen ausgedrückt werden.
Was ist ein 3-Wege-Join und wann wird er benötigt?
Трехстороннее соединение используется, когда необходимо связать три реляции. Если атрибуты для соединения имеют разные имена, их нужно переименовать для указания условия соединения.
Was ist ein Theta-Join und wie unterscheidet er sich vom Equi-Join?
1) Тета-соединение позволяет использовать условие соединения с произвольным предикатом.
2) Эквисоединение является частным случаем тета-соединения, где условие ограничено равенством атрибутов.
Wie unterscheidet sich ein Join vom kartesischen Produkt?
Соединение соответствует декартову произведению, к которому применяется селекция для фильтрации результатов, удовлетворяющих условию соединения.
Was ist der Unterschied zwischen einem natürlichen Join und einem äußeren Join?
1) Естественное соединение объединяет только кортежи, у которых совпадают значения общих атрибутов.
2) Внешнее соединение (левое, правое или полное) дополнительно сохраняет кортежи из одной или обеих реляций, которые не находят совпадения, и заполняет отсутствующие значения как NULL.
Was versteht man unter einem Semi-Join?
Полу-соединение возвращает только кортежи из первой реляции, которые совпадают хотя бы с одним кортежем второй реляции. Дополнительные атрибуты второй реляции в результат не включаются.
Как удалить дубликаты в SQL?
Mit dem DISTINCT-Keyword.
~~~
SELECT DISTINCT Rang FROM Professoren;
~~~
Wie sortiert man Ergebnisse in SQL?
Mit ORDER BY
~~~
SELECT PersNr, Name, Rang FROM Professoren ORDER BY Rang DESC, Name ASC;
~~~
Wie funktioniert die Verwendung von Platzhaltern in SQL?
% обозначает любое количество символов (включая ноль).
_ обозначает ровно один символ.
SELECT * FROM Studenten WHERE Name LIKE 'T%eophrastos';
Какова цель GROUP BY и HAVING?
GROUP BY группирует записи на основе определенных столбцов.
HAVING фильтрует группы на основе условий.
~~~
SELECT Titel, COUNT()
FROM Vorlesungen
GROUP BY Titel
HAVING COUNT() > 1;
~~~
Как идентифицировать записи, которые не встречаются в подзапросе?
Mit NOT IN
~~~
SELECT Name FROM Professoren WHERE PersNr NOT IN (SELECT gelesenVon FROM Vorlesungen);
~~~
Wie findet man die Studenten, die am längsten studieren?
С помощью ALL
~~~
SELECT Name FROM Studenten WHERE Semester >= ALL (SELECT Semester FROM Studenten);
~~~
Как выполнять объединения в SQL?
Путем связывания таблиц через условия:
~~~
SELECT s.Name, v.Titel
FROM Studenten s, hören h, Vorlesungen v
WHERE s.MatrNr = h.MatrNr AND h.VorlNr = v.VorlNr;
~~~
Как проверить, не имеет ли лекция последующих лекций?
С помощью NOT IN:
~~~
SELECT Titel FROM Vorlesungen WHERE VorlNr NOT IN (SELECT Vorgänger FROM voraussetzen);
~~~
Как использовать CASE в SQL?
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;
Как можно определить диапазоны значений с помощью BETWEEN?
SELECT * FROM Studenten WHERE Semester BETWEEN 1 AND 4;
Как можно отфильтровать данные, соответствующие определенным условиям?
С помощью условия WHERE, например:
~~~
SELECT * FROM таблица WHERE столбец = ‘значение’;
~~~
Was ist der Unterschied zwischen INNER JOIN und OUTER JOIN?
INNER JOIN: Возвращает только записи, у которых есть совпадения в обеих таблицах.
OUTER JOIN: Возвращает также записи, у которых нет совпадений (LEFT, RIGHT или FULL).
Как можно обновить данные в таблице?
С помощью команды UPDATE:
```
UPDATE tabellenname
SET spalte = wert
WHERE bedingung;
~~~
Что делает условие GROUP BY?
Оно группирует записи, имеющие одинаковые значения в определённых столбцах, и позволяет выполнять агрегации (например, SUM, AVG).
Что такое транзакция в SQL и как она управляется?
Транзакция — это единица SQL-команд, которая выполняется как единое целое.
Она управляется с помощью:
BEGIN TRANSACTION: Startet die Transaktion. COMMIT: Bestätigt die Änderungen. ROLLBACK: Macht Änderungen rückgängig.
Как удалить таблицу?
DROP TABLE tabellenname;
Was ist der Unterschied zwischen DELETE und TRUNCATE?
DELETE: Удаляет определённые записи на основе условия.
TRUNCATE: Удаляет все записи из таблицы, но сохраняет её структуру.
Как работает индекс в SQL?
Индекс ускоряет запросы к базе данных, обеспечивая быстрый поиск значений в столбцах. Он создаётся с помощью CREATE INDEX.
Was ist eine Ansicht (VIEW)?
Представление — это сохранённый запрос, который обрабатывается как таблица. Синтаксис:
CREATE VIEW имя_представления AS SELECT столбцы FROM таблица WHERE условие;
Как обрабатываются значения NULL?
NULL обозначает неизвестные или отсутствующие значения. Условия проверяются с помощью IS NULL или IS NOT NULL.
В чём разница между UNION и UNION ALL?
UNION: Объединяет наборы результатов и удаляет дубликаты.
UNION ALL: Объединяет наборы результатов без удаления дубликатов.
Какую роль играет команда HAVING?
HAVING используется с GROUP BY для фильтрации групп, которые удовлетворяют агрегатным функциям.
Как управляются права в SQL?
С помощью GRANT и REVOKE. Пример:
GRANT SELECT ON таблица TO пользователь; REVOKE SELECT ON таблица FROM пользователь;
Как связать права с ролями?
GRANT SELECT, INSERT ON studenten TO pruefungsamt; GRANT pruefungsamt TO gaertner
Что произойдет при запросе SELECT * FROM pruefen, если не все столбцы доступны пользователю?
Будет выдана ошибка прав доступа, если у пользователя нет всех необходимых прав.
Что хранится в списке контроля доступа (ACL)?
- Субъект (например, пользователь или роль),
- Право (например, SELECT, INSERT),
- Передающий и получающий пользователи.
Какие проблемы могут возникнуть при передаче прав?
Случай 1: Если S2 передал право от S1 к S3 и впоследствии S1 отозвал это право у S2, могут возникнуть несогласованные состояния.
Случай 2: При рекурсивной передаче и отзыве прав могут образовываться циклы, которые сложно обрабатывать алгоритмически.
Что происходит при каскадном отзыве прав?
- Все права, зависящие от данной выдачи, также отзываются.
- Циклы в иерархии прав должны быть учтены.
Как можно проверить права на таблицу?
SELECT * FROM information_schema.table_privileges WHERE table_name = 'Mitarbeiter';
Как можно ограничить доступ к данным с определёнными условиями?
Создать представление (view):
~~~
CREATE VIEW lowProfs AS SELECT persnr, name, raum FROM professoren WHERE rang <= ‘C3’;
**Предоставить доступ к представлению:**
GRANT SELECT ON lowProfs TO xyzRole;
~~~
Что такое представление (Sicht) в базе данных?
Представление — это виртуальная таблица, которая объединяет данные из одной или нескольких таблиц для определённой цели.
Какие преимущества дают представления?
- Защита данных
- Упрощение взаимосвязей данных
- Построение статистических отчётов
Wie wird eine Sicht in SQL definiert?
CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW name [ ( column_name [, ...] ) ] AS query
В чём разница между представлением и оператором WITH?
Представления определяются на постоянной основе и доступны в течение всего времени работы системы. Оператор WITH действует только временно для одной конкретной запроса.
Как можно отобразить все определённые представления в PostgreSQL?
С помощью команды \d в клиенте psql.
Как можно создать представление для защиты данных?
CREATE VIEW prüfenSicht AS SELECT MatrNr, VorlNr, PersNr FROM prüfen;