Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Что будет, если вы вдруг решите поменять username пользователю на другой?в статье отмечено:
Действительно, некоторые СУБД не умеют выполнять ON UPDATE CASCADE или делают это слишком неэффективно (кстати, подумайте об этом как о причине смены СУБД).Т.е. обновлением ссылок при изменении поля внешнего ключа должен заниматься ON UPDATE CASCADE этого внешнего ключа. Другой вопрос, что его в 99% случаев игнорируют.
обновлением ссылок при изменении поля внешнего ключа должен заниматься ON UPDATE CASCADE этого внешнего ключа. Другой вопрос, что его в 99% случаев игнорируют.
Каждый торрент имеет так называемый info_hash, который его уникальным образом идентифицирует.
Хеширование применяется для сравнения данных: если у двух массивов хеш-коды разные, массивы гарантированно различаются; если одинаковые — массивы, скорее всего, одинаковы. В общем случае однозначного соответствия между исходными данными и хеш-кодом нет в силу того, что количество значений хеш-функций меньше чем вариантов входного массива; существует множество массивов, дающих одинаковые хеш-коды — так называемые коллизии. Вероятность возникновения коллизий играет немаловажную роль в оценке качества хеш-функций.®
тогда наступит случай нахождения дубликата ))
У данных нет реального ключа. Очень плохая причина. Ее появление иллюстрирует как плохой дизайн базы данных в целом, таки и то, что разработчик на самом деле не понимает данных, с которыми работает.
Не совсем понятен ваш вопрос.
Где написано, что Беркус предлагает именно это?
Разве что (серия + номер) паспорта. Поскольку эти данные однозначно идентифицируют личность в нашей стране.
------------------------------------------------------------------------- CLIENT_ACCOUNT | CURRENCY | BALANCE ------------------------------------------------------------------------- 1 | RUR | 100.0 1 | USD | 100.0 1 | EUR | 100.0
Когда у нас нет уникального значения (например IP адрес), он предлагает использовать ключ из набора реквизитов (ФИО + Паспорт+ Место рождения) и данное правило будет работать в большинстве случаев.
create table t (
id int
autoincrement using sequence t#seq
constraint t#pk primary key
...create or replace trigger t#trg_br_i before insert on t for each row begin :new.id := t_seq.nextval; end;
-------------------------------------------------------------------------
TIME_KEY | COUNTRY_KEY | REGION_KEY | USER_KEY | SEX | KARMA | HABRASILA
-------------------------------------------------------------------------
10.11.2010 RUS VRN maovrn M 111 222
10.11.2010 RUS XXX FractalizeR M 333 444
10.11.2010 RUS SPB olyapka F 555 666
10.11.2010 USA XXX umputun M 777 888
-------------------------------------------------------------------------
TIME | COUNTRY_ID | REGION_ID | USER_ID | SEX | KARMA | HABRASILA
-------------------------------------------------------------------------
10.11.2010 1 16 1234 1 111 222
10.11.2010 1 0 1432 1 333 444
10.11.2010 1 2 431 2 555 666
10.11.2010 66 0 111 1 777 888
Никто так делать не будет!
«Как только эти проблемы будут решены, данная причина отпадет.»
Вот когда отпадёт, тогда и можно говорить. А сейчас этот всё к чему? Т.е. — это костыль, но у нас рельсы кривые и костыль нужно выкинуть, а рельсы мы потом выпрямим. Ну-ну.
Да ну? Теорию нарушает. А два одинаковых номера паспорта не хотите?
«Возможность легкого изменения. Неясно. » И что не ясного? Если полноценное каскадное изменение не доступно, то другого выхода нет. Даже если доступно, то нужно смотреть на структуру базы.
Т.е. получается: это использовать можно, но в хорошо организованной базе. Т.е. предполагается, что использовать нельзя в силу того, что разработчик изначально делает плохую базу.
«Производительность. Обычно плохая причина.» Ага, а потом начинаются слёзы и сопли «почему всё так тормозит».
Автоинкрементные первичные ключи (суррогатные ключи) = зло?