Загрузка данных
# ============================================================
# PowerShell скрипт создания базы данных Microsoft Access
# Лабораторная работа 2
# ============================================================
$sPath = "$PSScriptRoot\lab2_database.accdb"
if (-not $PSScriptRoot) { $sPath = "$PWD\lab2_database.accdb" }
Write-Host "Создание базы данных Access..." -ForegroundColor Cyan
Write-Host "Путь: $sPath"
# Удалить старый файл
if (Test-Path $sPath) { Remove-Item $sPath; Write-Host "Старый файл удалён." }
# Создание файла через ADOX
$cat = New-Object -ComObject ADOX.Catalog
$cat.Create("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$sPath;")
Write-Host "Файл базы данных создан." -ForegroundColor Green
# Подключение через ADO
$conn = New-Object -ComObject ADODB.Connection
$conn.Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$sPath;")
# === Задание 1: Таблица Группы ===
Write-Host "`n=== Задание 1: Создание таблицы Группы ===" -ForegroundColor Yellow
$conn.Execute("CREATE TABLE Группы ([Учебная группа] INTEGER CONSTRAINT PK_Группы PRIMARY KEY, [Преподаватель] TEXT(100));")
Write-Host "Таблица 'Группы' создана." -ForegroundColor Green
# === Задание 2: Таблица Список ===
Write-Host "`n=== Задание 2: Создание таблицы Список ===" -ForegroundColor Yellow
$conn.Execute("CREATE TABLE Список ([Код] AUTOINCREMENT CONSTRAINT PK_Список PRIMARY KEY, [Фамилия] TEXT(50), [Имя] TEXT(50), [Отчество] TEXT(50), [Год рождения] INTEGER, [Школа] INTEGER, [Класс] INTEGER, [Учебная группа] INTEGER);")
Write-Host "Таблица 'Список' создана." -ForegroundColor Green
# === Задание 3: Связь один-ко-многим ===
Write-Host "`n=== Задание 3: Создание схемы данных ===" -ForegroundColor Yellow
$conn.Execute("ALTER TABLE Список ADD CONSTRAINT FK_УчебнаяГруппа FOREIGN KEY ([Учебная группа]) REFERENCES Группы ([Учебная группа]) ON UPDATE CASCADE ON DELETE CASCADE;")
Write-Host "Связь один-ко-многим создана." -ForegroundColor Green
# === Задание 4: Заполнение таблицы Группы ===
Write-Host "`n=== Задание 4: Заполнение таблицы Группы ===" -ForegroundColor Yellow
$conn.Execute("INSERT INTO Группы ([Учебная группа], [Преподаватель]) VALUES (101, 'Верзаков С. А.');")
$conn.Execute("INSERT INTO Группы ([Учебная группа], [Преподаватель]) VALUES (102, 'Белоусов А. И.');")
$conn.Execute("INSERT INTO Группы ([Учебная группа], [Преподаватель]) VALUES (103, 'Масалова В. А.');")
$conn.Execute("INSERT INTO Группы ([Учебная группа], [Преподаватель]) VALUES (104, 'Новикова Е. В.');")
$conn.Execute("INSERT INTO Группы ([Учебная группа], [Преподаватель]) VALUES (105, 'Зачесова Т. П.');")
Write-Host "Таблица 'Группы' заполнена (5 записей)." -ForegroundColor Green
# === Задание 6: Заполнение таблицы Список ===
Write-Host "`n=== Задание 6: Заполнение таблицы Список ===" -ForegroundColor Yellow
$conn.Execute("INSERT INTO Список ([Фамилия],[Имя],[Отчество],[Год рождения],[Школа],[Класс],[Учебная группа]) VALUES ('Чернова','Кристина','Ивановна',1987,1,9,101);")
$conn.Execute("INSERT INTO Список ([Фамилия],[Имя],[Отчество],[Год рождения],[Школа],[Класс],[Учебная группа]) VALUES ('Терещенко','Инна','Алексеевна',1986,3,10,103);")
$conn.Execute("INSERT INTO Список ([Фамилия],[Имя],[Отчество],[Год рождения],[Школа],[Класс],[Учебная группа]) VALUES ('Сидоров','Иван','Петрович',1987,5,10,101);")
$conn.Execute("INSERT INTO Список ([Фамилия],[Имя],[Отчество],[Год рождения],[Школа],[Класс],[Учебная группа]) VALUES ('Бондарь','Ольга','Петровна',1987,1,9,104);")
$conn.Execute("INSERT INTO Список ([Фамилия],[Имя],[Отчество],[Год рождения],[Школа],[Класс],[Учебная группа]) VALUES ('Новоселов','Алексей','Иванович',1987,3,9,105);")
Write-Host "Таблица 'Список' заполнена (5 записей)." -ForegroundColor Green
# === Задание 7: Каскадное обновление 101-105 -> 201-205 ===
Write-Host "`n=== Задание 7: Каскадное обновление групп ===" -ForegroundColor Yellow
$conn.Execute("UPDATE Группы SET [Учебная группа]=201 WHERE [Учебная группа]=101;")
$conn.Execute("UPDATE Группы SET [Учебная группа]=202 WHERE [Учебная группа]=102;")
$conn.Execute("UPDATE Группы SET [Учебная группа]=203 WHERE [Учебная группа]=103;")
$conn.Execute("UPDATE Группы SET [Учебная группа]=204 WHERE [Учебная группа]=104;")
$conn.Execute("UPDATE Группы SET [Учебная группа]=205 WHERE [Учебная группа]=105;")
Write-Host "Группы обновлены 101->201 ... 105->205. Список обновился автоматически." -ForegroundColor Green
# === Задание 8: Каскадное удаление ===
Write-Host "`n=== Задание 8: Каскадное удаление ===" -ForegroundColor Yellow
$rs = $conn.Execute("SELECT COUNT(*) FROM Список WHERE [Учебная группа]=201;")
Write-Host "Записей с группой 201 до удаления: $($rs.Fields(0).Value)"
$conn.Execute("DELETE FROM Группы WHERE [Учебная группа]=201;")
$rs = $conn.Execute("SELECT COUNT(*) FROM Список WHERE [Учебная группа]=201;")
Write-Host "Записей с группой 201 после удаления: $($rs.Fields(0).Value)"
Write-Host "Каскадное удаление работает!" -ForegroundColor Green
$conn.Close()
Write-Host "`n============================================" -ForegroundColor Cyan
Write-Host "БАЗА ДАННЫХ УСПЕШНО СОЗДАНА!" -ForegroundColor Green
Write-Host "Файл: $sPath" -ForegroundColor Cyan
Write-Host "============================================`n"
Write-Host "Открой файл lab2_database.accdb в Microsoft Access" -ForegroundColor Yellow
pause