powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Что лучше значение-код или таблица сопоставления?
18 сообщений из 18, страница 1 из 1
Что лучше значение-код или таблица сопоставления?
    #36407324
spectatorpiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня тут ко всем вопрос:

Есть примерно десять категорий значений и 50 значений,которые принадлежат нескольким из категорий, но не всем.
Что лучше использовать - столбец с значением-кодом(проверят соответствие определенной категории по битовой маске категории) или отдельную таблицу с сопоставлением пар категория и принадлежащие ей значение? И почему?


Заранее благодарен всем ответившим.

Модератор: Тема перенесена из форума "Microsoft SQL Server".
...
Рейтинг: 0 / 0
Что лучше значение-код или таблица сопоставления?
    #36407566
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spectatorpiter , думается мне что табличкой таки лучше... Поскольку всякое "вырезание" данных из некоего свойства лишает вас Первой Нормальной Формы.

автор Первая нормальная форма (1NF) — одна из возможных нормальных форм таблицы реляционной базы данных.

Определение

Таблица находится в первой нормальной форме, если каждый её атрибут атомарен. Под выражением «атрибут атомарен» понимается, что атрибут может содержать только одно значение. Таким образом, не существует 1NF таблицы, в полях которых могут храниться списки значений. Для приведения таблицы к 1NF обычно требуется разбить таблицу на несколько отдельных таблиц.

Замечание : в реляционной модели отношение всегда находится в 1 (или более высокой) нормальной форме в том смысле, что иные отношения не рассматриваются в реляционной модели. То есть само определение понятия отношение заведомо подразумевает наличие 1NF.

Взято тут ...
...
Рейтинг: 0 / 0
Что лучше значение-код или таблица сопоставления?
    #36407614
spectatorpiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,

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

Так что в принципе это подходит под 1NF, просто требует более сложной манипуляции над значением.Т.е. это упрошенная форма XML данных.
...
Рейтинг: 0 / 0
Что лучше значение-код или таблица сопоставления?
    #36407701
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spectatorpiterТак что в принципе это подходит под 1NF, просто требует более сложной манипуляции над значением.

это подходит под 1NF. ТОЧКА
а если " просто требует более сложной манипуляции над значением " - это уже не 1NF


Шайтан
...
Рейтинг: 0 / 0
Что лучше значение-код или таблица сопоставления?
    #36407711
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spectatorpiterтребует более сложной манипуляции над значением
Вот поэтому и не подходит.
Таким макаром я могу и строку типа "А__Б_Т_Х___" хранить... А потом буковки "вырезать" из нее. Только это не 1НФ.
...
Рейтинг: 0 / 0
Что лучше значение-код или таблица сопоставления?
    #36407916
spectatorpiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ШайтанspectatorpiterТак что в принципе это подходит под 1NF, просто требует более сложной манипуляции над значением.

это подходит под 1NF. ТОЧКА
а если " просто требует более сложной манипуляции над значением " - это уже не 1NF


Шайтан

krvsaspectatorpiterтребует более сложной манипуляции над значением
Вот поэтому и не подходит.
Таким макаром я могу и строку типа "А__Б_Т_Х___" хранить... А потом буковки "вырезать" из нее. Только это не 1НФ.

Сравнение по бинарной маске и обычное сравнение числа, одно и то же.
...
Рейтинг: 0 / 0
Что лучше значение-код или таблица сопоставления?
    #36408040
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spectatorpiter , ню-ню...
...
Рейтинг: 0 / 0
Что лучше значение-код или таблица сопоставления?
    #36408088
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spectatorpiter,

Делал проверку по битовой маске, чтобы заменить полтора десятка колонок с типом bit (они появлялись по мере возникновения новых э-э-э "категорий" ) на одну.
В таблице было около двух сотен строк. Все замечательно работало.

То есть, для специфической ситуации, когда надо малой кровью исправить чужие ошибки проектирования базы, решение вполне рабочее.
Но вынуждает проявлять немало изобретательности для поддержания целостности и непротиворечивости данных. Да и читабельность запросов оставляет желать...
...
Рейтинг: 0 / 0
Что лучше значение-код или таблица сопоставления?
    #36408335
spectatorpiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
baracsspectatorpiter,

Делал проверку по битовой маске, чтобы заменить полтора десятка колонок с типом bit (они появлялись по мере возникновения новых э-э-э "категорий" ) на одну.
В таблице было около двух сотен строк. Все замечательно работало.

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

а сточки зрения производительности что быстрей по битовые маски проверки или огромная таблица сопоставления значений?
...
Рейтинг: 0 / 0
Что лучше значение-код или таблица сопоставления?
    #36408768
belugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spectatorpiter,
зависит от задачи. Например, можно ли построить индекс по биту битовой маски?
...
Рейтинг: 0 / 0
Что лучше значение-код или таблица сопоставления?
    #36408793
spectatorpiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
beluginspectatorpiter,
зависит от задачи. Например, можно ли построить индекс по биту битовой маски?

Ну в принципе да, индексы в MS SQL 2005 мощная сила. Так что пожалуй все таки надо использовать таблицу сопоставления значений.
...
Рейтинг: 0 / 0
Что лучше значение-код или таблица сопоставления?
    #36409449
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spectatorpiterа сточки зрения производительности что быстрей по битовые маски проверки или огромная таблица сопоставления значений?
На SQL 2000 и 2005, при такой, к примеру, выборке
Код: plaintext
WHERE [Column] &  2  =  2 
поиск по индексу, даже если он есть, не происходит (происходит Index Scan).
То есть, как уже было сказано, "огромная" (это сколько, кстати? ), но грамотно индексированная "таблица сопоставления" вполне может оказаться предпочтительнее.
...
Рейтинг: 0 / 0
Что лучше значение-код или таблица сопоставления?
    #36410120
spectatorpiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
baracsspectatorpiterа сточки зрения производительности что быстрей по битовые маски проверки или огромная таблица сопоставления значений?
На SQL 2000 и 2005, при такой, к примеру, выборке
Код: plaintext
WHERE [Column] &  2  =  2 
поиск по индексу, даже если он есть, не происходит (происходит Index Scan).
То есть, как уже было сказано, "огромная" (это сколько, кстати? ), но грамотно индексированная "таблица сопоставления" вполне может оказаться предпочтительнее.

Я и имел ввиду что таблица сопоставлений лучше, по производительности, по сравнению с битовой маской. Просто перейдя с MySQL на MS SQL 2005, все время забываю просто классную систему индексации у MS SQL.

"огромная" это более 15 000 с ближайшим расширением за 30 000
...
Рейтинг: 0 / 0
Что лучше значение-код или таблица сопоставления?
    #36410311
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spectatorpiterЯ и имел ввиду что таблица сопоставлений лучше, по производительности, по сравнению с битовой маской. Просто перейдя с MySQL на MS SQL 2005, все время забываю просто классную систему индексации у MS SQL.Я, вобщем, тоже об этом

spectatorpiter"огромная" это более 15 000 с ближайшим расширением за 30 000 30 тыс. строк - это совсем не много.
Чтобы выявить разницу в производительности на таком объеме, надо проводить специальное исследование.
...
Рейтинг: 0 / 0
Что лучше значение-код или таблица сопоставления?
    #36412347
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как по битовой маске будешь делать запрос с условием

Код: plaintext
WHERE Column IN (<арг1,arg2,...,argN>)

где аргументы тоже желательно выбрать запросом...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
Что лучше значение-код или таблица сопоставления?
    #36412351
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spectatorpiterНу в принципе да, индексы в MS SQL 2005 мощная сила. Так что пожалуй все таки надо использовать таблицу сопоставления значений.
Алилуя!
...
Рейтинг: 0 / 0
Что лучше значение-код или таблица сопоставления?
    #36414126
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaА как по битовой маске будешь делать запрос с условием

Код: plaintext
WHERE Column IN (<арг1,arg2,...,argN>)

где аргументы тоже желательно выбрать запросом... Будучи занудой, отмечу:
это вполне реализуемо при конечном числе "аргументов" (а оно конечно и не велико по условию задачи), хотя и выглядеть будет громоздко (о чем уже было сказано ).
...
Рейтинг: 0 / 0
Что лучше значение-код или таблица сопоставления?
    #36414366
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
baracsэто вполне реализуемо
Это все из серии "Зачем просто, если можно сложно"... А я к тому, что вся эта "битовость" это таки не 1НФ. Хоть "равенство" и "сравнение помаске" обе являются операциями...
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Что лучше значение-код или таблица сопоставления?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]