Форум: "Прочее";
Текущий архив: 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