![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
null или нуль? [IB6.x, FB]
_Ламер_ © (2006-11-10 21:53:00)Народ, здаров.
Есть таблица, в этой таблице есть поле (а как иначе))?). Это поле связано FK с полем из другой таблицы. Вопрос в чём. Если не надо ссылаться на вторую таблицу, то каким значением таблицу заполнять - null или нулём? Если второй случай, тогда его можно определить как not null (в моём случае не актуально - юзер доступа к этому полю не имеет). Но тогда во второй таблице придётся создавать запись со значением "0", причём до создания генератора.
Честно говоря не знаю, как поступить.
_Ламер_ (2006-11-11 15:36:00) [1]Сэнкс
Целую
Desdechado (2006-11-10 22:54:00) [2]Я предпочитаю не делать внешних ключей с нуллами. Лучше уж завести запись по умолчанию в справочнике. Она не обязана иметь код 0, это может быть любое понятное значение. У меня обычно единица. Она же триггерами заблокирована от изменения и удаления.
А почему я не люблю ключи с null, так это потому, что NULL-значения не индексируются. И поэтому, когда тебе нужно будет найти (а это часто) Null'ы в поле, то придется писать проверку IS NULL, а она не использует индексы, т.е. приводит к полному перебору записей в таблице. А оно надо? Особенно, если таблицы не на 100 записей, а на 100 миллионов...
_Ламер_ (2006-11-10 22:51:00) [3]Не, папка не физическая, а виртуальная. У неё, кроме как названия и атрибута, что она папка - ничего и нет.
Кстати, чем директория отличается от папки?
Petr V. Abramov (2006-11-10 22:40:00) [4]> Если второй случай, тогда его можно определить как not null
второй случай не так плох, т.к. избавляет от outer join, который оптимизатору - серп по работе. В случае мелких справочиников в большом их количестве - пофиг почти
KilkennyCat (2006-11-10 22:31:00) [5]у папки тоже есть конкретные значения, не меньше, чем у файла. Объединяешь и добавляешь поле флага, папка или файл.
_Ламер_ (2006-11-10 22:21:00) [6]Ну как Вам сказать. Первая таблица - это дерево папок. Если узел не папка, то это ссылка на вторую таблицу с конкретными значениями. Можно, конечно, их объединить, но тогда получится куча незаполненных полей в случае, если запись является папкой. Такие вот пироги.
unknown (2006-11-10 22:11:00) [7]
> Kolan © (10.11.06 21:56) [1]
> Зачем тогда связь в таблицах?
Не поверишь - есть такие случаи, когда допустимо оставлять поле
незаполненным, но при этом, в случае заполнения поля введенное значение должно соответствовать значению из другой таблицы. :-)
unknown (2006-11-10 22:08:00) [8]Зависит от задачи. Насколько я понял проблему - нет жесткой зависимости
таблиц, так что null предпочтительней.
Kolan (2006-11-10 21:56:00) [9]Я в базах - <твой ник>, но ИМХО тут что-то нето. Как это ненадо ссылаться? Зачем тогда связь в таблицах? Зачем сохранять данные?