Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Базы данных MySQL

  Все выпуски  

RusFAQ.ru: Базы данных SQL


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Базы данных SQL

Выпуск № 201
от 14.01.2007, 13:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 401, Экспертов: 42
В номере:Вопросов: 1, Ответов: 2


Вопрос № 70139: С Новым Годом! Вопрос. Есть 4 таблицы - квартал, отдел, статья и расходы отдела в данном квартале по данной статье. По-моему, в качестве первичного ключа последней таблица естественно выбрать составной ключ (квартал, отдел, статья), однако, встретил ...

Вопрос № 70.139
С Новым Годом! Вопрос. Есть 4 таблицы - квартал, отдел, статья и расходы отдела в данном квартале по данной статье. По-моему, в качестве первичного ключа последней таблица естественно выбрать составной ключ (квартал, отдел, статья), однако, встретил в литературе рекомендации избегать составных первичных ключей с мотивировкой - неудобно, без подробных объяснений.(напр. Смирнов, Задворьев Работаем с ORACLE). Переделываю проект, в старом использовался в качестве первичного ключа специальный столбец ID-записи, создаваемый последовательностью. Поделитесь, пожалуйста, опытом или отошлите к литературе.
Отправлен: 09.01.2007, 13:21
Вопрос задал: Shap (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: PaVeL_Ekt
Здравствуйте, Shap!

Вот как я вижу структуру:

Квартал (Kvartal)
поля:
ID_Kvartal integer,
Kvartal_Name VarChar (40);

Отдел (Otdel)
поля:
ID_Otdel integer,
Otdel_Name VarChar (40);

Статья (Stat)
поля:
ID_Stat integer,
Stat_Name VarChar (40);

Расходы (Rashod)
поля:
Rec_Num integer autoincrement,
ID_Otdel integer,
ID_Stat integer,
ID_Kvartal integer;

примерно такая структура родилась у меня в голове, теперь запросы:

Select K.Kvartal_Name, O.Otdel_Name, S.Stat_Name from Rashod R
inner join Kvartal K on K.ID_Kvartal=R.ID_Kvartal /* and Upper(K.Kvartal_Name) like ('ПЕРВЫЙ') */
inner join Otdel O on O.ID_Otdel=R.ID_Otdel /* and Upper(O.Otdel_Name) like ('ПРОИЗВОДСТВЕННЫЙ') */
inner join Stat S on S.ID_Stat=R.ID_Stat /* and Upper(S.Stat_Name) like ('СТАТЬЯ_1') */

( в коментариях приведен пример добавления условий, например
если раскоментировать у квартала, то получим все записи по первому кварталу)

Вопросы будут пишите ! Удачи !
---------
Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: Студент)
Ответ отправлен: 09.01.2007, 13:50

Отвечает: Евгений Крюков
Здравствуйте, Shap!
Если коротко - минус у составного ключа, на мой взгяд, всего один:
если таблица - это справочник, то не очень удобно ссылаться на такой справочник по внешним ключам .
В этом случае лучше генерить суррогатный ключ.
Могут еще возникнуть проблемы при обновлении составного первичного ключа. И еще на сверхпроизводительных системах при массированных вставках построение индекса по нескольким столбцам может замедлить систему (впрочем, это все чисто гипотетически). В остальном нет никаких ограничений. Почитатйте еще вот эту статью - http://ln.com.ua/~openxs/projects/oracle/ora046.html
---------
Большинство ответов на вопросы в рассылках находится через Яндекс за 1 мин.
Ответ отправил: Евгений Крюков (статус: Практикант)
Ответ отправлен: 09.01.2007, 14:22


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

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

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

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


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.38 от 20.12.2006
Яндекс Rambler's Top100

В избранное