Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное_пособие_заочное (брошюра)

.pdf
Скачиваний:
24
Добавлен:
21.03.2016
Размер:
1.92 Mб
Скачать

Допустим необходимо изменить заводскую цену модели 12410 на 200 р. в связи с заменой тканевой обивки на велюровую.

Это можно выполнить при помощи запроса:

UPDATE [Характеристики моделей] SET [Заводская цена] = [Заводская цена]+200, Обивка = "Велюр" WHERE [Код модели]=12410;

После выполнения этого запроса и подтверждения обновления данных, мы получим следующий результат:

Характеристики моделей.

 

 

Код

 

 

Мощность

 

 

 

Цвет

 

Количест

 

Коробка передач

 

модели

 

 

 

 

 

 

 

 

 

 

 

 

во дверей

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12410

 

60/90

 

 

Антрацитовый

 

4

 

Автоматическая

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12579

 

53/75

 

 

Красный торнадо

 

4

 

Ручная

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12580

 

69/90

 

 

Бутылочный

 

4

 

Автоматическая

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12651

 

90/135

 

Небесно-голубой

 

2

 

Ручная

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12653

 

100/139

 

Черный

 

2

 

Ручная

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Обивка

 

Заводская

 

Транспорт-

 

 

 

Предпро-

 

 

Специальная

 

 

 

 

цена

 

 

 

ные

 

 

 

дажная

 

 

 

модель

 

 

 

 

 

 

 

 

 

 

издержки

 

 

 

подготовка

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Велюр

 

46

400,00р.

 

1 100,00р.

 

 

 

105,00р.

 

 

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ткань

 

35

700,00р.

 

950,00р.

 

 

 

105,00р.

 

 

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ткань

 

39

200,00р.

 

1 200,00р.

 

 

 

105,00р.

 

 

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Велюр

 

37

900,00р.

 

1 050,00р.

 

 

 

105,00р.

 

 

Да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Кожа

 

41

100,00р.

 

975,00р.

 

 

 

105,00р.

 

 

Да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

132

 

 

 

 

 

 

 

 

 

 

фигурные скобки, представляет собой блок или составной оператор. Блоки могут быть пустыми, вложенными и не должны заканчиваться точкой с запятой.

Блок может использоваться везде, где используется обычный оператор языка. Как правило, блок – это тела функций и операторов if, switch, while, do и for.

Внутри блока могут содержаться описания переменных, которые будут локальными по отношению к этому блоку.

Например,

{ int n; n++; s + = float(n); }

1.4.6. Условные операторы.

Синтаксис условного оператора if имеет вид:

if ( выражение ) оператор1;

где оператор1 – простой или составной оператор.

Условный оператор if выполняет следующие действия. Если выражение в круглых скобках вырабатывает ненулевое значение (истина), то выполняется оператор1 , в противном случае выполняется следующий за оператором if оператор.

Блок – схема оператора if приведена на рисунке 1.4.1.

Л о ж .

в ы р а ж е н и е

И с т.

о п е р а то р 1

Рис. 1.4.1. Схема работы оператора if .

21

Кроме условного оператора if в языке Си определен еще один условный оператор if else

if ( выражение ) оператор1; else оператор2;

где оператор1 и оператор2 – простые или составные операторы.

Условный оператор if else выполняет следующие действия. Сначала вычисляется выражение в круглых скобках, и если получено ненулевое значение (истина), то выполняетсяоператор1 , в противном случае выполняется оператор2 .

Блок – схема оператора if else приведена на рисунке 1.4.2.

Рис. 1.4.2. Схема работы оператора if else.

Пример 1.4.1.

Найти максимальное из трех целых чисел x, y, z. int x, y, z, max;

scanf ( %d %d %d , &x, &y, &z); if (x > y) max x; else max y; if (z > max) max z;

printf ( max %d , max);

Пример 1.4.2.

Вычислить значение функции:

22

Код модели

Модель

 

 

 

 

12579Corola LiftbackXL

12580Corola LiftbackGT

12651Corola CompactXL

12653Corola CompactGT

12411Corola Kombi Compact

b) Удаление данных.

Допустим необходимо удалить из БД клиента Петрову О.С.

Это можно выполнить при помощи запроса:

DELETE FROM Клиенты WHERE Фамилия="Петрова";

После выполнения этого запроса и подтверждения удаления данных, мы получим следующий результат:

Клиенты

Код

 

Имя, отчество

 

 

 

Фамилия

клиента

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

79

Настасья Кириловна

 

 

 

Мирчуткина

 

 

 

 

 

 

 

 

 

 

 

 

80

Павел Иванович

 

 

 

Чичиков

 

 

 

 

 

 

 

 

 

 

 

 

81

Михаил Васильевич

 

 

 

Ломоносов

 

 

 

 

 

 

 

 

 

 

 

 

83

Олег Павлович

 

 

 

Жуков

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Почтовый адрес

 

Почтовый

 

Населенный

 

Телефон

 

индекс

 

 

 

пункт

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Юбилейная 22

 

 

309511

 

Старый Оскол

 

33-67-89

 

 

 

 

 

 

Губернская 1

 

 

 

309510

 

Старый Оскол

 

43-67-20

 

 

 

 

 

Холмогорская 113

 

 

309530

 

Воронеж

 

24-54-23

 

 

 

 

 

Космонавтов 3

 

 

309510

 

Рязань

 

44-55-89

 

 

 

 

 

 

 

 

 

 

 

c) Обновление данных.

131

3. Модели.

Код модели

Модель

 

 

 

 

12410Corola Kombi

12579Corola LiftbackXL

12580Corola LiftbackGT

12651Corola CompactXL

12653Corola CompactGT

4. Договора

 

Номер

 

Код

 

Код

 

Дата

 

Количество

 

Скидка

 

 

договора

 

клиента

 

модели

 

заказа

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

120

 

79

 

12410

 

01.01.01

 

5

 

10

 

 

 

 

 

 

 

 

 

120

 

79

 

12579

 

05.01.01

 

5

 

10

 

 

 

 

 

 

 

 

 

122

 

81

 

12580

 

03.02.01

 

10

 

15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

123

 

81

 

12651

 

03.02.01

 

7

 

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

124

 

83

 

12653

 

05.02.01

 

10

 

15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6)Изменение данных.

a)Добавление данных.

Например, добавить одну запись в таблицу Модели можно при помощи следующего запроса в режиме SQL:

INSERT INTO Модели VALUES (12411, "Corola Kombi Compact");

Затем запустить запрос на выполнение и сохранить запрос под каким-либо именем. В результате выполнения этого запроса будет добавлена одна запись в таблицу Модели.

Код модели

Модель

 

 

 

 

12410Corola Kombi

130

1, если x 0 y(x) = 0, если x= 0 -1, если x< 0

Возможны два пути решения:

1)

if ( x > 0)

y 1;

 

 

if (x = = 0)

y 0;

 

 

if ( x < 0)

y - 1;

 

2)

if (x > 0) y 1; else

 

 

{ if (x < 0)

y - 1; else

y 0; }

1.4.7. Оператор цикла for.

Оператор цикла for является наиболее общей формой цикла. Синтаксис оператора цикла for следующий:

for(выражение1; выражение2; выражение3) оператор;

где выражение1, выражение2, выражение3 – необязательные элементы.

Оператор цикла for работает следующим образом:

1)вычисляется выражение1, если оно присутствует;

2)вычисляется выражение2, если оно присутствует. Если полученное значение нуль, то цикл прекращается, в противном случае выполняется тело цикла – оператор ;

3)вычисляется выражение3, если оно присутствует;

4)переход к пункту 2.

Например,

 

for ( i=0; i<100; i++ );

- пустой оператор

for ( ; ; ) s = 0;

- бесконечный цикл

for ( i=10; i>6; i++ ) s = 0 ;

- бесконечный цикл

23

 

Появление в любом месте оператора цикла for оператора continue (продолжать) приводит к переходу на пункт 3, а оператора break (прервать) – к немедленному прекращению цикла.

Пример 1.4.3.

Найти произведение f = 200*198*196*….*2:

# include stdio.h

void main()

{

int i, f 1;

for ( i 200; i =2; i 2) f * = i; printf( f %d , f);

}

Рис. 1.4.3. Блок-схема к примеру 1.4.3.

Пример 1.4.4.

Напечатать неотрицательные значения функции y(x)=sin35x на отрезке [0; 2π] в узлах разбиения отрезка с постоянным шагом h=0,2.

24

 

 

Код

 

 

Мощность

 

 

 

Цвет

 

Количество

 

 

 

Коробка

 

 

модели

 

 

 

 

 

 

 

дверей

 

 

 

передач

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12410

 

60/90

 

 

 

Антрацитовый

 

4

 

Автоматическа

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12579

 

53/75

 

 

 

Красный торнадо

 

4

 

Ручная

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12580

 

69/90

 

 

 

Бутылочный

 

4

 

Автоматическа

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12651

 

90/135

 

 

Небесно-голубой

 

2

 

Ручная

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12653

 

100/139

 

Черный

 

2

 

Ручная

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Обивка

Заводская

 

Транспорт-

 

Предпродажная

 

 

Специаль

 

 

 

цена

 

 

 

ные

 

 

подготовка

 

 

 

ная

 

 

 

 

 

 

 

 

 

 

 

издержки

 

 

 

 

модель

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ткань

 

 

 

46 200,00р.

 

1 100,00р.

 

 

105,00р.

 

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ткань

 

 

 

35 700,00р.

 

950,00р.

 

 

105,00р.

 

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ткань

 

 

 

39 200,00р.

 

1 200,00р.

 

 

105,00р.

 

 

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Велюр

 

 

 

37 900,00р.

 

1 050,00р.

 

 

105,00р.

 

 

Да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Кожа

 

 

 

41 100,00р.

 

975,00р.

 

 

105,00р.

 

Да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.

Клиенты.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Код

 

 

 

Имя, отчество

 

 

Фамилия

 

 

 

 

 

 

клиента

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

79

 

Настасья Кириловна

 

 

Мирчуткина

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

80

 

Павел Иванович

 

 

Чичиков

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

81

 

Михаил Васильевич

 

 

Ломоносов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

82

 

Ольга Степановна

 

 

Петрова

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

83

 

Олег Павлович

 

 

Жуков

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Почтовый адрес

 

Почтовый

 

 

Населенный

 

Телефон

 

 

 

 

 

 

индекс

 

 

пункт

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Юбилейная 22

 

 

 

309511

 

Старый Оскол

 

33-67-89

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Губернская 1

 

 

 

309510

 

Старый Оскол

 

43-67-20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Холмогорская 113

 

 

 

309530

 

Воронеж

 

24-54-23

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Безымянная 6

 

 

 

309531

 

Тула

 

43-54-33

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Космонавтов 3

 

 

 

309510

 

Рязань

 

44-55-89

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

129

 

 

 

 

 

 

 

 

 

 

 

 

 

Модифицировать структуру таблиц можно следующим образом:

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

еепод тем же именем .

Врежиме SQL можно, например, с помощью следующего запроса изменить структуру таблицы Характеристики моделей:

ALTER TABLE [Характеристики моделей] DROP COLUMN [Другое оснащение];

В результате выполнения этого запроса в таблице

Характеристики моделей удалится атрибут Другое оснащение, и

структура ее будет такой:

Атрибут

Тип атрибута

Формат

 

 

атрибута

Код модели

числовой

длинное целое

Мощность

текстовый

10

Цвет

текстовый

20

Количество дверей

числовой

байт

Коробка передач

текстовый

15

Обивка

текстовый

20

Заводская цена

денежный

 

Транспортные издержки

денежный

 

Предпродажная подготовка

денежный

 

Специальная модель

логический

Да/Нет

5) Внесение данных в таблицы.

Ввод данных в таблицы можно осуществить в режиме

Таблицы.

В окне базы данных выберем объект Таблицы, установим курсор на нужную таблицу и нажмём кнопку Открыть. В режиме Таблицы введем записи в таблицы и закроем их. Таким образом, мы заполним наши таблицы.

1. Характеристики моделей.

128

#include stdio.h

#include <math.h> #define pi 3.1415

void main()

{

float a=0, b=2*pi, x, y, h=0.2; for ( x a; x<=b; x + h)

{

y = pow ( sin(5*x), 3 );

if ( y>=0 ) printf ( “\n y(%f)=%f” , x, y );

}

}

Рис. 1.5.4. Блок-схема к примеру 1.4.4.

1.4.8. Оператор цикла while.

Синтаксис оператора цикла while имеет вид:

25

while ( выражение ) оператор;

Оператор цикла while выполняет следующие действия:

Сначала вычисляется выражение в круглых скобках. Если полученное значение не равно нулю, то выполняется оператор , представляющий собой тело цикла.

Далее снова вычисляется выражение в круглых скобках, и цикл повторяется. Цикл прекращается, когда выражение в круглых скобках станет равным нулю.

Является циклом с предусловием (решение о прохождении цикла принимается до выполнения тела цикла).

Пример 1.4.5.

Вычислить n! = 1*2*3*…..*n;

# include stdio.h

void main( )

{

int i, n, k ;

printf ( Введите n\n );

scanf ( %d , &n);

i=1; k=1;

while ( i <= n) { k *= i; i ++ ; }

printf ( “\n n!=%d” , k );

}

26

Почтовый индекс

числовой

длинное целое

Населенный пункт

текстовый

30

Телефон

текстовый

15

3) Модели

 

 

Атрибут

Тип атрибута

Формат атрибута

Код модели

числовой

длинное целое

Модель

текстовой

20

4) Договора

Атрибут

Тип атрибута

Формат атрибута

Номер договора

числовой

длинное целое

Код клиента

числовой

длинное целое

Код модели

числовой

длинное целое

Дата заказа

дата/время

краткий формат

Количество

числовой

длинное целое

Скидка

числовой

одинарное с

 

 

плавающей точкой

 

 

 

Возможно также создание таблиц путем создания запросов SQL и их выполнения.

Для этого следует выбрать объект Запросы и кнопку Создать. Затем в режиме Конструктор закрыть диалоговое окно Таблицы и установить в меню Запрос тип запроса Запрос SQL Управление. В открывшемся окне написать текст запроса. Например, таблицу Модели можно создать при помощи следующего запроса :

CREATE TABLE Модели ([Код модели] INT PRIMARY KEY, Модель CHAR(20) NOT NULL);

Затем при помощи кнопки (Запуск) запустить запрос на выполнение и сохранить запрос под каким-либо именем. В результате выполнения этого запроса будет создана таблица Модели.

4) Изменение структуры таблиц.

127

Создадим файл спроектированной БД в СУБД Microsoft Access 2003.

Для этого запустим программу MS Access 2003. Выберем в окне справа команду Создать файл, затем в окне Создание файла выберем пункт меню Новая база данных и в открывшемся диалоговом окне укажем диск, каталог и имя файла БД – toyota.mdb.

3)Создание таблиц.

Вокне базы данных выберем объект Таблицы и кнопку Создать. В режиме Конструктор создадим структуру первой таблицы и сохраним ее под именем Характеристики моделей.

Аналогично создадим вторую, третью и четвертую таблицы под именами: Клиенты, Модели, Договора.

Врезультате мы создали четыре таблицы со следующими структурами:

1) Характеристики моделей

Атрибут

Тип атрибута

Формат атрибута

Код модели

числовой

длинное целое

Мощность

текстовый

10

Цвет

текстовый

20

Количество дверей

числовой

байт

Коробка передач

текстовый

15

Обивка

текстовый

20

Другое оснащение

MEMO

примечание

Заводская цена

денежный

 

Транспортные издержки

денежный

 

Предпродажная подготовка

денежный

 

Специальная модель

логический

Да/Нет

2) Клиенты

Атрибут

Тип атрибута

Формат атрибута

Код клиента

числовой

длинное целое

Имя_ отчество

текстовый

30

Фамилия

текстовый

20

Почтовый адрес

текстовый

40

 

126

 

Рис. 1.4.5. Блок-схема к примеру 1.4.5.

Пример 1.4.6.

Даны натуральные числа: 1,2, 3, …. n. Найти сумму чисел, кратных 3.

# include stdio.h

void main( )

{

int i, n, s ;

printf ( Введите n\n ); scanf ( %d , &n);

i=1; s = 0;

while ( i <= n) { if ( i % 3 = = 0 ) s += i; i ++ ; } printf ( “\n s=%d” , s );

}

27

Рис. 1.4.6. Блок-схема к примеру 1.4.6.

1.4.9. Оператор цикла do.

Синтаксис оператора цикла do следующий:

do оператор while ( выражение );

Оператор цикла do отличается от предыдущего оператора цикла while тем, что проверка выражения в круглых скобках осуществляется после выполнения тела цикла – оператора , поэтому оператор цикла do является циклом с постусловием.

Цикл do, как и ранее, прекращается, когда выражение в круглых скобках станет равным нулю.

Очевидно, что тело цикла в операторе цикла do всегда будет выполнено хотя бы один раз.

28

2)Номер договора, Код клиента, Код модели, Дата заказа,

Скидка

Эти отношения находятся во второй и одновременно в третьей нормальной форме. Итак, мы спроектировали 4 таблицы:

1)Код модели, Мощность, Цвет, Количество дверей, Коробка передач, Обивка, Другое оснащение, Заводская цена, Транспортные издержки, Предпродажная подготовка, Специальная модель

2)Код клиента, Имя_ отчество, Фамилия, Почтовый адрес, Почтовый индекс, Населенный пункт, Телефон

3)Код модели, Модель

4)Номер договора, Код клиента, Код модели, Дата заказа,

Скидка

Определим первичные и внешние ключи и связи между таблицами:

В 1-ой таблице первичный ключ - Код модели, во 2-ой таблице - Код клиента, в 3-ей таблице - Код модели – первичный ключ, в 4-ой таблице мы имеем составной первичный ключ -

Номер договора + Код клиента + Код модели, атрибуты Код модели и Код клиента является также внешними ключами по отношению к таблицам 1, 3 и 2 соответственно.

Для обеспечения целостности БД определим связи между атрибутами таблиц:

1)

Код модели (1)

(один ко одному)

Код модели (3)

2)

Код модели (1)

(один ко многим)

Код модели (4)

3)

Код клиента (2) (один ко многим)

Код клиента (4)

4)

Код модели (3)

(один ко многим)

Код модели (4)

2) Создание файла БД.

125

Данное отношение находится в первой нормальной форме, поскольку все его атрибуты являются неделимыми, и имеет составной ключ:

(Код модели + Код клиента + Номер договора ).

Здесь мы видим, что некоторые атрибуты зависят только от части составного ключа, как например: Имя_отчество, Фамилия Почтовый адрес, Почтовый индекс, Населенный пункт, Телефон зависят только от Кода клиента, а Мощность, Цвет, Количество дверей, Коробка передач, Обивка, Другое оснащение, Заводская цена, Транспортные издержки, Предпродажная подготовка, Специальная модель зависят только от Кода модели.

Устраним частичную зависимость и переведем это отношение во вторую нормальную форму путем декомпозиции основного отношения на 3 отношения.

Получим следующие отношения:

1)Код модели, Мощность, Цвет, Количество дверей, Коробка передач, Обивка, Другое оснащение, Заводская цена, Транспортные издержки, Предпродажная подготовка, Специальная модель

2)Код клиента, Имя_ отчество, Фамилия, Почтовый адрес, Почтовый индекс, Населенный пункт, Телефон

3)Номер договора, Код клиента, Код модели, Модель, Дата заказа, Скидка

Отношения 1 и 2 находятся в третьей нормальной форме, поскольку они находятся во второй нормальной форме и каждый неключевой атрибут нетранзитивно зависит от первичного ключа. Отношение 3 опять находится в первой нормальной форме, так как Модель зависит только от Кода модели (то есть от части составного ключа) . Переведем это отношение во вторую нормальную форму.

Получим следующие отношения:

1) Код модели, Модель

124

Пример 1.4.7.

Повторять ввод символа до тех пор, пока не будет введен символ y или n .

# include stdio.h

void main( )

{

char u; do

{

printf ( Введите y или n : ); scanf ( %c , &u);

}

while (u ! y && u ! n );

}

Пример 1.4.8.

Вычислить s = 1+2+3+…..+n;

# include stdio.h

void main( )

{

int i, n, s ;

printf ( Введите n\n ); scanf ( %d , &n);

i=1; s=0;

do {s+= i; i ++ ; } while ( i <= n); printf ( “\n s = %d” , s );

}

29

Рис. 1.4.7. Блок-схема к примеру 1.4.8.

1.4.10. Оператор switch.

Оператор switch, как и условные операторы, используется для ветвления программы в зависимости от значения некоторого выражения.

Синтаксис этого оператора имеет вид:

switch (выражение)

{case выражение1: оператор(ы)_1; case выражение2: оператор(ы)_2;

case выражениеN: оператор(ы)_n; default: оператор(ы)_d;

}

где выражение1, выражение2,..., выражениеN – константные выражения целого типа.

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

30

N

Тематика БД

 

 

2

Деятельность печатного издательства;

 

 

3

Деятельность образовательного учреждения;

 

 

4

Деятельность спортивного клуба;

 

 

5

Деятельность туристической фирмы;

 

 

6

Деятельность компьютерной фирмы;

 

 

7

Деятельность рекламного агентства;

 

 

8

Деятельность музея;

 

 

9

Деятельность библиотеки;

 

 

10

Деятельность медицинского учреждения;

 

 

4.5.ПРИМЕР ВЫПОЛНЕНИЯ ЗАДАНИЯ 2

1)Проектирование БД.

Рассмотрим основное отношение, соответствующее теме: «Деятельность фирмы по продаже автомобилей»:

{Код модели, Модель, Мощность, Цвет, Количество дверей, Коробка передач, Обивка, Другое оснащение, Заводская цена, Транспортные издержки, Предпродажная подготовка, Специальная модель, Код клиента, Номер договора, Имя_отчество, Фамилия, Почтовый адрес, Почтовый индекс, Населенный пункт, Телефон, Дата заказа,Скидка}

123