Re[5]: Нормализация и вопросы на интервью
От: ttoorrmmoozz  
Дата: 02.03.05 16:13
Оценка:
Сегодня в одной уважаемой мной конторе я имел счастье собеседоваться.
И там был поставлен следующий вопрос :
вот имеются 2 копии одной и той же базы —
одна нормализованная , другая нет .
И далее сразу вопрос : какие селекты будут выполяться быстрее на
ненормализованной копии ?
Re[8]: Нормализация и вопросы на интервью
От: Igor Trofimov  
Дата: 02.03.05 18:47
Оценка:
S>А вообще, имхо, термин "вторичный ключ" употребляется редко, поскольку не очен точен. Вторичный ключ можно перевести как secondary key, auxiliary key, в то время как единственно правильный перевод — foreign key. Но это мое личное мнение.

Ты уверен, что это "единственно правильный перевод"?

Мне вот например, кажется, что secondary key называется так в противовес к primary key (логично, правда?)
То есть это ключ таблицы, который не является первичным.

Но это никак не foreign key
Re[4]: Нормализация и вопросы на интервью
От: Igor Trofimov  
Дата: 02.03.05 18:49
Оценка:
AZ>Программер который хорошо знает SQL но не понимает основ теории БД для меня является БД кодером. Очень сомневаюсь что сможет грамотно спроектировать серьезную БД.

На самом деле я с трудом себе представляю программера, который хорошо знает SQL, но не понимает основ РСУБД.
Re[9]: Нормализация и вопросы на интервью
От: slskor  
Дата: 03.03.05 05:20
Оценка:
Здравствуйте, Igor Trofimov, Вы писали:

S>>А вообще, имхо, термин "вторичный ключ" употребляется редко, поскольку не очен точен. Вторичный ключ можно перевести как secondary key, auxiliary key, в то время как единственно правильный перевод — foreign key. Но это мое личное мнение.


iT>Ты уверен, что это "единственно правильный перевод"?


iT>Мне вот например, кажется, что secondary key называется так в противовес к primary key (логично, правда?)

iT>То есть это ключ таблицы, который не является первичным.

iT>Но это никак не foreign key


Это очень легко проверить. Откройте MSDN и поищите понятие secondary key. Его нет. А вот понятие foreign key constraint есть. То же самое — с хелпами по MS SQL Server. То же самое — с хелпами PowerDesigner. Я использовал англоязычную документацию по PostgreSQL, Oracle, Interbase и понятия secondary key не припомню. А если заглянуть в Free Online Dictionary of Computing (http://foldoc.doc.ic.ac.uk/foldoc/index.html), то становится вообще весело:

secondary key — A candidate key which is not selected as a primary key.

Идем сюда (http://www.orafaq.com/glossary/faqglosa.htm):

Alternate key — Any candidate key that is not the primary key. Also called a secondary key.

А теперь скажите, пожалуйста, имею ли я право докопаться до человека, утверждающего, что ссылочная целостность обеспечивается при помощи вторичных ключей и потребовать объяснений?

Русское понятие "вторичный ключ" сформировалось еще в советские времена. Я сам его употреблял, будучи студентом. Но это очень неточный и двусмысленный термин. Опытному программисту употреблять его не стоит.
Re[5]: Нормализация и вопросы на интервью
От: AntZ  
Дата: 03.03.05 08:25
Оценка:
Здравствуйте, Igor Trofimov, Вы писали:

AZ>>Программер который хорошо знает SQL но не понимает основ теории БД для меня является БД кодером. Очень сомневаюсь что сможет грамотно спроектировать серьезную БД.


iT>На самом деле я с трудом себе представляю программера, который хорошо знает SQL, но не понимает основ РСУБД.


Мое убеждение заключается в том, что на SQL можно научить "программировать" любого вменяемого человека. Программировать в кавычках, потому что запросы SQL к программированию имеют очень слабое отношение — это формализованный язык запросов типа "а выдай-ка мне всех женщин парашутисток за последние 20 лет у которых мужья программируют на SQL". SQL является способом сказать чего я хочу. Когда на FoxPro 2.0 появился кастрированный SQL то я очень успешно его использовал будучи полным нулем в реляционной теории.
Re[6]: Нормализация и вопросы на интервью
От: g_i  
Дата: 03.03.05 08:37
Оценка:
Здравствуйте, ttoorrmmoozz, Вы писали:

T>Сегодня в одной уважаемой мной конторе я имел счастье собеседоваться.

T>И там был поставлен следующий вопрос :
T>вот имеются 2 копии одной и той же базы -
T>одна нормализованная , другая нет .
T>И далее сразу вопрос : какие селекты будут выполяться быстрее на
T>ненормализованной копии ?

На первый взгляд, таких селектов должно быть подавляющее большинство. Нормализация, как известно, снижает скорость выполнения запросов.
... << RSDN@Home 1.1.3 stable >>
Re[4]: Нормализация и вопросы на интервью
От: g_i  
Дата: 03.03.05 08:54
Оценка:
Здравствуйте, AntZ, Вы писали:
..
AZ>А нормализация я так понимаю тоже введена SQL сервером? Как это ни странно, большинство программистов БД знающих SQL совершенно не знают что такое реляционные алгебра/исчисление и почему большинство современных баз реляционные. Половина программеров не может ответить что выдаст
AZ>SELECT * FROM table1 t1, table1 t2
AZ>из оставшейся половины две трети не могут сказать что это такое.
Мне кажется, это не так. Я ни одного такого не знаю. Ну, м/б, некоторые не знают, как это называется.
Хотя! Знаю одного преподавателя с MSных курсов по SQL Server, который не знал, что декартово произведение м/б добыто таким способом. Но, опять-же, он предлагал легальный CROSS JOIN и это нельзя поставить ему в упрек.

AZ>(наиболее общий и универсальный вид JOIN — декартово произведение. Все остальные внутренние JOIN являются проекциями декартова произведения)


AZ>Программер который хорошо знает SQL но не понимает основ теории БД для меня является БД кодером. Очень сомневаюсь что сможет грамотно спроектировать серьезную БД.


Тут надо уточнить, что такое "основы теории БД", в данном контексте. Умение нормализовать данные — спец этому можно научить за пару дней. Человек может не знать слова "кортеж" и быть вполне вменяемым программистом БД и чувствовать себя в разработке, как рыба в воде. Лично я не помню определения всех нормальных форм — потому, что я ими (определениями) НЕ ПОЛЬЗУЮСЬ в повседневной работе.
Все это, кончено, не отменяет полезности теории — с академической точки зрения, во-первых и с позиции общей терминологии — для ведения дискуссии (опять-же, скорее академического характера).

ИМХО.
... << RSDN@Home 1.1.3 stable >>
Re[6]: Нормализация и вопросы на интервью
От: slskor  
Дата: 03.03.05 09:16
Оценка: 3 (1)
Здравствуйте, ttoorrmmoozz, Вы писали:

T>Сегодня в одной уважаемой мной конторе я имел счастье собеседоваться.

T>И там был поставлен следующий вопрос :
T>вот имеются 2 копии одной и той же базы -
T>одна нормализованная , другая нет .
T>И далее сразу вопрос : какие селекты будут выполяться быстрее на
T>ненормализованной копии ?

Постановка вопроса точно такая была? Может имелось в виду не "какие селекты", а "какие SQL-запросы"?

Денормализация выполняется в случаях, когда требуется увеличить производительность запросов выборки данных (select-запросов). Но при этом вырастают затраты на выполнение вставок, изменений и удалений.

Если же имелось в виду именно "какие селекты", то, в общем случае, лично я затрудняюсь ответить. Ответ можно дать только на конкретном примере денормализации. Допустим, мы нарушаем 3НФ и заводим таблицу с полями

Номер_заказа
ИНН_покупателя
Имя_покупателя
Сумма_заказа

Тогда запрос

select Номер_Заказа, Имя_покупателя, Сумма_Заказа from Таблица

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

select distinct ИНН_покупателя, Имя_покупателя from Таблица

тормозит очень нехило. Ну и смена имени покупателя будет очень дорогой операцией. В гробу я видал такую денормализацию
Re[7]: Нормализация и вопросы на интервью
От: ttoorrmmoozz  
Дата: 03.03.05 09:49
Оценка:
S>Постановка вопроса точно такая была? Может имелось в виду не "какие селекты",

Да , вопрос был общим и звучал именно так :
какие селекты будут выполяться быстрее на ненормализованной копии ?
Т.е. я сам должен был привести конкретный вариант с разнесенной и неразнесенной таблицами и показать , что выборка в неразнесенном случае , о котором вы только что упомянули , будет работать быстрее .
Re[8]: Нормализация и вопросы на интервью
От: Gollum Россия  
Дата: 03.03.05 10:05
Оценка:
Здравствуйте, ttoorrmmoozz, Вы писали:

T>какие селекты будут выполяться быстрее на ненормализованной копии ?

T>Т.е. я сам должен был привести конкретный вариант с разнесенной и неразнесенной таблицами и показать , что выборка в неразнесенном случае , о котором вы только что упомянули , будет работать быстрее .

Я думаю что хотели, чтобы ты пример в пример дерево
I cant really tell and i dont really care
Eugene Agafonov on the .NET

Re[10]: Нормализация и вопросы на интервью
От: Igor Trofimov  
Дата: 03.03.05 11:13
Оценка:
S>А теперь скажите, пожалуйста, имею ли я право докопаться до человека, утверждающего, что ссылочная целостность обеспечивается при помощи вторичных ключей и потребовать объяснений?

ИМХО — безусловно. Но если вопрос исключительно в терминологии, да еще если и вам доводилось когда-то пользоваться этим же термином в этом же смысле — то (ИМХО, опять таки) не стоит из этого делать неутешительных выводов.
Re[6]: Нормализация и вопросы на интервью
От: Igor Trofimov  
Дата: 03.03.05 11:17
Оценка:
AZ>Когда на FoxPro 2.0 появился кастрированный SQL то я очень успешно его использовал будучи полным нулем в реляционной теории.

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

Приведенный выше пример
 SELECT * FROM TABLE12, TABLE2
обычно очень наглядно показывает разницу между "умеющим использовать" и "знающим". Хорошо также идут примитивные запросы с группировкой или внешними соединениями.
Re[11]: Нормализация и вопросы на интервью
От: slskor  
Дата: 03.03.05 11:46
Оценка:
Здравствуйте, Igor Trofimov, Вы писали:

S>>А теперь скажите, пожалуйста, имею ли я право докопаться до человека, утверждающего, что ссылочная целостность обеспечивается при помощи вторичных ключей и потребовать объяснений?


iT>ИМХО — безусловно. Но если вопрос исключительно в терминологии, да еще если и вам доводилось когда-то пользоваться этим же термином в этом же смысле — то (ИМХО, опять таки) не стоит из этого делать неутешительных выводов.


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

Как еще один пример "разночтений", который немного мешает в жизни, можно привести русский вариант термина Use-case diagram. В книгах переводы "Диаграмма прецедентов" и "Диаграмма вариантов использования" встречаются 50/50. С некоторых пор, дабы не бодаться с коллегами, предпочитаю использовать оригинальный, английский термин.
Re[7]: Нормализация и вопросы на интервью
От: slskor  
Дата: 03.03.05 11:51
Оценка:
Здравствуйте, Igor Trofimov, Вы писали:

AZ>>Когда на FoxPro 2.0 появился кастрированный SQL то я очень успешно его использовал будучи полным нулем в реляционной теории.


iT>Пользоваться может и самый тупой студент. Вопрос о том, чтобы знать.

iT>Т.е. понимать принципы работы и границы возможностей SQL и уметь их [принципы] применять для достижения нужного результата в рамках этих возможностей.

iT>Приведенный выше пример
 SELECT * FROM TABLE12, TABLE2
обычно очень наглядно показывает разницу между "умеющим использовать" и "знающим". Хорошо также идут примитивные запросы с группировкой или внешними соединениями.


Еще один простой, но достаточно пакостный вопрос на интервью — по использованию having
Re: Нормализация и вопросы на интервью
От: Petrowich Украина  
Дата: 03.03.05 17:56
Оценка:
А есть ещё приведенная 3НФ или НФ Бойса-Кодда: когда устранены зависимости ключевых атрибутов от неключевых
Petrowich
Re[8]: Нормализация и вопросы на интервью
От: Igor Trofimov  
Дата: 03.03.05 20:34
Оценка:
S>Еще один простой, но достаточно пакостный вопрос на интервью — по использованию having

Да, из той же оперы. Для человека, не знающего SQL — действительно пакостный
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.