powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Таблица неуд 3НФ
13 сообщений из 13, страница 1 из 1
Таблица неуд 3НФ
    #32556659
Фотография Flashback
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
Есть табличка
1) ID (number)
2) Лог поле (bool)
3) Поле 3 (Text)
4) Поле 4 (Text)
If "Лог поле" = True then Поля 3 и 4 не заполняються. Это вроде как противоречит 3НФ (Т.к. Неключивые поля зависят от другого неключевого поля ). Как лучше сделать?
------------------
Two of the most famous products of Berkeley are LSD and Unix. I don't think that this is a coincidence
...
Рейтинг: 0 / 0
Таблица неуд 3НФ
    #32556675
olk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FlashbackВсем привет.
Есть табличка
1) ID (number)
2) Лог поле (bool)
3) Поле 3 (Text)
4) Поле 4 (Text)
If "Лог поле" = True then Поля 3 и 4 не заполняються. Это вроде как противоречит 3НФ (Т.к. Неключивые поля зависят от другого неключевого поля ). Как лучше сделать?

Кхм , просто убрать поле Лог поле
if (Поле3 is null) and (Поле4 is null) значить это не лог :)
А вообще странная табличка, хотелась бы узнать какими ирациональными путями вы к ней прейшли
Или у вас сначало инсертиться эта табличка а потом апдетиться в
зависимости от Поле лог ???
...
Рейтинг: 0 / 0
Таблица неуд 3НФ
    #32556678
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одна таблица - с одним полем ID, другая - {ID, Поле 3, Поле 4}. Во второй таблице данные только по требуемым ID.
...
Рейтинг: 0 / 0
Таблица неуд 3НФ
    #32557077
bas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а я бы сделал так
ТАбл1(ид1, лог), Таб2(ид2, ид1, текст)
...
Рейтинг: 0 / 0
Таблица неуд 3НФ
    #32557331
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЭто вроде как противоречит 3НФ (Т.к. Неключивые поля зависят от другого неключевого поля ).
Нет, не противоречит. Здесь надо вспомнить определение функциональной зависимости полей.
A->B, если при одних и тех же значениях A в записи присутствуют одни и те же значения B
У тебя при [Лог поле ]=False значения [Поле 3] и [Поле 4] могут быть каким угодно. То есть нет функциональной зависимости полей, значит нет нарушения 3НФ.
...
Рейтинг: 0 / 0
Таблица неуд 3НФ
    #32557334
olol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно просто триггерами на INSERT и UPDATE, при соответствующем условии, занулять эти поля...
...
Рейтинг: 0 / 0
Таблица неуд 3НФ
    #32557363
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я бы сделал так:

id identity,
text1 text,
text2 text

И все. Если текстовые поля пустые, то зачем запись?
...
Рейтинг: 0 / 0
Таблица неуд 3НФ
    #32581396
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mir
У тебя при [Лог поле ]=False значения [Поле 3] и [Поле 4] могут быть каким угодно. То есть нет функциональной зависимости полей, значит нет нарушения 3НФ.


Превернем выражение:
Log=f(Field3,Field4) - налицо вункциональная зависимость
...
Рейтинг: 0 / 0
Таблица неуд 3НФ
    #32581414
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно поле Log можно генерировать обычным case-ом,
но если вдруг понадобится тянуть из таблички только записи где Log=0 или только где Log=1 (эт смотря как вы ее юзаете). То может понадобиться индекс (Id,Log) - для производительности таких запросов. И нет ничего страшного в нарушении 3НФ. Никто за это к стенке не поставит.
А заполнять поле Log действительно проще в триггере BEFORE.
...
Рейтинг: 0 / 0
Таблица неуд 3НФ
    #32582236
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FlashbackВсем привет.
Есть табличка
1) ID (number)
2) Лог поле (bool)
3) Поле 3 (Text)
4) Поле 4 (Text)
If "Лог поле" = True then Поля 3 и 4 не заполняються. Это вроде как противоречит 3НФ (Т.к. Неключивые поля зависят от другого неключевого поля ). Как лучше сделать?
Оставить как есть, а всем говорить, что это зарезервировано на будущее.
Это не шутка.
...
Рейтинг: 0 / 0
Таблица неуд 3НФ
    #32584455
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenmanПревернем выражение:
Log=f(Field3,Field4) - налицо вункциональная зависимость

Все верно. Здесь поле Лог совершенно излишнее, поскольку его значение четко выводится из значений Field3,Field4. Если они IS NULL, то Log= True, иначе = False. Таки да, нарушена 3НФ.
...
Рейтинг: 0 / 0
Таблица неуд 3НФ
    #32602628
Sh_ura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чтобы привести к 3НФ надо основную таблицу разбить на две. Существуют 2 варианта
- две равноценные таблицы в которые выносишь все что не имеет неключевых зависимостей (У тебя скорее всего именно такой случай)
- Одна таблица главная, а вторая подчиненная (содержит ключевые поля главной таблицы)
...
Рейтинг: 0 / 0
Таблица неуд 3НФ
    #32604372
minva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flashback
If "Лог поле" = True then Поля 3 и 4 не заполняються.

Эта фраза главная!
То есть
Field3(Field4) = f(LOG), а не Log=f(Field3,Field4)
Причем и это функциональной зависимостью можно назвать как-то с натяжкой... От Log зависит только факт заполнения Field3 и Field4, а не их содержимое
Хотя, надо уточнить, что конкретно хотел автор получить
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Таблица неуд 3НФ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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