Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
float для идентификаторов
|
|||
|---|---|---|---|
|
#18+
Разбираюсь с поставляемой нам сторонней БД, откуда потом придется данные качать в наши системы БД, судя по всему, что-то типа code first -- ни одного ни ключа, ни триггера, ни ХП - все делается через ПО; на БД ничего кроме таблиц Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. запрос из all_columns выдает полторы сотни полей, у которых тип float и названия типа CATALOG_ID, CONTRACT_ID, ITEM_ID и т.д. Меня это смущает но т.к. в MSSQL у меня опыт небольшой, спрошу - насколько это допустимо? Стоит ли лезть в бутылку и требовать bigint, или это некритично? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2018, 14:10 |
|
||
|
float для идентификаторов
|
|||
|---|---|---|---|
|
#18+
andreymx, сравнивать два числа float оператором = некорректно, а именно это и предполагают понятия PRIMARY KEY и FOREIGN KEY. Я думаю, что от float в ключах надо уходить. Говнокод-с! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2018, 14:23 |
|
||
|
float для идентификаторов
|
|||
|---|---|---|---|
|
#18+
andreymx, очевидно же, что один и тот же запрос на абсолютно тех же данных может вернуть разный результат, я бы порекомендовал разорвать всякие отношения с поставщиком такого г ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2018, 14:24 |
|
||
|
float для идентификаторов
|
|||
|---|---|---|---|
|
#18+
задам вопрос поставщику ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2018, 14:25 |
|
||
|
float для идентификаторов
|
|||
|---|---|---|---|
|
#18+
andreymx, float - приближённый формат хранения числа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2018, 14:26 |
|
||
|
float для идентификаторов
|
|||
|---|---|---|---|
|
#18+
Согласен с предыдущими ораторами, если поставщик столь небрежно относится к решениям, то лучше разорвать с ним всякие отношения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2018, 14:28 |
|
||
|
float для идентификаторов
|
|||
|---|---|---|---|
|
#18+
Владислав Колосовandreymx, float - приближённый формат хранения числа.Смотря как понимать приближённость. Хранит-то он абсолютно точно. Просто не все числа изначально могут храниться в этом формате. Компьютер переданное значение вынужден слегка подправлять при сохранении в регистре процессора. Поэтому он сохраняет не то, что ему передали, а мы пытаемся сравнивать именно с этим и - неудачно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2018, 14:35 |
|
||
|
float для идентификаторов
|
|||
|---|---|---|---|
|
#18+
iapandreymx, сравнивать два числа float оператором = некорректно, а именно это и предполагают понятия PRIMARY KEY и FOREIGN KEY. Я думаю, что от float в ключах надо уходить. Говнокод-с! Да ладно те. 4*8 бит float ничем не хуже 64 бит bigint. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2018, 15:08 |
|
||
|
float для идентификаторов
|
|||
|---|---|---|---|
|
#18+
iapВладислав Колосовandreymx, float - приближённый формат хранения числа.Смотря как понимать приближённость. Хранит-то он абсолютно точно. Просто не все числа изначально могут храниться в этом формате. Компьютер переданное значение вынужден слегка подправлять при сохранении в регистре процессора. Поэтому он сохраняет не то, что ему передали, а мы пытаемся сравнивать именно с этим и - неудачно. Когнитивный диссонанс. Сравнивать надо уметь! Код: sql 1. и шоколад обеспечен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2018, 15:11 |
|
||
|
float для идентификаторов
|
|||
|---|---|---|---|
|
#18+
Всё понимают, что это плохо, но "Баба Яга просто из принципа против" :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2018, 00:24 |
|
||
|
float для идентификаторов
|
|||
|---|---|---|---|
|
#18+
aleks2224*8 бит float ничем не хуже 64 бит bigint. aleks222Сравнивать надо уметь! Код: sql 1. и шоколад обеспечен.Конечно, float ничем не хуже 64 бит bigint, но тогда при сравнениях нужно гарантировать, что значения сравниваются бит-в-бит. А при любом cast это не гарантируется, потому что cast может отличаться от того cast, который использовался при сохранении [он сохранил]. ИМХО такое - однозначный признак полной некомпетентности поставщика, это даже не "недостаток", а однозначная непригодность. Потому что, даже если сложатся все звёзды, и сравнение будет корректным, возникает вопрос - зачем? зачем вместо bigint использовать float, и думать про все эти сравнения, какой профит такое решение принесёт клиенту? Очевидно, уровень разработчиков поставщика, а так же их уровень постановки процессов, не предполагает углубление в такие дебри; очевидно, при рисовании базы мышкой в аксесе (или при экспорте из тексового файла тулзой и т.п.) прога предложила для ИД-полей тип "число", и этот тип из проги трансформировался во float, ну так сложилось, "а чо таково?" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2018, 15:01 |
|
||
|
float для идентификаторов
|
|||
|---|---|---|---|
|
#18+
Повторюсь: IEEE754-тика угрожает человечеству ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2018, 18:37 |
|
||
|
float для идентификаторов
|
|||
|---|---|---|---|
|
#18+
Пусть переделают float на numeric и наслаждаются. numeric - тип с фиксированной точностью (с фиксированной запятой), и фактически является целочисленным. Видел проект, в котором все id были numeric(24,0) Ничего, живут. И даже вполне себе развиваются. На вопрос - к чему такой дебилизм, отвечаю: Они формируют идешники на клиенте, по своей проприетарной формуле - регион + дата + тип операции + что-то там + номер по порядку из очереди. Короче, 24 цифры и выходит. В другие типы - не влазит. Они художники, они так видят... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 08:18 |
|
||
|
float для идентификаторов
|
|||
|---|---|---|---|
|
#18+
пообщался сижу в шоке подробности письмом :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 10:39 |
|
||
|
float для идентификаторов
|
|||
|---|---|---|---|
|
#18+
uaggsterПусть переделают float на numeric и наслаждаются. numeric - тип с фиксированной точностью (с фиксированной запятой), и фактически является целочисленным. Видел проект, в котором все id были numeric(24,0) Ничего, живут. И даже вполне себе развиваются.Да, такое бывает, это в принципе наследие неких легаси, где целое стандартно определяли как NUMERIC(xx, 0) uaggsterКороче, 24 цифры и выходит. В другие типы - не влазит.Да, 24 даже в bigint не влезет... Но это тоже узнаваемо. Нередко идентификаторы вообще делали как строку, сформированную по определённым правилам, а тут число, уже легче для сервера. andreymxпообщался сижу в шоке подробности письмом :)Намекните хоть, а то заинтриговали, и вот, на самом интересном месте... :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 11:01 |
|
||
|
float для идентификаторов
|
|||
|---|---|---|---|
|
#18+
andreymxтип float и названия типа CATALOG_ID, CONTRACT_ID, ITEM_ID и т.д И что, реально в данных дробная часть сидит? Все-таки хочется верить в человечество, поэтому предполагаю, что в данных только целая часть, что тип изменен по ошибке, на каком-то этапе миграции(конвертации). Исправить обратно в int и забыть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 11:08 |
|
||
|
float для идентификаторов
|
|||
|---|---|---|---|
|
#18+
пошел учить термин "реконсиляция" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 11:11 |
|
||
|
float для идентификаторов
|
|||
|---|---|---|---|
|
#18+
andreymxпошел учить термин "реконсиляция" это они uniqueidentifier заменили каким-то синтетическим float? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 11:16 |
|
||
|
float для идентификаторов
|
|||
|---|---|---|---|
|
#18+
andreymxпошел учить термин "реконсиляция"Непонятно, как связана "реконсиляция" и использование float для идентификаторов. Не сомневайтесь в их некомпетентности, не дайте запудрить себе мозги :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 11:38 |
|
||
|
float для идентификаторов
|
|||
|---|---|---|---|
|
#18+
TaPaKandreymxпошел учить термин "реконсиляция" это они uniqueidentifier заменили каким-то синтетическим float?пока разбираемся Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. эти запросы ничего не возвращают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 11:41 |
|
||
|
float для идентификаторов
|
|||
|---|---|---|---|
|
#18+
andreymxэти запросы ничего не возвращаютНу, это они просто не делали FK, бывает. Вообще, по всем признакам (реконсиляция, отсутствие ФК, float для идентификаторов), базу делали люди, которые, возможно, высококвалифицированные разработчики, но с нулевыми знаниями в СУБД. Соответственно, даже если вы там совместно что то поковыраете, и оно заработает, к нормальной эксплуатации база будет непригодна, в связи с многочисленными заложенными бомбами кривизны. Так что вам либо нужно изучать СУДБ, и брать всё это под свой жёсткий контроль, либо стараться держаться подальше от этой системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 12:08 |
|
||
|
float для идентификаторов
|
|||
|---|---|---|---|
|
#18+
alexeyvg, не хочу никого критиковать, пока не разберусь сам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 12:27 |
|
||
|
float для идентификаторов
|
|||
|---|---|---|---|
|
#18+
andreymx, очевидно, что какую бы конструкцию велосипеда ни придумали, лучшая уже существует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 13:34 |
|
||
|
float для идентификаторов
|
|||
|---|---|---|---|
|
#18+
Владислав Колосовandreymx, очевидно, что какую бы конструкцию велосипеда ни придумали, лучшая уже существует. Когнитивный диссонанс. Сначала была конструкция лисапеда похуже. Потом придумали современную конструкцию. Нет никаких оснований считать, что невозможно придумать еще лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 17:04 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39734830&tid=1688750]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
39ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 370ms |

| 0 / 0 |
