Re: Уникальная строка

From
Dmitry Sukhodoev (2:5020/400)
To
Dmitry Sukhodoev (2:5054/37.63)
Date
2005-07-28T17:59:10Z
Area
SU.DBMS.SQL
From: Dmitry Sukhodoev <raven@chics.ru>

Dmitry Sukhodoev wrote:

>>  VD>> Как в CREATE TABLE формулируется ограничение о том, чтобы каждая 
>> строка
>>  VD>> была уникальной при том, что ни одного уникального поля в строке 
>> нет?
>>  МА> Составной unique index на все поля таблицы [Устало] И объём 
>> информации на диске вырастает минимум вдвое. Я бы, конечно,
>> придумал бы unique key от безысходности. Ну хоть md5 от 
>> кодов||значений полей.
>> Ну или закрыл insert|update пермишенами и вставлял|исправлял данные 
>> хранимой
>> процедурой.
>> Вообще, конечно, забавно звучит вопрос "как в реляционной базе 
>> воспроизвести
>> одно из требований реляционной алгебры". Но такова судьба, что в этом 
>> вопросе
>> вендоры на алгебру поклали в угоду производительности.
> можно триггер завести, который будет проверять. но без индексов, которые 
> увеличат размер таблицы вдвое он будет дико тормозной. так что 
> выбирайте, либо +скорость и -память либо -скорость и +память.
ещё идейка :-) надо завести вторую таблицу из одного столбца, в которой будут 
храница все контрольные суммы всех столбцов исходной таблицы с уникальным 
индексом по этому полю. вторая таблица будет заполняца триггером, висящей на 
первой и им же проверяца на дубликаты.

-- 
raVen

--- ifmail v.2.15dev5.3
 * Origin: MTU-Intel ISP (2:5020/400)
SEEN-BY: 46/50 50/203 520 450/159 186 1024 451/30 454/9 461/43 132 640 469/999
SEEN-BY: 4614/20 4616/3 4625/8 4627/10 5000/76 5000 5001/5001 5006/1 5007/1
SEEN-BY: 5010/53 70 5011/13 5012/23 46 5015/10 5019/31 5020/52 118 175 194 400
SEEN-BY: 5020/545 604 715 758 830 892 894 1042 1057 1200 1523 1604 1665 1909
SEEN-BY: 5020/1922 2013 2020 2238 4441 8383 5021/29 5025/3 750 5026/10 14 45
SEEN-BY: 5027/16 5029/32 5030/115 217 473 556 966 1063 1339 1900 5034/13
SEEN-BY: 5035/38 5036/1 34 5040/47 5042/13 5047/43 5049/1 5051/15 5053/16
SEEN-BY: 5054/1 8 9 28 35 37 45 63 67 5055/95 5057/1 5059/37 5060/88 5061/15
SEEN-BY: 5062/1 5066/18 5069/7 5070/1222 5079/23 5080/68 1003 5081/2 5082/6
SEEN-BY: 5083/21 5084/32 5085/13 5090/106 5092/1 5095/20 5099/133 6000/12 254
SEEN-BY: 6009/1
PATH: 5020/400 4441 545 5054/1 37