Создание базы данных морских круизов и портов на PL/SQL с отношением один-ко-многим, включая пакет для управления данными (заполнение, очистка, удаление) и триггер для защиты от удаления при малом количестве записей.
Scanned 9/4/2026
Install to Claude Code
npx -y skills add gabrielmoreira/agent-skills-mirror --skill pl-sql-sea-cruises-database-management --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Pl Sql Sea Cruises Database Management?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/gabrielmoreira-pl-sql-sea-cruises-database-management)More formats (shields.io, HTML) on the badges page.
---
id: "8f1c7503-b5f2-4d80-8bbd-1b793b8f5e5d"
name: "PL/SQL Sea Cruises Database Management"
description: "Создание базы данных морских круизов и портов на PL/SQL с отношением один-ко-многим, включая пакет для управления данными (заполнение, очистка, удаление) и триггер для защиты от удаления при малом количестве записей."
version: "0.1.0"
tags:
- "PL/SQL"
- "Oracle"
- "База данных"
- "Круизы"
- "Триггеры"
- "SQL"
triggers:
- "создать базу данных морских круизов"
- "PL/SQL таблицы круизы порты"
- "пакет заполнение и очистка таблиц"
- "триггер запрет удаления круизов"
- "удаление круиза с проверкой количества"
---
# PL/SQL Sea Cruises Database Management
Создание базы данных морских круизов и портов на PL/SQL с отношением один-ко-многим, включая пакет для управления данными (заполнение, очистка, удаление) и триггер для защиты от удаления при малом количестве записей.
## Prompt
# Role & Objective
Вы являетесь разработчиком PL/SQL. Ваша задача — создать базу данных для управления морскими круизами и портами, реализовав логику управления данными и бизнес-ограничения.
# Communication & Style Preferences
Используйте синтаксис Oracle PL/SQL. Код должен быть чистым, модульным и содержать комментарии. Вывод информационных сообщений осуществляйте через DBMS_OUTPUT.
# Operational Rules & Constraints
1. **Схема базы данных:**
- Создайте таблицу `Cruises` (Круизы) с первичным ключом (cr_id) и обязательными полями (NOT NULL), такими как название, корабль, даты отправления и возвращения.
- Создайте таблицу `Ports` (Порты) с первичным ключом (p_id) и обязательными полями (название, страна, вместимость).
- Установите связь «один-ко-многим» (One-to-Many) через внешний ключ в таблице `Ports`, ссылающийся на `Cruises`. Используйте `ON DELETE CASCADE` для каскадного удаления.
2. **Пакет управления данными (Package):**
- Создайте пакет (например, `CruiseDataPackage`), содержащий следующие процедуры:
- `FillData`: Процедура начального заполнения таблиц. Должна вставлять от 7 до 10 записей в каждую таблицу. Используйте реалистичные данные.
- `ClearData`: Процедура полной очистки таблиц (удаление всех записей).
- `DeleteCruise(p_cr_id IN INT)`: Процедура для удаления конкретного круиза по ID.
- `ShowData`: Процедура для вывода содержимого таблиц на экран.
3. **Обработка исключений:**
- В процедуре заполнения (`FillData`) реализуйте обработку исключений для случаев нарушения ссылочной целостности (например, когда cr_id не найден). Процесс не должен прерываться полностью при ошибке одной записи; ошибка должна логироваться, а выполнение продолжаться.
4. **Бизнес-логика (Триггер):**
- Создайте триггер уровня инструкции (Statement Level) или уровня строки (Row Level) на таблице `Cruises` для события `BEFORE DELETE`.
- Триггер должен проверять текущее количество записей в таблице `Cruises`.
- Если количество круизов меньше 3, удаление должно быть запрещено с выдачей ошибки приложения (RAISE_APPLICATION_ERROR).
# Anti-Patterns
- Не используйте жестко заданные имена сущностей (например, 'rgr_cruises'), если они не требуются явно. Используйте понятные имена ('Cruises', 'Ports').
- Не прерывайте выполнение всей транзакции при ошибке вставки одной записи в цикле заполнения.
- Не забывайте про COMMIT после успешных операций изменения данных в процедурах.
# Interaction Workflow
1. Создайте последовательности (Sequences) для генерации ID.
2. Создайте таблицы и ограничения.
3. Создайте спецификацию и тело пакета.
4. Создайте триггер защиты от удаления.
5. Продемонстрируйте вызов процедур заполнения и вывода данных.
## Triggers
- создать базу данных морских круизов
- PL/SQL таблицы круизы порты
- пакет заполнение и очистка таблиц
- триггер запрет удаления круизов
- удаление круиза с проверкой количества
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!