Предмет Базы Данных. Вопрос по проекту

Интересные алгоритмы, олимпиадные задачи, эффектные и эффективные решения. freepascal, delphi, c, c++, c#, java, javascript, perl, ruby, python, php, bash, wsh и т.д. Компиляторы, интерпретаторы, линкеры, отладчики, системы контроля версий и многое другое.

Модератор: xdsl

Re: Предмет Базы Данных. Вопрос по проекту

Сообщение Vladislav_133 03 июн 2009, 14:51

Да, конечно. Они по адресу k/teachers/pirogov/ис далее в каталоге (не помню в каом, но сразу в глаза бросается). Файл тоже сразу узнаете. Всего 30 вопросов. Завтра буду до обеда, подходите, если есть ко мне вопросы.
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.

Re: Предмет Базы Данных. Вопрос по проекту

Сообщение Gemini 03 июн 2009, 17:06

Вопросы к экзаменам (ПОВТ,МО).

1. Понятие информационной системы. Структура. Типы информационных систем. Файл-серверные ИС и клиент-серверные ИС.
2. Клиент-серверные приложения. Механизмы осуществления связи между клиентом и сервером. ODBC и другие специальные протоколы.
3. Понятие СУБД. Функции, которые выполняет СУБД. Примеры СУБД и их возможности.
4. Понятие БД. Модели БД. Реляционная модель. Основные свойства РБД. 12 правил Кодда.
5. Первая нормальная форма. Нарушения первой нормальной формы.
6. Вторая нормальная форма. Примеры.
7. Третья нормальная форма и НФБК. Примеры.
8. Четвертая нормальная форма. Примеры.
9. Пятая нормальная форма. Примеры.
10. Типы данных, хранящиеся в БД (СУБД). Тип NULL.
11. Понятие первичного ключа. Выбор первичного ключа. Возможные (альтернативные ключи).
12. Индексы. Структура индексов. Виды индексов. Функции, выполняемые индексами.
13. Требования целостности БД и поддержка их СУБД.
14. Связи между таблицами. Роль первичного ключа. Тип связи «один к одному».
15. Связи между таблицами. Роль первичного ключа. Тип связи «один ко многим».
16. Языки управления БД. Классификация, примеры.
17. Язык SQL. Команды редактирования.
18. Язык SQL. Команда выборки.
19. Язык SQL. Подмножество DDL.
20. Транзакции. Требования ACID. Виды транзакций. Роль журнала транзакций. Две основные функции транзакционного механизма.
21. Параллельное выполнение транзакций. Пять видов конфликтов. Блокировки. Виды блокировок. Конфликты.
22. Жизненный цикл ИС. Этапы проектирования с краткой характеристикой. Две модели жизненного цикла.
23. Три этапа проектирования баз данных. Понятие ER-модели.
24. ER - модель. Диаграммная техника. Правила соответствия.
25. ER-модель. Связи между сущностями. Связь «один к одному» и «один ко многим».
26. ER-модель. Связи между сущностями. Связь «многие к одному» и «многие ко многим».
27. Основы безопасности СБД: защита данных от мягких и жестких сбоев. Транзакции и резервное копирование. Стратегия резервного копирования.
28. Основы безопасности СБД: защита данных от несанкционированного доступа. Понятие учетной записи и пользователя. Ограничения доступа. Группы. Интеграция системы безопасности СБД с системой безопасности сети Microsoft.
29. Программирование на стороне СБД. Программные объекты на стороне сервера: хранимые процедуры, функции, представления.
30. Программирование на стороне СБД. Программные объекты на стороне сервера: триггеры.

Вот эти вот? Изменений не будет?
Не относитесь к этой жизни слишком серьезно,господа.Все равно вам из неё живым не выбраться.
Gemini
 
Сообщения: 90
Зарегистрирован: 13 янв 2009, 12:42
Откуда: Сейчас в Ша
Полное имя: Плешков Сергей Александрович

Re: Предмет Базы Данных. Вопрос по проекту

Сообщение Vladislav_133 03 июн 2009, 17:35

Измений не будет, но будут комментарии к вопросам. Думаю, что требуется консультация, причем вживую. Соответственно завтра будет объявление.
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.

Re: Предмет Базы Данных. Вопрос по проекту

Сообщение Vladislav_133 04 июн 2009, 12:42

Консультация назначена на понедельник на 13.00. Жду.
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.

Re: Предмет Базы Данных. Вопрос по проекту

Сообщение Gemini 06 июн 2009, 12:38

Есть вопрос. Допустим я пишу хранимую процедуру, которая вытаскивает из из записи таблицы одно нужное мне поле.
Смысл в том что нужна универсальная функция, т.е. позволяющая из переданной параметром таблицы вытащить нужное.
Так вот. в пхп я это сделал быстро.А вот в mssql пока не получается. и не получается потому что я не могу в секцию from передать переменную - при компиляции|выполнении выводит мне
Msg 1087, Level 15, State 2, Procedure GetName, Line 10 Необходимо объявить табличную переменную "@tableName".


Сам текст этой процедурки:

Код: Выделить всё
create PROCEDURE [dbo].[GetName]
(
@tableName varchar(15),
@idfield varchar (10),
@idval int,
@selfield varchar (10)
)
AS
begin
   select @selfield from @tableName where @idfield = @idval
   RETURN
end


И собственно вопрос - возможно ли вообще сделать такую хранимку?
И если возможно,как передать в секцию from переменную?

Можно, конечно воспользоваться if и кажется switch но вдруг существует более изящный путь..
Не относитесь к этой жизни слишком серьезно,господа.Все равно вам из неё живым не выбраться.
Gemini
 
Сообщения: 90
Зарегистрирован: 13 янв 2009, 12:42
Откуда: Сейчас в Ша
Полное имя: Плешков Сергей Александрович

Re: Предмет Базы Данных. Вопрос по проекту

Сообщение Vladislav_133 06 июн 2009, 15:12

Разумеется такой механизм имеется. Ваш запрос я бы записал так:

exec('select '+@selfield+' from '+@tableName+' where '+ @idfield+'='+ @idval)

Обратите внимание на пробелы, они важны. И все решение.
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.

Re: Предмет Базы Данных. Вопрос по проекту

Сообщение Gemini 06 июн 2009, 16:18

И еще вопрос.
В нашем с одногруппником проекте есть функции, которые уведомляют пользователя о выполнении. т.е. например такая(php код):

Код: Выделить всё
function PutInBasket($UserId, $numFilm){ // Собственно формирование запроса добавления записи в корзину
  global $dbConn; 
  $out = "";
  $query = "Select * from basket where ToUser = $UserId and ToMovie = $numFilm";
  $result = my_query($query, $dbConn); //my_query = mssql_query
  $v = my_fa($result); // my_fa = mssql_fetch_associated
  if ($v[ToMovie] == "")
  {
     $query = "INSERT INTO basket (ToUser,ToMovie) VALUES ($UserId, $numFilm)";
     $result = my_query($query, $dbConn); 
    if ($result) {$out .= "<h3>Фильм добавлен в корзину</h3>\n";}
    else {$out .= "<h3>Запрос на добавление (query is $query) вызвал ошибку</h3>\n";} // end if
  } else {$out .= "<h3>Фильм уже в корзине</h3>\n";}
  return $out;
} // end ф-й добавления записи в корзину


В хранимых процедурах я хочу по выполнении/не выполнении запроса получить одну из 2 строк, например
выполнился - 'yes'. не выполнился - 'no'
Для этого мне нужно передавать эти значения в переменную с параметром output или можно просто написать

Код: Выделить всё
begin
INSERT INTO basket (ToUser,ToMovie) VALUES (@UserId, @numFilm)
if exists (select * from basket where UserId = @UserId and numFilm = @numFilm)
print 'yes'
else
print 'no'
end


Собственно вопрос: Передавать в переменную или использовать print ?

Просто учитывая что в php переменные динамически типизируемые в них может быть передана строка.....
Сам просто дома не могу проверить - не удается настроить связь mssql + php...
Не относитесь к этой жизни слишком серьезно,господа.Все равно вам из неё живым не выбраться.
Gemini
 
Сообщения: 90
Зарегистрирован: 13 янв 2009, 12:42
Откуда: Сейчас в Ша
Полное имя: Плешков Сергей Александрович

Re: Предмет Базы Данных. Вопрос по проекту

Сообщение Vladislav_133 06 июн 2009, 17:03

Нет, не print (он используется в интерактивном режиме) , а select.
Т.е. select 'yes', или select 'no'. В результате клиент получит таблицу, в которой всего один столбец и всего
одна строка. Вот и все. Но, разумеется, можно использовать и параметры output.
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.

Re: Предмет Базы Данных. Вопрос по проекту

Сообщение Gemini 07 июн 2009, 07:34

Вопрос по структуре ответов на эти вопросы:

2. Клиент-серверные приложения. Механизмы осуществления связи между клиентом и сервером. ODBC и другие специальные протоколы.

Надо ли тут рассказывать о модели OSI ? И вообще о чем рассказывать кроме OBDC ?

4. Понятие БД. Модели БД. Реляционная модель. Основные свойства РБД. 12 правил Кодда.

Основые свойства РБД это что? рассказать о понятии кортеж,отношение,атрибут?


16. Языки управления БД. Классификация, примеры.

О чем тут рассказать? о SQL и QBE?

17. Язык SQL. Команды редактирования.

Эм..рассказать об update и alter (database,table)?

18. Язык SQL. Команда выборки.

Рассказ о select.Структура запроса, предикаты (where, group by , distinct и т.д.), так?

19. Язык SQL. Подмножество DDL.

Рассказать о создании таблиц, баз?
Не относитесь к этой жизни слишком серьезно,господа.Все равно вам из неё живым не выбраться.
Gemini
 
Сообщения: 90
Зарегистрирован: 13 янв 2009, 12:42
Откуда: Сейчас в Ша
Полное имя: Плешков Сергей Александрович

Re: Предмет Базы Данных. Вопрос по проекту

Сообщение Vladislav_133 07 июн 2009, 14:54

k:/teachers/pirogov/ис/часть[1-7].doc

Здесь все ответы. Но я этот источник вам указал в самом начале семестра. Мы с вами об этом еще на консультации поговорим. Ну, кое-что я и на форуме еще напишу. Ну, а лекции? Большая часть ответов в лекциях.
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.

Re: Предмет Базы Данных. Вопрос по проекту

Сообщение Gemini 08 июн 2009, 08:10

Вопрос по хранимым процедурам.Опять же связанный с секцией from

вот такая процедурка

Код: Выделить всё
CREATE PROCEDURE DeleteFromLn
   (
   @lntable varchar(15),
   @keyval int,
   @keyName varchar(15)
   )
AS
BEGIN   
   exec('DELETE from '+@lntable+' WHERE '+@keyName+'='+@keyVal)   
END


Я хочу,чтобы пользователю еще выводилась строка о успешном или неуспешном выполнении данной процедуры. Я пока знаю лишь один способ проверить - сделать
Код: Выделить всё
if (exists (select ...)
и по результатам определить.Но проблема в том что туда не передать такой запрос как
Код: Выделить всё
select * from @lntable where @keyname = @keyword
- не пропускает переменную в секции from.
Вопрос
Каким образом еще можно проверить выполнение запроса в хранимой процедуре?
Не относитесь к этой жизни слишком серьезно,господа.Все равно вам из неё живым не выбраться.
Gemini
 
Сообщения: 90
Зарегистрирован: 13 янв 2009, 12:42
Откуда: Сейчас в Ша
Полное имя: Плешков Сергей Александрович

Re: Предмет Базы Данных. Вопрос по проекту

Сообщение Vladislav_133 08 июн 2009, 08:14

Например, можно использовать конструкцию try - catch. Очень удобно.
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.

Пред.

Вернуться в Алгоритмизация и программирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2