SQL: использование значений NULL и значений по умолчанию

в android,

В XML: @ [package:] layout / filename

, как

android:id="@+id/android:list"

Это является стандартным способом ссылаться на представление списка при ссылке на listFragment или listActivity

, поэтому имя файла - это android: list - ссылка на ListView.

перейти к res/values/ids.xml

вы найдете <item type="id" name="list" />

ListView - это группа представлений, которая отображает список прокручиваемых элементов. Элементы списка автоматически вставляются в список с помощью адаптера, который извлекает контент из источника, такого как запрос массива или базы данных, и преобразует результат каждого элемента в представление, которое помещено в список.

40
задан STW 22 January 2010 в 16:49
поделиться

11 ответов

Нулевое значение в базах данных - это система значение, которое занимает один байт Хранение и указывает на то, что значение нет, в отличие от пространства или ноль или любое другое значение по умолчанию. То поле в базе данных, содержащей Нулевое значение означает, что содержание Эта ячейка неизвестна во время Глядя на это. Столбец, который позволяет Нулевые значения также позволяют строки быть вставлен без значения вообще в этом столбец. Есть несколько плюсов и минусы использования нулевых ценностей в отличие от Для значений по умолчанию:

плюсы

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

Нуль часто используется в схемах, где Значение необязательно. Это удобно Метод опускания записи данных для неизвестные поля без необходимости внедрить дополнительные правила, как Хранение отрицательных значений в целом поле для представления пропущенных данных.

Так как нулевое значение занимает только 1 немного места памяти, они могут быть Полезно при оптимизации базы данных. Использование этих ценностей гораздо больше эффективно, чем значения по умолчанию, например 8 бит и целое число персонажа 16bits.

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

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

Минусы

Нулевые значения легко запутаны с Пустые строки символов, которые возвращаются пустое значение для пользователя, когда выбран. В этом смысле по умолчанию Значения менее запутаны и являются безопаснее вариант, если только значение по умолчанию устанавливается в пустую строку.

Если нулевые значения разрешены в база данных, они могут вызвать дизайнер некоторое дополнительное время и работа, как они могут Составьте логику базы данных сложный, особенно когда есть Много сравнений к нулевым значениям в место.

Источник: Pro и Cons

40
ответ дан 27 November 2019 в 01:22
поделиться

Два очень хороших статьи, ориентированные на доступ к нулевым алленом Браун:

аспекты работы с нулевыми в коде VBA:

Статьи ориентированы на доступ, но могут быть ценные для тех, кто использует любую базу данных, особенно относительные новички из-за разговорного стиля письма.

0
ответ дан 27 November 2019 в 01:22
поделиться

Как уже сказал один ответчик, NULL не является ценностью.

Быть очень посудным, провозглашенным всем, кто говорит о «нулевой ценности», как будто это было значением.

Нуль не равен себе. x = y дает ложь, если оба х и y равны нулю. x = y дает true, если оба x и y - значение по умолчанию.

Есть почти бесконечные последствия для этой, казалось бы, очень простой разницы. И большинство этих последствий являются ловушки Boby, которые укусают вас очень плохо.

1
ответ дан 27 November 2019 в 01:22
поделиться

Для меня они несколько ортогональны.

Значения по умолчанию позволяют изящно развиваться схема базы данных (подумайте, что добавляют столбцы) без необходимости изменять код клиента. Кроме того, они сохраняют какую-то печатать, но полагаются на значения по умолчанию для этого IMO плохо.

Нулды только что: NULL S. Недостающее значение и огромная лавата при работе с трехценарной логикой .

4
ответ дан 27 November 2019 в 01:22
поделиться

Нулевые значения предназначены для указания того, что атрибут либо не применимый или неизвестен. Существуют религиозные войны, боролись ли они хорошая вещь или плохая вещь, но я падаю в лагере «Хорошо».

Они часто необходимы для различения известных значений от неизвестных значений во многих ситуациях, и они делают ценность ненужного значения для этих атрибутов, которые не имеют подходящего значения по умолчанию.

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

Значения по умолчанию просто то, что СУБД поставит в столбце, если вы явно не указываете его.

6
ответ дан 27 November 2019 в 01:22
поделиться

На хранилище данных вы всегда хотели бы иметь значения по умолчанию, а не нуль.

Вместо этого у вас будет такое значение «Неизвестно», «не готово», «отсутствует»

, это позволяет внутреннему присоединениям эффективно выполнять на таблицах фактов и измерений, как «все всегда имеет значение»

3
ответ дан 27 November 2019 в 01:22
поделиться

Как со многими вещами, есть хорошие и плохие точки для каждого.

Хорошие точки о значениях по умолчанию: они дают вам возможность установить столбец к известному значению, если другое значение не дано. Например, при создании булевых столбцов я обычно даю столбец значение по умолчанию (TRUE или FALSE, что угодно подходит) и сделать столбец не NULL. Таким образом, я могу быть уверен, что столбец будет иметь значение, и он будет установлен подходящий.

Плохие точки о значениях по умолчанию: не все имеет значение по умолчанию.

Хорошие вещи о нуле: не все имеет известное значение во все времена. Например, при создании новой строки, представляющей человека, у меня не может быть ценностей для всех столбцов - скажем, я знаю их имя, но не дату рождения. Не подходит ценность по умолчанию для даты рождения - люди не любят получать карты рождения 1 января (если это значение по умолчанию), если их день рождения на самом деле 22 июля.

Плохие вещи о нуле: нулевые нужды требуют тщательного обращения. В большинстве баз данных, построенных на реляционной модели, как обычно реализованные NULL, являются ядами, - наличие ноль в расчете вызывает результат расчета нулевого. Nulls, используемые в сравнениях, могут также вызывать неожиданные результаты, потому что любое сравнение с NULL возврат неизвестно (что не является ни правдой, ни ложным). Например, рассмотрим следующий сценарий PL / SQL:

declare 
  nValue NUMBER;
begin
  IF nValue > 0 THEN
    dbms_output.put_line('nValue > 0');
  ELSE
    dbms_output.put_line('nValue <= 0');
  END IF;

  IF nValue <= 0 THEN
    dbms_output.put_line('nValue <= 0');
  ELSE
    dbms_output.put_line('nValue > 0');
  END IF;
end;

Выход вышеизложенного является:

nValue <= 0
nValue > 0

Это может быть немного удивительным. У вас есть номер (NValue), который имеет как меньше или равно нулю и больше нуля, по меньшей мере, в соответствии с этим кодом. Причина, по которой это происходит, это то, что NValue на самом деле нулевой, и все сравнения с нулевым результатом неизвестны вместо истинного или ложного. Это может привести к тонким ошибкам, которые трудно выяснить.

Доля и наслаждайтесь.

4
ответ дан 27 November 2019 в 01:22
поделиться

Это зависит от ситуации, но это действительно в конечном итоге простым. Какой из них ближе к истине?

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

Значение по умолчанию полезно, когда вы можете предположить, что если пользователь (или другой источник данных) предоставил значение, значение было бы значением по умолчанию. Если эта презумпция делает больше вреда, то хорошего, то ноль лучше, даже если дело с нулем - это боль в SQL.

Обратите внимание, что существует три различных способа реализованы значения по умолчанию. Во-первых, в приложении, перед вставкой новых данных. База данных никогда не видит разницу между значением по умолчанию, предоставляемой пользователем или одним, предоставляемым приложением!

Во-вторых, объявляя значение по умолчанию для столбца и оставляя данные отсутствуют в вставке.

В-третьих, подставляя значение по умолчанию при время поиска, всякий раз, когда нуль обнаружен. Только несколько продуктов СУБД обеспечивают этот третий режим для объявления в базе данных.

В идеальном мире данные никогда не пропускают. Если вы развиваетесь для реального мира, необходимые данные в конечном итоге отсутствуют. Ваши приложения могут сделать что-то, что имеет смысл или то, что не имеет смысла, когда это произойдет.

4
ответ дан 27 November 2019 в 01:22
поделиться

NULL S и значения по умолчанию - разные вещи, используемые для разных целей. Если вы пытаетесь избежать использования NULL , предоставив все значение по умолчанию, это плохая практика, поскольку я объясню.

Нуль означает, что мы не знаем, какова ценность или будет. Например, предположим, что у вас есть Anddate поле . Вы не знаете, когда записанный процесс закончится, поэтому NULL - единственное подходящее значение; Использование значения по умолчанию какого-то фальшивого дата выхода в будущем приведет к тому же проблемам для программирования в качестве обработки NULL и, скорее всего, в моем опыте создания проблемы с возвратом неверных результатов.

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

Иногда это вызов суда и зависит от бизнес-правил, которые вы должны подать заявку. Предположим, у вас есть Speaker Honeyaria поле (что такое докладчик будет оплачен). Значение по умолчанию 0 может быть опасным, поскольку это может означать, что докладчики наняты, и мы намерены заплатить им ничего. Также возможно, что иногда могут быть докладчики, которые пожертвовают свое время для конкретного проекта (или кто являются сотрудниками компании и, следовательно, не выплачиваются дополнительным для говорят), где ноль является правильным значением, поэтому вы не можете использовать ноль, как Значение, чтобы определить, что вы не знаете, насколько этот докладчик должен быть оплачен. В этом случае NULL - единственное подходящее значение, и код должен вызвать проблему, если кто-то пытается добавить динамик на конференцию. В другой ситуации вы можете знать уже, что минимальный докладчик будет оплачен, - это 3000, и что только докладчики, которые договорились о различной ставке, будут иметь данные, введенные в поле Hondaria . В этом случае уместно поместить значение по умолчанию 3000 . В других случаях различные клиенты могут иметь разные минимумы, поэтому по умолчанию следует обрабатывать по умолчанию по-разному (обычно через таблицу поиска, которая автоматически заполняет минимальную Honoraria значение для этого клиента в форме ввода данных.

Я чувствую, что лучшее правило - покинуть значение как NULL , если вы действительно не можете знать в то время, когда данные вводятся, что значение должно быть. Используйте значение только по умолчанию, только имеет значение все время для этой конкретной ситуации и использовать какую-то другую технику, чтобы заполнить стоимость, если он может отличаться в разных обстоятельствах.

3
ответ дан 27 November 2019 в 01:22
поделиться

Нулевые значения не ... значения!

Null означает "не имеет значения" ... кроме аспекта БД, одним из важных измерений не имеющих значения переменных или полей является то, что при сравнении переменных невозможно использовать '=' (или '>', '<').

Запись чего-то вроде (VB):

if myFirstValue = mySecondValue

не вернет ни True, ни False, если одна или обе переменные не имеют значения. Придется использовать 'поворот' типа:

if (isnull(myFirstValue) and isNull(mySecondValue)) or myFirstValue = mySecondValue

Обычный' код, используемый в таких случаях -

if Nz(myFirstValue) = Nz(mySecondValue, defaultValue)

Не совсем корректен, так как не-значимые переменные будут считаться 'равными' значению 'defaultValue' (обычно строка нулевой длины).

Несмотря на такое неприятное поведение, никогда никогда без ценной причины не включат значения по умолчанию в строку нулевой длины (или '0'), а облегчение сравнения значений в коде не является ценной причиной.

11
ответ дан 27 November 2019 в 01:22
поделиться

Я не знаю, почему вы даже пытаетесь сравнить их в случаях. NULL означает, что некоторые столбец пусты / не имеют значения, когда значение по умолчанию дает столбцу некоторое значение, когда мы не устанавливаем его непосредственно в запросе.

Может быть, какой-то пример будет лучше объяснение. Скажем, у нас элемент таблица. У каждого участника есть идентификатор и имя пользователя. Необязательно у него может быть адрес электронной почты (но ему не нужно). Также каждый участник имеет столбец PostCount (который увеличивается каждый раз, когда пользователь написать сообщение). Таким образом, столбец электронной почты может иметь значение null значение (поскольку e-mail не является обязательным), в то время как столбец PostCount не нуль , но имеет значение по умолчанию 0 (потому что Когда мы создаем новый элемент, у него нет никаких сообщений).

18
ответ дан 27 November 2019 в 01:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: