Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД Контрольная методичка.doc
Скачиваний:
17
Добавлен:
28.05.2015
Размер:
1.05 Mб
Скачать

2.2. Свя­зы­ва­ние таб­лиц.

Свя­зы­ва­ние осу­ще­ст­в­ля­ет­ся по по­лям пер­вич­ных и внеш­них клю­чей таб­лиц. Ме­то­дом «бук­си­ров­ки» мы­шью.

Для ав­то­ма­ти­че­ской кор­рек­ти­ров­ки дан­ных ус­та­но­вить в ок­не вы­бо­ра па­ра­мет­ров свя­зи сле­дую­щие ре­жи­мы:

  • Обес­пе­че­ние це­ло­ст­но­сти дан­ных,

  • Кас­кад­ное об­нов­ле­ние свя­зан­ных по­лей

  • Кас­кад­ное уда­ле­ние свя­зан­ных за­пи­сей.

Для то­го, что­бы в таб­ли­цах за­дать со­став­ной пер­вич­ный ключ, не­об­хо­ди­мо удер­жи­вать кла­ви­шу SHIFT вы­де­ляя нуж­ные по­ля и ус­та­но­вить их клю­че­вы­ми.

2.3. За­пол­не­ние таб­лиц.

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

В ре­зуль­та­те по­лу­ча­ют­ся таб­ли­цы с вло­жен­ны­ми (под­чи­нен­ны­ми) таб­ли­ца­ми:

Таб­ли­ца Груп­па

Таб­ли­ца Сту­ден­ты

Таб­ли­ца Пред­мет

Таб­ли­ца Пре­по­да­ва­тель

Таб­ли­ца Ус­пе­вае­мость

3. Соз­да­ние за­про­сов.

3.1. За­прос на вы­бор­ку

По­лу­чить оцен­ки сту­ден­тов. Ус­ло­вие от­бо­ра : № груп­пы =321.

За­прос в SQL:

SELECT Сту­ден­ты.НГ, Сту­ден­ты.НС, Сту­ден­ты.ФИО, Ус­пе­вае­мость.КПредм, Ус­пе­вае­мость.ОЦЕН­КА

FROM Сту­ден­ты INNER JOIN (Пред­мет INNER JOIN Ус­пе­вае­мость ON Пред­мет.КПредм = Ус­пе­вае­мость.КПредм) ON (Сту­ден­ты.НС = Ус­пе­вае­мость.НС) AND (Сту­ден­ты.НГ = Ус­пе­вае­мость.НГ)

WHERE (((Сту­ден­ты.НГ)="321"));

Кон­ст­рук­тор за­про­сов:

Ре­зуль­тат за­про­са

3.2. Па­ра­мет­ри­че­ский за­прос

Па­ра­мет­ри­че­ский за­прос – не ис­поль­зу­ет ста­тич­ный кри­те­рий, по­ле на­страи­ва­ет­ся так, что са­ма про­грам­ма за­пра­ши­ва­ет ввод кри­те­рия при ка­ж­дом за­пус­ке за­про­са на вы­пол­не­ние. В ка­че­ст­ве па­ра­мет­ра долж­ны вы­сту­пать толь­ко кон­стан­ты (строч­ные, чи­сло­вые, ло­ги­че­ские, да­ты и вре­ме­ни). При не­об­хо­ди­мо­сти мож­но ус­та­нав­ли­вать не­сколь­ко па­ра­мет­ров од­но­вре­мен­но.

За­прос: По­лу­чить по фа­ми­лии пре­по­да­ва­те­ля код пред­ме­та, на­зва­ние пред­ме­та, ко­то­рый он ве­дет, об­щее ко­ли­че­ст­во ча­сов на дис­ци­п­ли­ну, ко­ли­че­ст­во ча­сов на лек­ции и на прак­ти­ку.

- в кон­ст­рук­то­ре до­ба­вить не­об­хо­ди­мые таб­ли­цы;

- вы­брать не­об­хо­ди­мые по­ля для по­лу­че­ния от­ве­та на за­прос;

- в стро­ке ус­ло­вие от­бо­ра в квад­рат­ных скоб­ках ука­зать кри­те­рий от­бо­ра, ко­то­рый бу­дет за­пра­ши­вать­ся при ка­ж­дом вы­пол­не­нии за­про­са.

За­прос в ре­жи­ме SQL:

SELECT Пре­по­да­ва­тель.ФИО, Пре­по­да­ва­тель.КПредм, Пред­мет.ЧА­СЫ, Пред­мет.ЛЕК, Пред­мет.ПР, Пред­мет.НП

FROM Пред­мет INNER JOIN Пре­по­да­ва­тель ON Пред­мет.КПредм = Пре­по­да­ва­тель.КПредм

WHERE (((Пре­по­да­ва­тель.ФИО)=[вве­ди­те фа­ми­лию пре­по­да­ва­те­ля]));

Вы­пол­не­ние за­про­са:

Ре­зуль­тат за­про­са:

3.3. За­прос с вы­чис­ляе­мы­ми по­ля­ми

Вы­чис­ляе­мое по­ле, вклю­чен­ное в за­прос, по­зво­ля­ет по­лу­чить но­вое по­ле с ре­зуль­та­та­ми вы­чис­ле­ния толь­ко в таб­ли­це за­про­са и не соз­да­ет по­лей в таб­ли­цах ба­зы дан­ных.

За­прос: най­ти за­пи­си о пред­ме­тах, в ко­то­рых об­щее чис­ло ча­сов по пред­ме­ту не сов­па­да­ет с сум­мой ча­сов лек­ций и прак­ти­ки.

  • Соз­дать за­прос на вы­бор­ку для таб­ли­цы ПРЕД­МЕТ. Пе­ре­та­­щить в бланк за­про­са по­ля НП, ПР, ЛЕК, Об­щее кол-во ча­сов. Соз­да­ние вы­чис­ляе­мо­го по­ля. Для по­лу­че­ния раз­но­сти соз­да­­дим вы­чис­ляе­мое по­ле в пус­той ячей­ке стро­ки По­ле, за­­п­исав ту­да вы­ра­же­ние: [Об­щее ко­ли­че­ст­во ча­сов]-[ПР]-[ЛЕК].

  • Для от­бо­ра за­пи­сей с не­ну­ле­вым зна­че­ни­ем раз­но­сти в вы­чис­­ля­емом по­ле в стро­ку Ус­ло­вие от­бо­ра вве­дем < > 0 (не рав­но 0).

  • По­сле вво­да вы­ра­же­ния сис­те­ма фор­ми­ру­ет имя вы­чис­ляе­мо­го по­ля по умол­ча­нию — Вы­ра­же­ние 1:. Это имя вста­вит­ся пе­ред вы­ра­же­ни­ем. Для из­ме­не­ния име­ни ус­та­но­вить кур­сор мы­ши в вы­чис­ляе­мом по­ле блан­ка за­про­са и на­жать пра­вую кноп­ку мы­ши. В кон­тек­ст­но-за­ви­си­мом ме­ню вы­брать Свой­ст­ва по­ля и в стро­ку Под­пись вве­сти но­вое имя по­ля — ЧА­СЫ не рав­ны ПР+ЛЕК. Имя по­ля мо­жет быть ис­прав­­л­ено так­же не­по­сред­ст­вен­но в блан­ке за­про­са.

По­стро­ен­ный за­прос мо­жет быть ис­поль­зо­ван для про­вер­ки пра­виль­но­сти за­пол­не­ния по­ля ЧА­СЫ в таб­ли­це ПРЕД­МЕТ.

Ре­жим Кон­ст­рук­то­ра за­про­сов:

За­прос в ре­жи­ме SQL:

SELECT Пред­мет.НП, Пред­мет.ЧА­СЫ, Пред­мет.ЛЕК, Пред­мет.ПР, Пред­мет.ЧА­СЫ- Пред­мет.ЛЕК- Пред­мет.ПР AS под­счет ча­сов

FROM Пред­мет

WHERE (Под­счет ча­сов <> 0);

Ре­зуль­тат за­про­са: