Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Суррогатные ключи
|
|||
|---|---|---|---|
|
#18+
Типичным практическим широчайше распространенным приемом является определение суррогатных ключей для таблиц как целых чисел - значений автоматически увеличивающихся последовательностей (AUTOINCREMENT, SEQUENCE, GENERATOR...). В результате, значения суррогатов для различных таблиц совместимы и есть возможность JOIN, хотя foreign key указывают на абсолютно различные таблицы. Это ИМХО, яркий пример того, что разработчики СУБД поленились . Как я представил бы более корректное решение? Основная идея - значения суррогатов для различных таблиц должны быть несовместимы. Дополнительные идеи: 1. Поддержка в СУБД счетчиков для генерации суррогатных ключей весьма практична и полезна. 2. Хранимое в БД значение суррогатного ключа должно также содержать информацию о типе ключа, значение счетчика, контрольную сумму. Например: Код: plaintext 1. 2. 3. 4. 5. и скрывать внутреннюю структуру, причем таким, чтобы ввод допустимого значения (не полученного из БД) был весьма маловероятным. 4. В DDL добавить явные конструкции для создания суррогатных ключей. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2005, 16:38 |
|
||
|
Суррогатные ключи
|
|||
|---|---|---|---|
|
#18+
афтар3. Для пользователей СУБД строковое представление значения ключа должно быть "бессмысленным", и скрывать внутреннюю структуру, причем таким, чтобы ввод допустимого значения (не полученного из БД) был весьма маловероятным. таблички они иногда портятся и нужно вручную что-то править. в вашем случае все накроется, "а чем накроется вам всем хорошо известно" (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2005, 16:44 |
|
||
|
Суррогатные ключи
|
|||
|---|---|---|---|
|
#18+
Рыжий Кот таблички они иногда портятся и нужно вручную что-то править. в вашем случае все накроется, "а чем накроется вам всем хорошо известно" (с) блин, ну для продвинутых DBA можно и утилиту соорудить для генерации допустимых значений суррогатов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2005, 16:49 |
|
||
|
Суррогатные ключи
|
|||
|---|---|---|---|
|
#18+
Привет, иррационализатор! Ты пишешь: иррационализатор[Sorry, skipped] и> Это ИМХО, яркий пример того, что разработчики СУБД поленились. и> Как я представил бы более корректное решение? и> Основная идея - значения суррогатов для различных таблиц должны быть несовместимы. Дилема стара как мир и мало кому интересна. Естественные ключи против искуственных ключей -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2005, 16:53 |
|
||
|
Суррогатные ключи
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий Дилема стара как мир и мало кому интересна. Естественные ключи против искуственных ключей Мимопроходящий, речь не о выборе "СК vs ЕК", а об использовании для СК типов, несовместимых по значениям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2005, 17:03 |
|
||
|
Суррогатные ключи
|
|||
|---|---|---|---|
|
#18+
Привет, иррационализатор! Ты пишешь: иррационализатори> Мимопроходящий, речь не о выборе "СК vs ЕК", и> а об использовании для СК типов, несовместимых по значениям. Надумано. -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2005, 17:07 |
|
||
|
Суррогатные ключи
|
|||
|---|---|---|---|
|
#18+
> Это ИМХО, яркий пример того, что разработчики СУБД поленились . Как правило, нет необходимости иметь уникальные значения ключа в рамках базы данных. Если необходимость есть (непонятно, правда, для какой цели) - это можно сделать штатными средствами без проблем. > Как я представил бы более корректное решение? 64 байта коту под хвост - это не более корректное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2005, 17:27 |
|
||
|
Суррогатные ключи
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Как я представил бы более корректное решение? 64 байта коту под хвост - это не более корректное решение. не байта, a бита :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2005, 17:33 |
|
||
|
Суррогатные ключи
|
|||
|---|---|---|---|
|
#18+
> не байта, a бита Тем более кривые грабли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2005, 18:09 |
|
||
|
Суррогатные ключи
|
|||
|---|---|---|---|
|
#18+
иррационализаторВ результате, значения суррогатов для различных таблиц совместимы и есть возможность JOIN, хотя foreign key указывают на абсолютно различные таблицы. Есть предложение развить этот подход. На сегодня существует даже такая возмутительная возможность, как JOIN по значению, не являющемуся внешним ключом, например Код: plaintext 1. Как минимум, надо сделать эти значения несовместимыми, например с помощью описанной Вами методики. Но лучше - не значения, а типы данных, чтобы такое sql-предложение давало ошибку компиляции. Еще лучше - запретить join не по внешним ключам; тем самым заставим разработчиков отказаться от привычки не описывать некоторые внешние ключи. А еще лучше - вообще запретить join, поскольку всегда существует опасность того, что он не нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2005, 11:35 |
|
||
|
Суррогатные ключи
|
|||
|---|---|---|---|
|
#18+
2 softwarer СарказмЪ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2005, 11:43 |
|
||
|
Суррогатные ключи
|
|||
|---|---|---|---|
|
#18+
гладко было на бумаге да забыли про овраги. В реальной жизни практически нельзя встретить БД отвечающую каким-то требованиям (нормализация или защищённость или ещё что-то) на 100%. Высосаные из пальца ограничения будут только мешать. В институте для обучения - да. И шаг влево/шаг вправо ставить студентам двойки. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2005, 11:51 |
|
||
|
Суррогатные ключи
|
|||
|---|---|---|---|
|
#18+
Привет, 1024! Ты пишешь: 1024> Высосаные из пальца ограничения будут только мешать. > В институте для обучения - да. > И шаг влево/шаг вправо ставить студентам двойки. Полумеры. Голосую. Убить. (С) -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2005, 11:54 |
|
||
|
Суррогатные ключи
|
|||
|---|---|---|---|
|
#18+
Зря смеетесь. Существуют системы, в которых высказанные идеи частично реализованы. Несовместимость типов и запрет джойнов между разными типами - это идея доменной организации типов, которая была высказана отцами реляционных баз данных. В некоторых бизнес-приложениях (Аксапта, например) доменная система есть: объявляется тип данных, затем делаются поля этого типа. Затем между таблицами протягиваются связи. А приджойнить таблицу, не связанную с данной нельзя посредством встроенного диалекта SQL. так же, как частично нельзя при фильтрации использовать в условиях не те типы данных... По собственному опыту: такая организация действительно устраняет многие глупые ошибки. Но когда требуется навернуть (а это иногда требуется), начинаются слезы и выписывания циклов ручками... Для ключей официальной политикой системы является использование строк, которые генерируются или вводятся снаружи. Ключами могут быть и числа, но строки обычно имеют префикс и суффикс, являясь кодом, понятным не только машине, но и (частично) человеку. При правильной настройке механизмов генерации последовательностей ключи разных таблиц не будут совместимы логически. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2005, 01:55 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33264657&tid=1545651]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 275ms |
| total: | 406ms |

| 0 / 0 |
