Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Физический смысл ключей в SQL  [new]
shu4u
Member

Откуда:
Сообщений: 5
в чем заключается физический смысл ключей в SQL? если можно сделать поле, не помечаемое как ключ, но являющееся уникальным в данной таблице
17 мар 15, 22:45    [17396949]     Ответить | Цитировать Сообщить модератору
 Re: Физический смысл ключей в SQL  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21249
Что Вы имеете в виду, говоря 'ключ'? Поточнее и поподробнее, плиз...
17 мар 15, 22:50    [17396958]     Ответить | Цитировать Сообщить модератору
 Re: Физический смысл ключей в SQL  [new]
shu4u
Member

Откуда:
Сообщений: 5
первичный или внешний ключ, который используется для связи таблиц
17 мар 15, 22:52    [17396965]     Ответить | Цитировать Сообщить модератору
 Re: Физический смысл ключей в SQL  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
shu4u,

Ключ это таки логическое ограничение на поля составляющие этот ключ.
Физической поддержкой PK, например, является индекс.
Для FK индекса может и не быть.
Но подозреваю не про это был вопрос, а про UK.
Да UK, точнее функционал который он обеспечивает, может существовать в двух ипостасях:
1. UK, как логическое ограничение, и автоматически создаваемый под ним уникальный индекс.
2. Уникальный индекс без UK обеспечивает то, что дает 1 плюс предоставляет некоторую гибкость в плане изменения индекса в период его жизни без ущерба для уникальности.
17 мар 15, 23:14    [17397003]     Ответить | Цитировать Сообщить модератору
 Re: Физический смысл ключей в SQL  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8818
Смысл ключа полностью соответствует реляционному смыслу. Похоже, Вы не знакомы с концепцией, на которую опирается сиквел. Поищите литературу.
17 мар 15, 23:47    [17397071]     Ответить | Цитировать Сообщить модератору
 Re: Физический смысл ключей в SQL  [new]
Glory
Member

Откуда:
Сообщений: 104751
Это назвается Data Integrity
18 мар 15, 09:36    [17397745]     Ответить | Цитировать Сообщить модератору
 Re: Физический смысл ключей в SQL  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4900
shu4u
первичный или внешний ключ, который используется для связи таблиц


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

Есть кстати случаи, когда без ключей рекомендуется обходиться, например в таблицах фактах в хранилищах Кимбалл рекомендует в большинстве случаев ключа не заводить.
18 мар 15, 15:16    [17400132]     Ответить | Цитировать Сообщить модератору
 Re: Физический смысл ключей в SQL  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21249
a_voronin
продвигал идею о том, что ключи надо похерить, а целостность должна отслеживать бизнес-логика приложения
То есть отобрать эту функцию у того, кто для её выполнения не только предназначен, но и заточен, и отдать для выполнения постороннему кривому-косому инвалиду... ну очень разумное решение.
18 мар 15, 15:58    [17400518]     Ответить | Цитировать Сообщить модератору
 Re: Физический смысл ключей в SQL  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
Akina
a_voronin
продвигал идею о том, что ключи надо похерить, а целостность должна отслеживать бизнес-логика приложения
То есть отобрать эту функцию у того, кто для её выполнения не только предназначен, но и заточен, и отдать для выполнения постороннему кривому-косому инвалиду... ну очень разумное решение.

не начинайте холивар... заезженная тема...каждый архитектор волен самостоятельно принимать решение, каким образом поддерживать целостность
18 мар 15, 16:11    [17400602]     Ответить | Цитировать Сообщить модератору
 Re: Физический смысл ключей в SQL  [new]
го, кто для её
Guest
Akina
a_voronin
продвигал идею о том, что ключи надо похерить, а целостность должна отслеживать бизнес-логика приложения
То есть отобрать эту функцию у того, кто для её выполнения не только предназначен, но и заточен, и отдать для выполнения постороннему кривому-косому инвалиду... ну очень разумное решение.

там масса вопросов связанных, в основном, с производительностью, в т.ч. варианты stack overflow или deadlock заиметь.
в среднестатистическом клоповнике, естественно, ни этих вопросов, ни причин рассуждать о том, чем бы заменить не устраивающий своими (уже обнаруженными) особенностями встроенный механизм, естественно, нет.
18 мар 15, 16:13    [17400612]     Ответить | Цитировать Сообщить модератору
 Re: Физический смысл ключей в SQL  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4900
го, кто для её
Akina
пропущено...
То есть отобрать эту функцию у того, кто для её выполнения не только предназначен, но и заточен, и отдать для выполнения постороннему кривому-косому инвалиду... ну очень разумное решение.

там масса вопросов связанных, в основном, с производительностью, в т.ч. варианты stack overflow или deadlock заиметь.
в среднестатистическом клоповнике, естественно, ни этих вопросов, ни причин рассуждать о том, чем бы заменить не устраивающий своими (уже обнаруженными) особенностями встроенный механизм, естественно, нет.


Есть разные задачи: есть финансовые данные, где всё должно быть точно. А есть какая-нибудь статистика посещений или активности, где, если 5% записей похерится, то всем на это глубоко положить ибо 95% позволяют провести анализ.
18 мар 15, 16:27    [17400711]     Ответить | Цитировать Сообщить модератору
 Re: Физический смысл ключей в SQL  [new]
где всё должно
Guest
a_voronin
го, кто для её
пропущено...

там масса вопросов связанных, в основном, с производительностью, в т.ч. варианты stack overflow или deadlock заиметь.
в среднестатистическом клоповнике, естественно, ни этих вопросов, ни причин рассуждать о том, чем бы заменить не устраивающий своими (уже обнаруженными) особенностями встроенный механизм, естественно, нет.


Есть разные задачи: есть финансовые данные, где всё должно быть точно. А есть какая-нибудь статистика посещений или активности, где, если 5% записей похерится, то всем на это глубоко положить ибо 95% позволяют провести анализ.

все верно. но с вопросом по FK или вопросами, обозначенными в моем сообщении, не связано.
18 мар 15, 16:41    [17400820]     Ответить | Цитировать Сообщить модератору
 Re: Физический смысл ключей в SQL  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8818
a_voronin
целостность должна отслеживать бизнес-логика приложения


На самом деле в этом есть здравый смысл, т.к. можно получить заметный прирост производительности. Однако, такую конфигурацию надо уметь готовить и кому попало она не подойдёт.
18 мар 15, 16:50    [17400895]     Ответить | Цитировать Сообщить модератору
 Re: Физический смысл ключей в SQL  [new]
shu4u
Member

Откуда:
Сообщений: 5
этот вопрос был задан мне на собеседовании, на котором я говорил что первичный ключ нужен для идентификации кортежа, а внешний для того, чтобы связать кортеж с другим. Мне сказали что это логический смысл ключа, и спросили, почему нельзя сделать тоже самое, не помечая все ключами, тоесть, зачем именно создавать ключи, и в чем их физический смысл, я не знал что ответить, поэтому и решил спросить здесь
18 мар 15, 16:58    [17400960]     Ответить | Цитировать Сообщить модератору
 Re: Физический смысл ключей в SQL  [new]
есть таки спросуны
Guest
shu4u,

про космический смысл не спрашивали?
18 мар 15, 17:01    [17400990]     Ответить | Цитировать Сообщить модератору
 Re: Физический смысл ключей в SQL  [new]
o-o
Guest
физический смысл логического понятия?
ну и собеседователи пошли
18 мар 15, 17:03    [17401011]     Ответить | Цитировать Сообщить модератору
 Re: Физический смысл ключей в SQL  [new]
shu4u
Member

Откуда:
Сообщений: 5
ну тип зачем именно создавать ключ
18 мар 15, 17:05    [17401024]     Ответить | Цитировать Сообщить модератору
 Re: Физический смысл ключей в SQL  [new]
Поточнее и поподробнее
Guest
shu4u,

17397745
18 мар 15, 17:10    [17401066]     Ответить | Цитировать Сообщить модератору
 Re: Физический смысл ключей в SQL  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8818
Вероятно экзаменаторы пытались вытянуть понятие кластерного индекса, в меру своих заблуждений.
18 мар 15, 17:21    [17401154]     Ответить | Цитировать Сообщить модератору
 Re: Физический смысл ключей в SQL  [new]
Glory
Member

Откуда:
Сообщений: 104751
shu4u
ну тип зачем именно создавать ключ

Приблизительно для того, для чего создают отдельные таблицы, в них отдельные поля, причем разных типов и все прочее
18 мар 15, 18:45    [17401588]     Ответить | Цитировать Сообщить модератору
 Re: Физический смысл ключей в SQL  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
shu4u
этот вопрос был задан мне на собеседовании, на котором я говорил что первичный ключ нужен для идентификации кортежа, а внешний для того, чтобы связать кортеж с другим. Мне сказали что это логический смысл ключа, и спросили, почему нельзя сделать тоже самое, не помечая все ключами, то есть, зачем именно создавать ключи, и в чем их физический смысл, я не знал что ответить, поэтому и решил спросить здесь
Физический смысл первичного ключа в том, что он уникально идентифицирует запись и поддерживает эту самую уникальность. Внешний же ключ нужен для поддержания ссылочной целостности, чтобы не было ссылок ведущих в никуда, плюс оптимизатор иногда использует внешние ключи чтобы построить более оптимальный план. Конечно это все можно реализовать на уровне приложения, но тогда сервер ни за что не отвечает.

А по поводу того где и как должна быть реализована data integrity зависит целиком и полностью от задачи. как уже было замечено в OLAP системах рекомендуют отказаться от проверок на уровне БД для повышения производительности. Есть даже программно-аппаратные решения в которых вообще нет первичных и внешных ключей. Да что там, даже индексов нет. Например Netezza от IBM. И сделано это исключительно в целях производительности.
18 мар 15, 19:13    [17401731]     Ответить | Цитировать Сообщить модератору
 Re: Физический смысл ключей в SQL  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1838
shu4u,

Разница в том, что ограничения (сonstraints) призваны обеспечивать целостность данных, а индексы (index) — скорость доступа к данным. Это две абсолютно не связанные сущности. Причем если первое — часть SQL стандарта, то второе нет (ибо ни как не связанно с функциональностью языка, введение индексов — вынужденная мера). Разработчик сам решает, в каких случая применить эти механизмы и использование одного вовсе не требует использование другого.

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

Также при создании только уникального индекса (без ограничения), если выставить флаг Ignore Duplicate Key, то ошибки не будет. При наличии уникального ограничения этот параметр запрещен к изменению и всегда False.
18 мар 15, 19:55    [17401875]     Ответить | Цитировать Сообщить модератору
 Re: Физический смысл ключей в SQL  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
X-Cite
При наличии уникального ограничения этот параметр запрещен к изменению и всегда False.


declare @t table ( a int unique with ( ignore_dup_key = on ) )
18 мар 15, 20:56    [17402186]     Ответить | Цитировать Сообщить модератору
 Re: Физический смысл ключей в SQL  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
X-Cite
Также при создании только уникального индекса (без ограничения), если выставить флаг Ignore Duplicate Key, то ошибки не будет. При наличии уникального ограничения этот параметр запрещен к изменению и всегда False.
И что, флаг Ignore Duplicate Key позволит мне дубликаты вставлять что-ли?
18 мар 15, 21:51    [17402356]     Ответить | Цитировать Сообщить модератору
 Re: Физический смысл ключей в SQL  [new]
o-o
Guest
Mind
Физический смысл первичного ключа в том, что он уникально идентифицирует запись и поддерживает эту самую уникальность.

кто бы мог подумать, что придется спорить с Mind-ом.
первичный ключ -- это набор атрибутов, однозначно определяющий кортеж.
и это логическое понятие с логическим же смыслом.
а как это физически организовать, уже проблемы реализатора СУБД.
в MS SQL Server уникальность поддерживают уникальные индексы.
и это уже конкретные физические сущности с физическим же объемом, например.
у "набора атрибутов" нет вообще никаких физических характеристик,
например, как вы себе представляете "фрагментированный набор атрибутов" или "набор атрибутов с конкретным FF"?
18 мар 15, 22:07    [17402432]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить