Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
WiskyЕсли так коробит от корректировки первичного ключа, CODE является PK, а ID уникальный с сортировкой совпадающей с Value ...и на ID ссылается таблица с полмиллиардом записей. Веселое такое поле для сортировки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2018, 11:05 |
|
||
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
AkinaСНИЛС. ИНН. ISBN. Номер страхового полиса. И т.д., и т.п. - примеров естественных первичных ключей дохрена. Я тут подумал - это все суррогатные ключи. Никакой смысловой нагрузки они в себя не включают. https://ru.wikipedia.org/wiki/Суррогатный_ключ Суррогатный ключ — понятие теории реляционных баз данных. Это дополнительное служебное поле, добавленное к уже имеющимся информационным полям таблицы, единственное предназначение которого — служить первичным ключом. Значение этого поля не образуется на основе каких-либо других данных из БД, а генерируется искусственно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2018, 15:15 |
|
||
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
Dima TЯ тут подумал - это все суррогатные ключи.Нет. При вводе информации в таблицу СНИЛС, ИНН, ISBN, Номер страхового полиса и иже с ими - именно вводятся, а не "генерируются искусственно" движком БД. Они существуют (и являются атрибутом соотв. сущности) вне зависимости от существования БД. Так что с точки зрения БД это - естественный ключ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2018, 15:19 |
|
||
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
AkinaDima TЯ тут подумал - это все суррогатные ключи.Нет. При вводе информации в таблицу СНИЛС, ИНН, ISBN, Номер страхового полиса и иже с ими - именно вводятся, а не "генерируются искусственно" движком БД. Они существуют (и являются атрибутом соотв. сущности) вне зависимости от существования БД. Так что с точки зрения БД это - естественный ключ. Они генерируются в момент выдачи налоговой и т.п. Только там это первичные ключи. Во всех остальных БД это внешние ключи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2018, 15:24 |
|
||
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
Dima TAkinaпропущено... Нет. При вводе информации в таблицу СНИЛС, ИНН, ISBN, Номер страхового полиса и иже с ими - именно вводятся, а не "генерируются искусственно" движком БД. Они существуют (и являются атрибутом соотв. сущности) вне зависимости от существования БД. Так что с точки зрения БД это - естественный ключ. Они генерируются в момент выдачи налоговой и т.п. Только там это первичные ключи. Во всех остальных БД это внешние ключи. Главное, что они однозначны во всех базах данных, в отличие от автоинкрементов и GUID-ов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2018, 17:10 |
|
||
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
schiDima Tпропущено... Они генерируются в момент выдачи налоговой и т.п. Только там это первичные ключи. Во всех остальных БД это внешние ключи. Главное, что они однозначны во всех базах данных, в отличие от автоинкрементов и GUID-ов. Где-то удалось два одинаковых гуида получить? А несколько ИНН у одного человека обычное явление: у Akina их два 21372901 , у моего знакомого три 21372749 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2018, 18:36 |
|
||
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
schiГлавное, что они однозначны во всех базах данных, в отличие от автоинкрементов и GUID-ов. Гуиды коненчо да.. В пределах вселенной однозначно будут дубликаты, и не зарелизишься в ближайшей галактике, зачмырят ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2018, 18:50 |
|
||
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
Dima Tschiпропущено... Главное, что они однозначны во всех базах данных, в отличие от автоинкрементов и GUID-ов. Где-то удалось два одинаковых гуида получить? А несколько ИНН у одного человека обычное явление: у Akina их два 21372901 , у моего знакомого три 21372749 Хуже, когда наоборот. Я знал, как двум людям одинаковый ИНН выдали - потом одного чуть не посадили за грехи другого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2018, 18:53 |
|
||
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
Cane Cat FisherХуже, когда наоборот. Я знал, как двум людям одинаковый ИНН выдали - потом одного чуть не посадили за грехи другого. Бывает проще: полиция ФИО и год рождения сверяет. Одного знакомого чуть не арестовали на посту ГИБДД, совпало с каким-то кадром в федеральном розыске. Повезло что это далеко не первое совпадение и гаишники философски к этому относятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2018, 18:59 |
|
||
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
schimaytonВ топике звучала верная мысль о том что в качестве ПК лучше брать суррогат На основе sequence. Все прочие способы нас приведут к аномалиям. Будут Смены паспортов, ИНН, страховок. Joe Celko на тебя нет. http://www.sql.ru/forum/507537/stil-programmirovaniya-dzho-selko-na-sql Я сразу скажу что я нечитал этого замечательного человека. Но у меня уже достаточно опыта эксплуатации БД. Есть много систем где в изначальной постановке ПК отсутствует. Кстати на очень многих тренингах MS-SQL я встречал отголоски этой парадигмы. Я имею в виду - вовлечение в модель ключей из домена. Но из практики - очень редко вы можете на уровне бизнес-постановки определить ключи. Если вы студент - то вам наверное рассказывали о ТЗ. Так вот. На самом деле ни первого ни последнего ТЗ не существует. Бизнес никогда окончательно не знает всего о модели своих данных. И поэтому решение о ключах мы принимаем с оглядкой. Со страховкой. Тоесть мы можем заявить что данное поле уникально и использовать его в поисковых операциях. Но ПК мы заводим как суррогат из sequence которыей нам предоставляет СУБД. Как полезный бонус sequence обеспечивает нам компактность индекса по ПК. Мы уверены что не тратим ничего лишнего. Есть кристально ясные для нас кейсы когда мы на основе своего понимания задачи можем сказать что данный ключ - первичен. Например - коды стран US, FR, e.t.c. коды языков, международные почтовые Zip-codes. Мы ходим в ISO стандарты, смотрим что там и как и имплементируем это как ПК. Есть ситуации когда нет единой БД. Тоесть бизнес сущность генерируется в окружении grid сетевых приложений и для пущей уникальности эта сущность получает своё значение на базе SysGUID. Опустим доказательство уникальности. Для нас важна практика. Этот метод проверен и за несколько лет эксплуатации (к примеру) биржевых распределенных систем не дал ни разу коллизий. Ну или мне о них ничего не известно. Из практических соображений он также удобен для текстового поиска этого GUID по логам. Вряд-ли вы найдете случайные дубликаты. Для других типов ключей дубликаты возможны. По поводу естественных ключей. Возьмем предметную область физлиц. Если мы отказываемся от суррогатов в пользу ИНН, паспортов и СНИЛСОВ то нам придется ответить на вопросы реального мира. Что делать с бомжами? Лицами утерявшими паспорт? Иностранцами? Баптистами-адвентистами и прочими сектантами которые по разным причинам не имеют ИНН? Что делать с лицами меняющими гражданство или восстанавливающими? Как вообще ключевать физ-лицо? Я - не знаю. Нет у меня никакого метода кроме суррогата. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2018, 23:07 |
|
||
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
Я бы сформулировал так ... Ни естественные, ни суррогатные ключи никак не решают проблему уникальной идентификации личности . Но, суррогатные ключи позволяют не привносить в проблему идентификации записи ещё и проблему идентификации личности. Суррогатный ключ (не бесплатно) позволяет оставить проблему идентификации личности там, где эта идентификация и должна быть - в слое деловой логики приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2018, 06:08 |
|
||
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
mayton...Как вообще ключевать физ-лицо?... По фотке или отпечаткам пальца (как более простой методе ))) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2018, 10:30 |
|
||
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
maytonЯ сразу скажу что я нечитал этого замечательного человека. Настоятельно рекомендую. Без иронии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2018, 10:33 |
|
||
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov.... Но, суррогатные ключи позволяют не привносить в проблему идентификации записи ещё и проблему идентификации личности. ... Я бы резюмировал так: 1) У суррогатных ключей есть беспорные приемущества 2) У суррогатных ключей нет ни одного более-менее значимого недостатка Т.е. смысл их использовать - есть, смысла отказывать от их использования - нет Если же нужна уникальность бизнес поляй, то команда create unique index есть почти во всех БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2018, 10:34 |
|
||
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsevmayton...Как вообще ключевать физ-лицо?... По фотке или отпечаткам пальца (как более простой методе ))) ) Вы - шутник. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2018, 11:58 |
|
||
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
schimaytonЯ сразу скажу что я нечитал этого замечательного человека. Настоятельно рекомендую. Без иронии. Какую именно книгу вы имели в виду? Тут - не менее 7 штук. https://www.ozon.ru/person/1954413/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2018, 12:01 |
|
||
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
maytonschiпропущено... Настоятельно рекомендую. Без иронии. Какую именно книгу вы имели в виду? Тут - не менее 7 штук. https://www.ozon.ru/person/1954413/ По моей первой ссылке же: " Я сейчас читаю книгу "Стиль программирования Джо Селко на SQL", автор сам Джо Селко." И SQL for smarties (SQL для профессионалов) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2018, 12:36 |
|
||
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsevmayton...Как вообще ключевать физ-лицо?... По фотке или отпечаткам пальца (как более простой методе ))) ) У меня в военном личном деле всю жизнь была чужая фотография. Новобранцев постригли, пофоткали - все на одно лицо. И с отпечатками пальцев все не так гладко. У некоторых людей они не выражены столь явно, чтобы применить средства распознавания. Я знаю людей, которые не могут пользоваться сканером отпечатка пальца на ноутбуке. Не узнает он их, хоть тресни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2018, 12:39 |
|
||
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
schimaytonпропущено... Какую именно книгу вы имели в виду? Тут - не менее 7 штук. https://www.ozon.ru/person/1954413/ По моей первой ссылке же: " Я сейчас читаю книгу "Стиль программирования Джо Селко на SQL", автор сам Джо Селко." И SQL for smarties (SQL для профессионалов) ОК спасибо почитаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2018, 13:13 |
|
||
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
Cane Cat FisherLeonid Kudryavtsevпропущено... По фотке или отпечаткам пальца (как более простой методе ))) ) У меня в военном личном деле всю жизнь была чужая фотография. Новобранцев постригли, пофоткали - все на одно лицо. И с отпечатками пальцев все не так гладко. У некоторых людей они не выражены столь явно, чтобы применить средства распознавания. Я знаю людей, которые не могут пользоваться сканером отпечатка пальца на ноутбуке. Не узнает он их, хоть тресни. Не все люди дактилоскопированы. И не всякая база физлиц в состоянии вообще поддерживать информационную поддержку на таком уровне. В топике мы говорим о ключах. А отпечаток - это просто дополнительный атрибут который помогает (в уголовном производстве например) установить личность более точно когда другие атрибуты - под сомнением. Но это все никак не имеет отношения к теме топика а именно к обновлению ПК. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2018, 13:17 |
|
||
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
schimaytonВ топике звучала верная мысль о том что в качестве ПК лучше брать суррогат На основе sequence. Все прочие способы нас приведут к аномалиям. Будут Смены паспортов, ИНН, страховок. Joe Celko на тебя нет. http://www.sql.ru/forum/507537/stil-programmirovaniya-dzho-selko-na-sql При всем уважении к Celko, глава "Автонумерация не может использоваться в качестве реляционного ключа" у него достаточно спорная. Книга его передо мной бумажная, поэтому цитаты печатаю вольно и кратко, саму суть. Аргументы против SEQUENCE-суррогатов у него такие: Joe Celko1. Автонумерация является нестандартной функцией, поэтому ждите проблем при миграции на другой продукт. Определенные различия между серверами, конечно же, есть, но это скорее вопросы к практике миграции, чем к теории проектирования БД. Этак можно про большинство фич сказать - в разных серверах с датой, деревьями и BLOB'ами работают разные функции, давайте не использовать дат, деревьев и BLOB'ов вообще, и давайте сидеть в рамках ANSI-SQL-89, потому что он поддерживается всеми серверами. Joe Celko2. Тип данных IDENTITY нельзя присвоить двум столбцам таблицы, и это ужасно. Если тип данных нельзя присвоить более чем одному столбцу, это вообще не тип данных. Верно, но это скорей забавный логический парадокс реляционной философии, чем реальная проблема. Одного столбца IDENTITY достаточно, и трудно представить, зачем нужен второй. Joe Celko3. Если сделать таблицу с одним столбцом, и тот - автонумерация, мы не сможем вставить что захотим, и не можем менять значения. Что же это за таблица, что в нее ни вставить, ни поменять? Опять же, этот вырожденный случай - проблема философов от SQL, но никак не реальной жизни. Joe Celko4. Если вставлять N строк в таблицу с автонумерацией одной командой INSERT...SELECT, то строки пронумеруются в непредстазуемом порядке, согласно физическому порядку на диске, а всего вариантов их нумерации может быть N! (факториал), и это ужасно. В действительности все еще хуже - при следующей вставке они могут пронумероваться в другом порядке! Как ужасно! Как объяснить, что тем же самым строкам присвоены другие номера? В реляционной модели строки, содержащие одинаковый набор атрибутов, должны обрабатываться одинаково. Выделенная цитата - точная, он так и говорит, и тут бы я поспорил. Дело в том, что в реляционной модели порядок записей не имеет значения для реляционных операций. Другими словами, две выборки, отличающиеся только порядком записей - считаются тождественно равными. Поэтому верная в целом мысль Joe Celko, именно к порядку записей - относиться не должна. Дальше он приводит примеры, как в таблицу вводят ключ ID, но не добавляют больше никаких ограничений уникальности, и сокрушается, что в нее можно добавить кучу дублей. Ну так это же не ID виноват, а отсутствие UNIQUE(ssn, vin), или что там у него. В конце он с умным видом приводит цитату из Кодда. Но по смыслу Кодд говорит именно о проблемах использования естественных ключей, так что это гол скорее в ворота самого Celko. В целом глава тянет скорее на разбор некоторых типичных ошибок проектирования, чем на методические обобщения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2018, 13:33 |
|
||
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
Cane Cat FisherJoe Celko1. Автонумерация является нестандартной функцией, поэтому ждите проблем при миграции на другой продукт. Я делал миграцию, ETL, upgrade и еще много чего другого. И было много проблем. Могу перечислить загибая пальцы. Типы данных. В особенности с тайм-зоной. Кодировки. Лимиты на размерности. Логика инкапсулированная в триггерах. Логика в хранимых процедурах PL/SQL,T-SQL, PGSQL, e.t.c. Оптимизация производительности после миграции. Тестирование бизнес-логики. Аксептенс-критерии. И прочее инфраструктурное. Но identitity/автонумерация не был проблемой. Я думаю что господин Джо Целко преувеличил проблему. Или рассматривал ее как теоретик в отрыве всего остального. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2018, 16:29 |
|
||
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
schi" Я сейчас читаю книгу "Стиль программирования Джо Селко на SQL", автор сам Джо Селко." Возможно, там и есть что-то интересное, но меня в своё время остановил тот очевидный факт, что он сугубый теоретик. Как тот филин, что стратегией занимается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2018, 19:58 |
|
||
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
В институте мне в курсе БД читали про естественные ключи, но я уже тогда был практикующим разработчиком, собственно реляционную теорию я сначала сам изобрел, а только потом узнал что все придумано до нас, ну не было тогда интернетов. Еще тогда я преподавателю прочитал лекцию что ключи должны быть абстрактные (слово суррогатный не нравится). Знакомый учился на пару лет позже меня, говорит тот же преподаватель рассказывал про абстрактные ключи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2018, 20:11 |
|
||
|
обновление ПЕРВИЧНОГО ключа
|
|||
|---|---|---|---|
|
#18+
Простите, что прерываю рассуждения по вечным вопросам, но попрошу вернуться к моей проблеме. Громадная таблица table_big(полтриллиона записей) ссылается справочник table_dict (200 стран). Формируются динамические запросы по структуре: Код: sql 1. 2. 3. 4. Для ускорения и эффективности индексов, запрос поправили и он стал Код: sql 1. 2. 3. 4. Бывают случаи появления новых стран или переименования, если сортировка меняется происходит создание новой записи в словаре table_dict.ID и корректировка в table_big поля dict_id. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2018, 14:57 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39642045&tid=1340113]: |
0ms |
get settings: |
12ms |
get forum list: |
10ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
182ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 304ms |

| 0 / 0 |
