Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
В целях экономии... Как отобразить информацию...?
|
|||
|---|---|---|---|
|
#18+
Информация, которая должна храниться в БД: ID (Integer), Name (String), Check (Boolean) Выглядеть это могло так: ID Name Check 1 test1 True 2 test2 False 3 test3 False 4 test4 True Однако, в таком случае слишком часто будут повторяться значения полей столбца “Check”. В целях экономии, думаю, будет более эффективно разбить эту таблицу на 2 других и исключить столбец “Check” вовсе. Получится одна таблица для записей где Check = True, другая – для записей, где Check = False. Т. е. вот так: Таблица №1 (Check = True) ID Name 1 test1 4 test4 и Таблица №2 (Check = False) ID Name 2 test2 3 test3 Вроде бы логично. Но тогда у меня, у ламера, :) появляется 2 вопроса: 1. Неужели, каждый раз, когда пользователь будет щёлкать на соответствующий CheckBox придётся перемещать запись из одной таблицы в другую? 2. Как «привязать» для отображения значение столбца “Check” к CheckBox’у?.. Спасибо за уделённое время и за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2004, 21:20 |
|
||
|
В целях экономии... Как отобразить информацию...?
|
|||
|---|---|---|---|
|
#18+
"Перемещать" запись из таблицы в таблицу не надо. Колонка Name в таблице №2 в такой архитектуре ненужна вовсе. Достаточно только одной - ID, отсутствие соответствующего ID будет говорить о том, что для него этот чек истина. Запрос в этом случае будет выглядеть так (для MSSQL) Код: plaintext 1. 2. Я бы, все-таки, обошелся бы в этом случае только одной таблицей с чековой колонкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2004, 07:23 |
|
||
|
В целях экономии... Как отобразить информацию...?
|
|||
|---|---|---|---|
|
#18+
tpgТогда по событию изменения чека придется просто либо удалять строку из второй таблицы, либо добавлять.[quot] Так это же практически тоже самое что и перемещать записи из одной таблицы в другую. :) А "напрямую" привязать к CheckBox'у не получится? ...А может есть в SQL какая-нибудь штука, позволяющая при сведении таблиц "виртуально" добавлять столбец и "заполнять" его данными, на основе чего-то?.. Было бы просто фантастиш, если бы при сведении таблиц 1 и 2, можно было бы добавить столбец Check и заполнить его значения на основе таблиц 1 и 2: строки из первой - Check = True, строки из второй - Check = False. При добавлении запись помещается в соответствующую таблицу, а при изменении CheckBox'а, при обновлении или завершении работы с таблицей запись бы перемещалась (или оставалась на месте, если значение в конце концов небыло измененно). Есть в SQL что-нибудь подобное?.. Или есть, но это будет менее эффективно?.. [quot]Я бы, все-таки, обошелся бы в этом случае только одной таблицей с чековой колонкой. Т. е. вот так... ? Таблица №1 ID Name Check 1 test1 True 2 test2 False 3 test3 False 4 test4 True Заманчиво, конечно... :) А если нужно будет ещё ввести Check2, Check3 и т. д.? Это вообще нормально, не экономить на столбцах с Boolean-значениями? А то я новенький, может велосипед изобретаю?.. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2004, 21:04 |
|
||
|
В целях экономии... Как отобразить информацию...?
|
|||
|---|---|---|---|
|
#18+
Прошу прощения, напортачил с цитированием... :) 2 tpg, Спасибо за отзыв! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2004, 21:12 |
|
||
|
В целях экономии... Как отобразить информацию...?
|
|||
|---|---|---|---|
|
#18+
MrDDTЗаманчиво, конечно... :) А если нужно будет ещё ввести Check2, Check3 и т. д.? Это вообще нормально, не экономить на столбцах с Boolean-значениями? А то я новенький, может велосипед изобретаю?.. :) Вообще-то конечно это тема для форума "Проектирование БД" По сути вопроса: предлагаю задуматься над следующими факторами : 1 будут храниться только True/False или еще и значение "не определено" (NULL) ? 2 %-ные соотношения True/False соизмеримы ? Т.е. какое соотношение True к False ? 60 к 40 или 98 к 2 ? Если ответ на п.1 утвердительный, то сколько значений "не определено" ожидается по колонке ? 3 насколько вероятно появление других колонок (этих самых Check2, Check3...) и сколько их может быть ? Для каждой из этих колонок ответить на первые 2 пункта. Как видите, я предложил Вам задуматься (для начала :) ) над 3 пунктами и не дал ни одного совета. Все дело в том, что ответы на эти вопросы сильно влияют на результат. Модератору - перенесите, пожалуйста, ветку в "Проектирование БД" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2004, 21:25 |
|
||
|
В целях экономии... Как отобразить информацию...?
|
|||
|---|---|---|---|
|
#18+
Alexey Kudinov 1 будут храниться только True/False или еще и значение "не определено" (NULL) ? Только True или False во всех колонках boolean-значений базы данных. 2 %-ные соотношения True/False соизмеримы ? Т.е. какое соотношение True к False ? 60 к 40 или 98 к 2 ? Если ответ на п.1 утвердительный, то сколько значений "не определено" ожидается по колонке ? Точно процентное соотношение не извесно. "На глазок" параметров True будет не более чем 1 True к 3 False. 3 насколько вероятно появление других колонок (этих самых Check2, Check3...) и сколько их может быть ? Для каждой из этих колонок ответить на первые 2 пункта. Будет как минимум 2 "Check"а. Появление "Check3" очень маловероятно. %-ное соотношение True-False в Check2 будет (примерно) ещё меньше чем в "Check1". Как видите, я предложил Вам задуматься (для начала :) ) над 3 пунктами и не дал ни одного совета. Все дело в том, что ответы на эти вопросы сильно влияют на результат. Да, я понимаю. Информацию, которая должна хранится в БД я уже обдумал. Просто не стал перегружать лишними (как мне показалось) сведениями учасников форума... Но, если хотите, могу описать более подробно... Даже буду рад поделиться мыслями. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 15:32 |
|
||
|
В целях экономии... Как отобразить информацию...?
|
|||
|---|---|---|---|
|
#18+
Исходя из того, что Вы написали, я бы просто создал NOT NULL колонку Check в таблице #1, т.е. так, как Вы и собирались. Еще 2 колонки добавить туда же по мере необходимости. Одно замечание - не называйте ее Check, особенно, если вероятно появление Check1,2,3. Лучше что-нибудь более осмысленное, а то через год не вспомните, что собственно обозначают Check1...CheckN Теперь о том, зачем я задал свои вопросы. "1 будут храниться только True/False или еще и значение "не определено" (NULL) ?" и "%-ные соотношения True/False соизмеримы ?" ведут вот к чему. Если есть вероятность, что какое-то из значений будет резко доминировать (например 100 True и 1 False), то имеет смысл это значение (в данном случае True) не хранить вообще, а другое (False) вынести в отдельную таблицу. Тоже самое и с NULL. Еще один фактор, к-й может влиять на вынесение каких-то значений в отдельную таблицу такой: не нужно ли будет на них потом поставить отдельный ForeignKey ? "насколько вероятно появление других колонок (этих самых Check2, Check3...) и сколько их может быть ?" если бы Вы ответили, что их ожидается еще 40-50 штук, то тут имеет смысл задуматься о битовой маске. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 16:23 |
|
||
|
В целях экономии... Как отобразить информацию...?
|
|||
|---|---|---|---|
|
#18+
Alexey Kudinov, Спасибо! А по этому вопросу что-нибудь можете подсказать?.. ...А может есть в SQL какая-нибудь штука, позволяющая при сведении таблиц "виртуально" добавлять столбец и "заполнять" его данными, на основе чего-то?.. Было бы просто фантастиш, если бы при сведении таблиц 1 и 2, можно было бы добавить столбец Check и заполнить его значения на основе таблиц 1 и 2: строки из первой - Check = True, строки из второй - Check = False. При добавлении запись помещается в соответствующую таблицу, а при изменении CheckBox'а, при обновлении или завершении работы с таблицей запись бы перемещалась (или оставалась на месте, если значение в конце концов небыло измененно). Есть в SQL что-нибудь подобное?.. Или есть, но это будет менее эффективно?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 09:21 |
|
||
|
В целях экономии... Как отобразить информацию...?
|
|||
|---|---|---|---|
|
#18+
Все можно. Но начать думаю лучше с книг по теории СУБД и SQL http://www.sql.ru/articles/articles.aspx?g=SQL&s=0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 12:07 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=32660492&tid=2168993]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 368ms |

| 0 / 0 |
