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

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


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

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

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

Определение

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

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

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

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

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

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


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

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


Шайтан

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

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

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

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

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

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

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

Ну в принципе да, индексы в MS SQL 2005 мощная сила. Так что пожалуй все таки надо использовать таблицу сопоставления значений.
...
Рейтинг: 0 / 0
14.01.2010, 12:26
    #36409449
baracs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше значение-код или таблица сопоставления?
spectatorpiterа сточки зрения производительности что быстрей по битовые маски проверки или огромная таблица сопоставления значений?
На SQL 2000 и 2005, при такой, к примеру, выборке
Код: plaintext
WHERE [Column] &  2  =  2 
поиск по индексу, даже если он есть, не происходит (происходит Index Scan).
То есть, как уже было сказано, "огромная" (это сколько, кстати? ), но грамотно индексированная "таблица сопоставления" вполне может оказаться предпочтительнее.
...
Рейтинг: 0 / 0
14.01.2010, 15:35
    #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
14.01.2010, 16:31
    #36410311
baracs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше значение-код или таблица сопоставления?
spectatorpiterЯ и имел ввиду что таблица сопоставлений лучше, по производительности, по сравнению с битовой маской. Просто перейдя с MySQL на MS SQL 2005, все время забываю просто классную систему индексации у MS SQL.Я, вобщем, тоже об этом

spectatorpiter"огромная" это более 15 000 с ближайшим расширением за 30 000 30 тыс. строк - это совсем не много.
Чтобы выявить разницу в производительности на таком объеме, надо проводить специальное исследование.
...
Рейтинг: 0 / 0
15.01.2010, 14:26
    #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
15.01.2010, 14:27
    #36412351
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше значение-код или таблица сопоставления?
spectatorpiterНу в принципе да, индексы в MS SQL 2005 мощная сила. Так что пожалуй все таки надо использовать таблицу сопоставления значений.
Алилуя!
...
Рейтинг: 0 / 0
16.01.2010, 22:26
    #36414126
baracs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше значение-код или таблица сопоставления?
krvsaА как по битовой маске будешь делать запрос с условием

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

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


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