Практическая работа № 2.
Реляционные базы данных.
Цель работы: Получить понятие о реляционных базах данных и их возможностях.
Ход работы.
Разделение данных на несколько таблиц.
Откройте базу данных, в которой уже имеется одна таблица под названием Страны Европы, состоящую из 20 записей.
Создайте таблицу Религии при конструктора таблиц с полями:
Поле Код религии сделайте ключевым.
Создайте таблицу Строй при конструктора таблиц с полями:
Поле Код строя сделайте ключевым.
Заполните эти таблицы (таким образом, напротив каждой религии и каждого строя будет стоять его код).
Откройте таблицу Страны Европы и замените названия в полях Строй и Религия на соответствующие им коды в ранее созданных таблицах.
Откройте таблицу Страны Европы в режиме конструктора и для полей Строй и Религия заменит тип данных на числовой.
Установление связей между двумя таблицами.
Выполните команду Схема данных из меню Работа с базами данных.
В диалоговом окне добавления таблиц добавьте все три таблицы.
На поле Код религии таблицы Религии нажмите левую клавишу мыши и удерживая ее перетащите на поле Религия таблицы Страны Европы. В появившемся диалоговом окне необходимо установить нужную связь флажок напротив опции обеспечение целостности данных. Это означает, что перед тем как занести данные в подчиненную таблицу, программа будет проверять их на соответствие главной (таблица Страны Европы является подчиненной для таблицы Религии). Установите флажок напротив опции каскадное обновление связанных полей, это означает, что изменения в главной таблице автоматически будут влиять на подчиненную. Установите флажок напротив опции каскадное удаление связанных записей, это означает, что записи удаленные в главной таблице автоматически будут удалены в подчиненной таблице.
Аналогичную операцию проделайте с таблицами Страны Европы и Строй.
Закройте схему с сохранением.
Сохраните базу данных.
#include <iomanip>
using namespace std;
int main() {
int n,k,m;
cout<<"N = "; cin>>n;
cout<<endl;
if (n%2!=0) {
cout<<"недопустимое значение N: "<<n<<endl;
return(1);
}
cout<<setw(12)<<"gooses"<<setw(10)<<"rabbits"<<endl;
m=n/4; k=(n-m*4)/2;
while (m>=0) {
if (k>0) cout<<setw(10)<<k;
else cout<<setw(10)<<"--";
if (m>0) cout<<setw(10)<<m;
else cout<<setw(10)<<"--";
cout<<endl;
m--; k+=2;
}
system("pause");
return(0);
}
//1
Var
s,maxs:string;
i,max,j,len:integer;
begin
max:=-1;
readln(s);
var ars:=s.Split;
for i:=0 to ars.length-1 do
begin
len:=0;
for j:=1 to ars[i].length do
if (lowcase(ars[i][j])>='a') and (lowcase(ars[i][j])<='z') then
inc(len);
if ars[i].length=max then
maxs+=chr(13)+ars[i]+' '+len;
if ars[i].length>max then
begin
maxs:=ars[i]+' '+len;
max:=ars[i].length;
end;
end;
write(maxs);
end.
Пример ввода:
Steins;Gate is fine VN, 12345678910
Пример вывода:
Steins;Gate 10
12345678910 0
//2
Var
s:string;
i,counter:integer;
begin
readln(s);
for i:=1 to length(s) do
if (s[i]=upcase(s[i])) and (lowcase(s[i])>='a') and (lowcase(s[i])<='z') then
inc(counter);
writeln(counter);
end.
Пример ввода:
SiMple TeXt
Пример вывода:
4