Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.09.26;
Скачать: [xml.tar.bz2];

Вниз

Играй .. невеселая мысля моя..   Найти похожие ветки 

 
12 ©   (2010-06-21 15:55) [0]

Приходил заказчик, поговорили.. Поменялось требование в программе.
Id теперь, в общем случае, не int

А я уже и таблы нарисовал со связями, хранимок уже под 30шт...
И в tag`ax активно юзаю..

..если сделать таблу - бывший Id(int) - Id(str)
..или лучше переписать, пока не поздно
..а с разбегу о стену - это ведь не очень больно.. :)


 
Ega23 ©   (2010-06-21 16:00) [1]

Есть альтернатива: почитать про "суррогатные ключи"  и про "уникальный индекс".
И не нужно будет апстену и йат пить (ну при условии, что спроектировано не ректально).


 
turbouser ©   (2010-06-21 16:02) [2]


> 12 ©   (21.06.10 15:55)  


> Id теперь, в общем случае, не int

Неужели номера документов?


 
Ega23 ©   (2010-06-21 16:06) [3]


> Неужели номера документов?


Кто мешает на поле "номер документа" наложить уникальный индекс, а первичный ключ - обычный int identity использовать?


 
turbouser ©   (2010-06-21 16:06) [4]


> Ega23 ©   (21.06.10 16:06) [3]

Я это и хотел посоветовать автору изначально :) Но решил все-таки уточнить.


 
test ©   (2010-06-21 16:10) [5]

А заказчик в код полезет когда нибудь?

тогда
Ega23 ©   (21.06.10 16:06) [3]
turbouser ©   (21.06.10 16:06) [4]


 
12 ©   (2010-06-21 16:41) [6]

ясно
гляну
надо оценить
спасибо


 
Schlüssel   (2010-06-21 18:14) [7]

Есть альтернатива: почитать про "суррогатные ключи"  и про "уникальный индекс".

Суррогатные ключи - это не "альтернатива", это единственно правильное решение.
Если будет репликация - использовать GUID.
Не будет репликации - int или int64.
Все остальное - теоретические фантазии и практический маразм.


 
turbouser ©   (2010-06-21 18:23) [8]


> Schlüssel   (21.06.10 18:14) [7]

О как!


 
test ©   (2010-06-21 18:38) [9]

Schlüssel   (21.06.10 18:14) [7]
Искал вдолго в MySQL в FreeBSD где оно?


 
Ega23 ©   (2010-06-21 18:42) [10]


> Суррогатные ключи - это не "альтернатива", это единственно
> правильное решение.


Холивар "суррогатный ключ" vs. "естественный ключ"? Скушно, дэвушки. Уже неоднократный бойан.


 
Ega23 ©   (2010-06-21 18:43) [11]


> Искал вдолго в MySQL в FreeBSD где оно?


Ещё в ini-файлах поищи, такая же недобаза


 
test ©   (2010-06-21 18:44) [12]

Ega23 ©   (21.06.10 18:42) [10]
Ты остальные холивары посмотри кроме "Kerk *****" все остальное скучно.


 
Ega23 ©   (2010-06-21 18:47) [13]


> Ты остальные холивары посмотри кроме "Kerk *****" все остальное
> скучно.


Дык нет их давно уже. Ибо все закончились некоторое количество лет назад.


 
test ©   (2010-06-21 18:51) [14]

Ega23 ©   (21.06.10 18:43) [11]
Будем посмотреть, но скорее всего там речь про *.conf файлы


 
Kerk ©   (2010-06-21 19:16) [15]


> Ega23 ©   (21.06.10 18:42) [10]
> Холивар "суррогатный ключ" vs. "естественный ключ"

Ну какой холивар в теме, наглядно демонстрирующей весь вред естесственных ключей?

> test ©   (21.06.10 18:44) [12]
> кроме "Kerk *****" все остальное скучно.

Это слава, я щитаю... :))))


 
test ©   (2010-06-21 19:22) [16]

Kerk ©   (21.06.10 19:16) [15]
Не начинай, не знаю как Ega32, а я рискну получить бан.


 
Ega23 ©   (2010-06-21 19:32) [17]


> Не начинай, не знаю как Ega32, а я рискну получить бан.


Тем самым ты покажешь себя с отвратительной стороны и выставишь несдерженной школотой. :)


> Ну какой холивар в теме, наглядно демонстрирующей весь вред
> естесственных ключей?


Такое православное утверждение как [7], по-идее должно неминуемо вызвать лютый, бешеный срач.
Но вброс был слишком толст, а срачи на эту тему тут уже давно отгремели (впрочем, они до сих пор идут на sql.ru в ПТ).


 
test ©   (2010-06-21 19:38) [18]

Ega23 ©   (21.06.10 19:32) [17]
У меня тут столько ников что мне все равно ))


 
Ega23 ©   (2010-06-21 19:38) [19]


> У меня тут столько ников что мне все равно ))


Это неспортивно.


 
test ©   (2010-06-21 19:41) [20]

Ega23 ©   (21.06.10 19:38) [19]
Cheater


 
sniknik ©   (2010-06-21 22:06) [21]

> Уже неоднократный бойан.
в очередь
http://demotivators.ru/posters/99753/v-ochered-na-moderatsiyu.htm


 
test ©   (2010-06-21 22:08) [22]

sniknik ©   (21.06.10 22:06) [21]
Да надо бы помочь хотябы ссылкой в FAQ


 
Petr V. Abramov ©   (2010-06-21 23:12) [23]


> urbouser ©   (21.06.10 16:06) [4]
>
>
> > Ega23 ©   (21.06.10 16:06) [3]
>
> Я это и хотел посоветовать автору изначально :) Но решил
> все-таки уточнить.

"его пример - другим  наука"
сначала делай, как  надо, потом уточняй.
с хорошего на плохое переделать проще, чем обратно. и проще переделать, оставивь "как сказали" "морду"


 
Jeer ©   (2010-06-21 23:19) [24]

"Иногда плохое, оказывается более верным, чем хорошее - поскольку есть отсчет с другого конца" (С)


 
Petr V. Abramov ©   (2010-06-21 23:23) [25]


> Id теперь, в общем случае, не int

что id - не заказчику решать, а тебе.
но есть лазейка - если заказчик подписался ( в прямом смысле), что id, то это его проблемы


 
KilkennyCat ©   (2010-06-22 10:39) [26]


> Petr V. Abramov ©   (21.06.10 23:23) [25]
> если заказчик подписался ( в прямом смысле),
>  что id, то это его проблемы


> 12 ©   (21.06.10 16:41) [6]
> надо оценить
в деньгах.


 
12 ©   (2010-06-29 08:28) [27]

в общем, это дело было так, ID это ключ улицы

мда..
вот нас в России около 150 миллионов, если каждый будет жить на улице имени себя - 150 лимонов улиц. Казалось бы, 2 147 483 647, вполне хватит..
я так и сделал.
Зря-а-а...
вчера позвонили - прога не видит домов на одной улице (БД уже есть, мне надо лицо было приделать)
Стал смотреть - точно, 130230000180002 - idstreet...  А у меня получалось переполнение, и id = -NNN

Сделал string..


 
Sergey13 ©   (2010-06-29 10:19) [28]

> [27] 12 ©   (29.06.10 08:28)
> БД уже есть

> 130230000180002 - idstreet

На КЛАДР похоже. Если так, то там ИД - это вроде как составные коды


 
YurikGL ©   (2010-06-29 11:05) [29]


> test ©   (21.06.10 16:10) [5]
> А заказчик в код полезет когда нибудь?

Я иногда залезаю.... но я за суррогатные ключи


 
Anatoly Podgoretsky ©   (2010-06-29 11:12) [30]

> 12  (29.06.2010 08:28:27)  [27]

А причину почему так получилось выяснить не пытался, а то завтра такое же
произойдет и со String


 
12 ©   (2010-06-29 11:34) [31]


> А причину почему так получилось выяснить не пытался, а то
> завтра такое же
> произойдет и со String

Не должно
Там как..
Мне дали структуру БД из описания старой программы, на дбфках.
Там "string - ключ улицы"
Ваш покорный казалось бы
> если каждый будет жить на улице имени себя - 150 лимонов
> улиц

логично рассудил и реализовал, и в тестовых прогонах(пару городов пощелкал по улицам) все было Ок.


 
MsGuns ©   (2010-06-29 11:35) [32]

>12 ©   (29.06.10 08:28) [27]
>в общем, это дело было так, ID это ключ улицы
>мда.. вот нас в России около 150 миллионов, если каждый будет жить на улице имени себя - >150 лимонов улиц. Казалось бы, 2 147 483 647, вполне хватит..

Чегой-то не в порядке в консерватории :)
Ты в первый раз базу проектируешь, авжеж ?


 
12 ©   (2010-06-29 11:43) [33]

> Ты в первый раз базу проектируешь, авжеж ?

на этой работе и таку не маленькую - в первый :)
до этого в магазине сидел, хоть и не маленьком, но более 10 юзеров одновременно и id любой таблицы не выходит за 100 000 000 :)


 
MsGuns ©   (2010-06-29 11:46) [34]

Ты делаешь базу ФСБ России ?


 
12 ©   (2010-06-29 11:56) [35]

у тебя есть такой заказ, и ищещь реализатора ? :)


 
Anatoly Podgoretsky ©   (2010-06-29 12:04) [36]

> MsGuns  (29.06.2010 11:46:34)  [34]

Бери выше - базу Галактики


 
12 ©   (2010-06-29 12:10) [37]

Всего лишь республики Мордовия - около миллиона жителей.
БД телефоны в организациях

за

> ищещь

стыдно :)


 
Anatoly Podgoretsky ©   (2010-06-29 12:50) [38]

А ему досталасть Мордовия
(с) Золотой теленок


 
12 ©   (2010-06-29 13:47) [39]

А я вам не верю! Паниковский не обязан всему верить!


 
Внук ©   (2010-06-29 19:04) [40]

К нашему с ИШ давнему спору. Ключ должен быть суррогатным. И нефиг плодить вероятные проблемы.


 
Юрий Зотов ©   (2010-06-29 19:33) [41]

Справочники:
- областей
- районов
- населенных пунктов
- улиц

Итого ID улицы - суррогат из 4-х полей. Или, как минимум, из двух (если считать, что в одном населенном пункте не может быть 2-х одинаковых улиц). Но из 4-х надежнее.


 
Ega23 ©   (2010-06-29 19:39) [42]


> Справочники:
> - областей
> - районов
> - населенных пунктов
> - улиц


Не всё так просто.


> Внук ©   (29.06.10 19:04) [40]
>
> К нашему с ИШ давнему спору. Ключ должен быть суррогатным.


Ключ может быть суррогатным.
А может и не быть.


 
Alien1769 ©   (2010-06-29 19:48) [43]


> Юрий Зотов ©   (29.06.10 19:33) [41]

Вопрос в догонку. Улица может переименована !!!
Прописан человек на улице Ленина,
ее "перекрестили" на улицу Свободы.
Жильцы купившие квартиру на бывшей улице Ленина получают прописку на улице Свободы. И того две улицы вместо одной, кто как выходил с такой ситуации ??

Я добавил еще одно поле "Стр_Груп" и связал обе улицы..
Но может быть есть более умная идея...


 
Ega23 ©   (2010-06-29 19:53) [44]


> кто как выходил с такой ситуации ??


Ситуации такой не было, но на первый взгляд я бы заводил новую с новым ID, ей дату дуву


 
Ega23 ©   (2010-06-29 19:54) [45]

Чёрт. Предыдущий пост просьбы удалить, случайно нажал не додумав мысль. Мысль додумаю к завтрему.


 
MsGuns ©   (2010-06-29 20:01) [46]

>Ega23 ©   (29.06.10 19:39) [42]
>Не всё так просто.

В данном случае именно ВСЕ

>Ключ может быть суррогатным.
>А может и не быть.

В данном случае ОБЯЗАН


 
MsGuns ©   (2010-06-29 20:03) [47]

По поводу переименования улицы.
Напугали ежа голой ж.. На это есть простой и проверенный способ - второе название. UID при этом ессно не страдает :)


 
Alien1769 ©   (2010-06-29 20:10) [48]


> Напугали ежа голой ж..


В Киеве уже примерно 120 улиц изменили..
А я пугать не думал :)


 
Юрий Зотов ©   (2010-06-29 20:18) [49]

> Alien1769 ©   (29.06.10 19:48) [43]

> И того две улицы вместо одной, кто как выходил с такой ситуации ??

В справочнике улиц заводится еще одно ключевое поле. Это может быть, например, ссылка на запись в том же справочнике (если null, то это первоначальное название улицы, иначе - ссылка на предыдущее название). Или это может быть порядковый номер названия одной и той же улицы (у текущего названия - MAX значение, у первоначального - нуль). Можно еще завести поля "Дата начала действия" и "Дата окончания действия". Таким образом, справочник будет хранить не только текущия названия улиц, но и всю историю их изменений.


 
Юрий Зотов ©   (2010-06-29 20:25) [50]

Вообще, к ключам я подхожу с чисто логической точки зрения. По сути, ведь каждая запись в таблице хранит сведения о некоей сущности. Исходя из бизнес-правил, можно определить, какое количество каких данных позволяют идентифицировать эту сущность однозначно - вот они и есть ключевые поля. Можно (но не обязательно) добавить еще одно поле - так сказать, ID "в чистом виде".


 
Внук ©   (2010-06-29 21:11) [51]

>>Юрий Зотов ©   (29.06.10 20:18) [49]
Во-во. Версионная таблица. Мы такими часто пользуемся в силу специфики заказчика :)


 
Inovet ©   (2010-06-29 21:28) [52]

Если то кладр, кстати, по коду 1-й мкр где он не смотрел. Вообще лучше разбей этот ИД на соответствующее количество, если привязка нужна к городу, нас пункту и т.д., а как она не нужна может быть. Вот кусок из описания.

Код объектов первого – пятого уровней состоит из двух частей. Первая часть – собственно код отражает иерархию подчиненности конкретного объекта и выделяет его среди объектов данного уровня, подчиненных одному и тому же старшему объекту. Вторая часть, «признак актуальности», отражает актуальность конкретного наименования данного адресного объекта и выделяет это наименование среди остальных его наименований.

Таким образом, первая часть кода, будем называть ее просто «код», во всех записях, содержащих различные наименования одного и того же объекта, будет одинаковой и с ее помощью устанавливается связь между всеми такими записями. Сказанное относится к случаям простого переименования, когда меняется только название объекта и не меняется его код.

При сложном переименовании (слияние улиц, разбивка улиц с изменением нумерации домов, включение населенного пункта в состав города и т.п.) новые наименования объектов добавляются в БД с новыми кодами. Соответствие старых и новых наименований объектов в этих случаях устанавливается с помощью специального файла (файл Altnames.dbf

Ну и т.д.


 
В школу!   (2010-06-29 21:55) [53]

Внук ©   (29.06.10 19:04) [40]


> Ключ должен быть суррогатным


Кому он должен ?

Не оскудеет земля IDиотами


 
Юрий Зотов ©   (2010-06-29 21:59) [54]


> В школу!   (29.06.10 21:55) [53]

Вы правы. И на своем же примере ярко и убедительно это продемонстрировали.


 
В школу!   (2010-06-29 22:13) [55]

Удалено модератором
Примечание: В школу!


 
MsGuns ©   (2010-06-29 22:34) [56]

>В школу!   (29.06.10 21:55) [53]
>> Ключ должен быть суррогатным
>Кому он должен ?
>Не оскудеет земля IDиотами

Заявление несколько категоричное, но не лишенное смысла.
Суррогаты, действительно, в некоторых случаях могут казаться "лишними", но ПОМЕШАТЬ не смогут никогда. В то время как отказ от них может привести к серьезным проблемам при эксплуатации БД, да и при проектировании тоже.

Поэтому Ваша грубость неуместна.

 Если действительно интересно, то можете найти кучу материала в инете на эту "священную" у базовиков тему. Но что интересно, ни одна из сторон до сих пор так и не смогла привести ни одного 100% агрумента в пользу своей точки зрения :)

Например, я перешел на КС с парадокса, где суррогатов нет (вернее есть их подобие, но это "глюк" 8) ). Сначала мне тоже суррогаты казались изъ..м, но когда въехал в их суть (особенно при "многоэтажных" межтабличных связях или при пробемах каскадных изменений ключей), оценил их и с тех пор использую суррогаты всегда и везде.


 
В школу!   (2010-06-29 23:00) [57]


> В то время как отказ от них может привести к серьезным проблемам
> при эксплуатации БД, да и при проектировании тоже.


а что по этому поводу говорит Кодд ?
http://ru.wikipedia.org/wiki/12_%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB_%D0%9A%D0%BE%D0%B4%D0%B4%D0%B0


 
Ega23 ©   (2010-06-29 23:03) [58]


> оценил их и с тех пор использую суррогаты всегда и везде.


Ну скажем так. Процентах в 80 случаев я тоже их использую. Но остальные 20 - нет.


 
MsGuns ©   (2010-06-30 00:33) [59]

И где же Кодд плюется на суррогаты ?
Это во-первых
А во-вторых, правила и существуют на то, чтобы иногда их нарушать. Для пользы дела, конечно :)



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2010.09.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.61 MB
Время: 0.005 c
2-1277501484
Германн
2010-06-26 01:31
2010.09.26
У TStringGrid отсутствует ScrollBar


15-1277647767
tesseract
2010-06-27 18:09
2010.09.26
Жаренное солнце. У меня помер внешний термометр.


15-1277748407
@!!ex
2010-06-28 22:06
2010.09.26
Проблема с заданием полей таблицы в Lua


2-1277819139
4e6ypek
2010-06-29 17:45
2010.09.26
Добавление скрытого значения в элемент listbox


13-1126283724
Sir John
2005-09-09 20:35
2010.09.26
WebService.NET и win32 приложение





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский