типы данных Fireberd 1.5.3

ЧАстые Вопросы и Ответы

Модераторы: kdv, CyberMax

Дева
Сообщения: 19
Зарегистрирован: 26 июл 2006, 16:58

типы данных Fireberd 1.5.3

Сообщение Дева » 27 июл 2006, 13:34

Здравствуйте. Расскажите, пожалуйста, о типах данных, поддерживаемых Fireberd 1.5.3

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 27 июл 2006, 13:45

А чо, симпатишные такие типы. Есть и с рюшечками и с кружавчиками, и полосатенькие и в горошек, и из ситчика такого весёленького, ну просто обхохочешься. Короче, DataDef.pdf, искать на www.ibase.ru , скачивать и читать до просветления.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 27 июл 2006, 14:58

Никаких кружавчиков не видел.
Но они, эти типы, такие удобные, такие привычные, можно сказать, родные. Пользуюсь каждый день. И вам советую.

Дева
Сообщения: 19
Зарегистрирован: 26 июл 2006, 16:58

Сообщение Дева » 27 июл 2006, 15:12

не издевайтесь, пожалуйста. Я не знаю английского, а на www.ibase.ru я нашла только размышления на тему, что лучше Char или VarChar

Что за DataDef.pdf и где взять?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 27 июл 2006, 15:29

Что за DataDef.pdf и где взять?
на сайте же по русски написано, где. кроме того, в разделе interbase есть ссылка на переведенный datadef, оттуда можно исключить упоминание boolean, и будет все почти то же самое (кроме bigint).

Дева
Сообщения: 19
Зарегистрирован: 26 июл 2006, 16:58

Сообщение Дева » 27 июл 2006, 16:36

kdv писал(а):в разделе interbase есть ссылка на переведенный datadef
прошу прощения за тупизм, но я не нашла эту ссылку

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 27 июл 2006, 16:40

Последний раз редактировалось WildSery 27 июл 2006, 16:41, всего редактировалось 1 раз.

Дева
Сообщения: 19
Зарегистрирован: 26 июл 2006, 16:58

Сообщение Дева » 27 июл 2006, 16:40

нашла. спасибо

Дева
Сообщения: 19
Зарегистрирован: 26 июл 2006, 16:58

Сообщение Дева » 27 июл 2006, 17:35

kdv писал(а):datadef, оттуда можно исключить упоминание boolean, и будет все почти то же самое (кроме bigint).
а что еще надо исключить? и что по типу boolean тогда?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 27 июл 2006, 17:50

да нечего исключать. а boolean в FB нет. и есть BIGINT (64-битное целое). В IB вместо него NUMERIC(18,0).

Дева
Сообщения: 19
Зарегистрирован: 26 июл 2006, 16:58

Сообщение Дева » 28 июл 2006, 09:24

а беззнакового целого нет?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 28 июл 2006, 09:52

нет. а что, двух миллиардов в int, или 9 ... (каких-то там ужасных ...ардов) в bigint не хватает?
Зачем вообще надо "беззнаковое целов" в СУБД? Это ж не компилятор, байтики/битики экономить.

Дева
Сообщения: 19
Зарегистрирован: 26 июл 2006, 16:58

Сообщение Дева » 28 июл 2006, 10:27

это в одной записи байтики-битики, а когда их тысячи... это уже на килобайты расчет идет... а когда их тысячи в день!
а если компы слабые? вот и таскай лишние килобайты сначала через сеть, с сервера, потом в клиентах, в которых информация ползет со скоростью убитой мухи. :-)
ИМХО
А вообще, это не основание для спора. На вкус и цвет, как говориться :-)

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 28 июл 2006, 10:49

2 Дева.
1. Размер знакового и беззнакового целого одинаков. В нашем случае, он либо два байте либо четыре либо восемь. Разница только в том, что беззнаковое целое может содержать значение "в 2 раза больше - 1", чем знаковое. У вас много данных, которые могут принимать значения больше 2^15, но меньше 2^16? Наверняка таких нет. Поэтому используют SmallInt в случае маленьких величин и Integer для нормальных чисел.
2. Как я помню, dimitr писал, что SmallInt внутри сервера преобразуется в 32-х разрядную величину, в результате чего может получиться падение производительности из-за их обработки (если не прав, поправьте).
3. Что это у вас за старые компы? У меня клиенты стоят на Pentium-166 плюс 100 Мбитных EtherNet. Никаких тормозов клиента нет, да и не может быть. Может, дело в noname'овских драйверах на ЦНС?

Дева
Сообщения: 19
Зарегистрирован: 26 июл 2006, 16:58

Сообщение Дева » 28 июл 2006, 11:32

это здесь размер одинаков. если в 16 битах кодировать беззнаковые, то размер останется прежний (2 млрд), а объем изменится. вообще это было размышление на вольную тему. Флуд, если хотите. Вообще, чему учили, так и сужу.
Decimal или Numeric знаковый?

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 28 июл 2006, 11:45

Дева писал(а):это здесь размер одинаков. если в 16 битах кодировать беззнаковые, то размер останется прежний (2 млрд), а объем изменится.
Это как так? :shock:. Девушка, вы видимо недопоняли. Повторяю еще раз: знаковое и беззнаковое число занимают одинаковый объем, потому что оба имеют один и тот же размер в байтах. Идите учите мат. часть.
Дева писал(а):вообще это было размышление на вольную тему. Флуд, если хотите. Вообще, чему учили, так и сужу.
Это была попытка объяснить вам базовое знание... А уж что флуд, что нет - позвольте решать модераторам.
Дева писал(а):Decimal или Numeric знаковый?
И то и другое - одно и тоже (я про третий диалект)... Внутри сервера оба все равно хранятся в виде SmallInt, Integer либо BigInt. Соответственно, они имеют знак.

Дева
Сообщения: 19
Зарегистрирован: 26 июл 2006, 16:58

Сообщение Дева » 28 июл 2006, 12:55

CyberMax писал(а):Это как так?
Поправьте меня, если я не права: в одном бите кодируется 2 знака - 0 или 1, в двух - 4: 00, 01, 10, 11 и т. д. то есть 2 в степени, сколько бит
Значит в 2 байтах можно закодировать до 65535, а в случае с знаковым типом - от -256 до 255.
Вообще, я имела ввиду, что если бы существовал беззнаковый тип меньшего размера, то было бы максимально знаковое число равно максимально беззнаковому, но с размером в 2 раза меньше.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 28 июл 2006, 12:58

Аднака пятница задалась :-D

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 28 июл 2006, 13:12

Эх, флудить так флудить.
Дева писал(а):это здесь размер одинаков. если в 16 битах кодировать беззнаковые, то размер останется прежний (2 млрд), а объем изменится.
16 бит беззнаковое - от 0 до 65535, а не 2 млрд., а со знаком от -32768 до +32767.
Если же брать 32 бита, а именно столько в Integer, то будут ли значения до 4 294 967 295, или только до 2 147 483 647, абсолютно плевать.
Не согласна? Приведи пример, когда 2 млрд не хватит, а 4 хватит.

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 28 июл 2006, 13:18

Merlin писал(а):Аднака пятница задалась :-D
Камрад, 100% согласен :lol:.

Попробую, аки средневековый проповедник, наставить заблудшую душу на путь истинный.
Дева писал(а):Поправьте меня, если я не права: в одном бите кодируется 2 знака - 0 или 1, в двух - 4: 00, 01, 10, 11 и т. д. то есть 2 в степени, сколько бит
Почти так. Не забудь только единичку отнять. 2-бита - от 0..3, 4 бита - 0..15.
Дева писал(а):Значит в 2 байтах можно закодировать до 65535, а в случае с знаковым типом - от -256 до 255.
Нет. В случае беззнакового типа под знак отводится 1 бит, а не байт (8 бит. Это я так, на всякий случай...). Поэтому в 2-х байтовом знаковом целом под само значение отводится 15 бит и 1 бит под знак. 2^15 - 1 = 32767.
Если старший бит (15-ый) выключен, это положительное число. Если включен - отрицательное. Чтобы получить модуль отрицательного числа, отнимаем от 65536 это 16-ти разрядное значение и получаем число со знаком минус. Легко определить, что -1 = это $FFFF, -2 = $FFFE, а -32768 = $8000.
Проверка: -5 + 10 = $FFFB + $000A = $1 0005. Разряд переполнения откидываем и получаем 5. Что и требовалось доказать.

Все понятно?

Ответить