powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Помогите привести к 3н.ф.
18 сообщений из 18, страница 1 из 1
Помогите привести к 3н.ф.
    #35102673
Maverick0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть две таблицы.
Первая - Общежитие:
Код общежития(РК), Наименование общежития, Адрес, Количество мест, Комендант, телефон вахты.

Вторая - Постояльцы:
Код постояльца(РК), Паспортные данные, Адрес прописки, дата рождения, срок пребывания.

Нужно привести к 3 н.ф.

Преподаватель почему-то настаивает на том, что бы из первой таблицы в отдельную таблицу вынести "Коменданта", ссылаясь на транзитивную зависимость.. Не пойму почему..

Заранее благодарен за помощь.
...
Рейтинг: 0 / 0
Помогите привести к 3н.ф.
    #35102691
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maverick0Преподаватель почему-то настаивает на том, что бы из первой таблицы в отдельную таблицу вынести "Коменданта"
Ну выйдет коменда замуж и сменит фамилию, везде менять придется.
А по сути аргументы преподавателя надо у него спрашивать.
...
Рейтинг: 0 / 0
Помогите привести к 3н.ф.
    #35102730
Maverick0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Васкецов Maverick0Преподаватель почему-то настаивает на том, что бы из первой таблицы в отдельную таблицу вынести "Коменданта"
Ну выйдет коменда замуж и сменит фамилию, везде менять придется.
А по сути аргументы преподавателя надо у него спрашивать.

Проблема в том, что это задание будет на экзамене. Я спросил, она ответила, мол, на экзамене и спросит у меня почему так..

По поводу привеедения к 3н.ф. Из первой таблицы в отдельную выносим коменданта, его имя разбиваем на три поля - фамилия, имя, отчество. В первой таблице останется:

Код общежития(РК), адрес, кол-во мест, телефон вахты.

Адрес не нужно разбивать на поля "Улица", "Дом"?

Вторая таблица.
Оставляем все как есть, только разбиваем "имя постояльца" на "фамилия", "имя" и "отчество"; так же "паспортные данные" на "Номер паспорта", "серия". "Адрес прописки" стоит разбивать на "Улица", "дом"?
...
Рейтинг: 0 / 0
Помогите привести к 3н.ф.
    #35102807
nosov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторПреподаватель... настаивает на том, что бы... в отдельную таблицу вынести "Коменданта"
потому что КОМЕНДАНТ это уже типа начальник (смайл)
иногда лучше не спорить с преподом -- согласись и забудь -- побереги здоровье (имхо)
...
Рейтинг: 0 / 0
Помогите привести к 3н.ф.
    #35102812
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maverick0разбиваем
Разбивать или нет значение поля на некоторые элементарные значения зависит от многих факторов. Прежде всего это - надо ли использовать отдельные части поля (например, отдельно имя или номер дома). То есть, это сугубо индивидуально.
...
Рейтинг: 0 / 0
Помогите привести к 3н.ф.
    #35102814
Maverick0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По поводу приведение к 3 н.ф. подскажите, пожалуйста.
...
Рейтинг: 0 / 0
Помогите привести к 3н.ф.
    #35103624
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maverick0По поводу приведение к 3 н.ф. подскажите, пожалуйста.
Если бы был зависимый атрибут от коменданта, например, его год рождения, паспорт, то могла бы быть транзитивная зависимость (если один чел может быть комендантом у нескольких общежитий)нарушение 3 нф. Для транзитвной зависимости нужны как минимум две Ф зависимости. Первая комендант зависит от общежитя (причем надо чтобы общежите не зависило от ФИО коменданта), вторая год рождения от коменданта. Вы для каждой зпаписи повторяли дату рождения, хотя было бы достаточно одного раза (в другой табле). Если например телефон вахты - на самом деле телефон коменданта, то нарушена. А если тока имя коменданта, то он нарушет 3 нф не больше чем телефон вахты, т.е никак: нет второй ФЗ. Мож Вы не все здесь написали?
...
Рейтинг: 0 / 0
Помогите привести к 3н.ф.
    #35105335
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maverick0 wrote:
> Первая - Общежитие:
> Код общежития(РК), Наименование общежития, Адрес, Количество мест,
> Комендант, телефон вахты.
>
> Вторая - Постояльцы:
> Код постояльца(РК), Паспортные данные, Адрес прописки, дата рождения,
> срок пребывания.
>
> Нужно привести к 3 н.ф.

Функциональная зависимость между атрибутами в каждом приложении разная,
так что в 3НФ оно у вас или нет - только вам и знать, как разработчику.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Помогите привести к 3н.ф.
    #35105341
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maverick0 wrote:
> По поводу привеедения к 3н.ф. Из первой таблицы в отдельную выносим
> коменданта, его имя разбиваем на три поля - фамилия, имя, отчество. В
> первой таблице останется:
>
> Код общежития(РК), адрес, кол-во мест, телефон вахты.
>
> Адрес не нужно разбивать на поля "Улица", "Дом"?

Зависит от приложения. Если будете обрабатывать отдельно улицу и дом - да,
если не будете (только ввод и печать, напр.) - не надо.

> Вторая таблица.
> Оставляем все как есть, только разбиваем "имя постояльца" на "фамилия",
> "имя" и "отчество"; так же "паспортные данные" на "Номер паспорта",
> "серия". "Адрес прописки" стоит разбивать на "Улица", "дом"?


То же самое и с ФИО.
Но это - не 3НФ, это - 1НФ.
А где ж вы там "транзитивную зависимость" комменданта нашли ?
Он разве от какого-то неключевого поля зависит ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Помогите привести к 3н.ф.
    #35105417
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maverick0Преподаватель почему-то настаивает на том, что бы.

таблица Персоны

tblContacts
ContactID
ContactName
ContactGender
BirthDate
<blah-blah-blah>

таблица Общежития

tblHostels
HostelID
ContactID (комендант из таблицы Персоны)
HostelName
HostellAddress
HostelPhone
QtyRooms

таблица Постояльцы

tblRoomMates
RoomMateID
ContactID
HostelID
CheckInDate
PeriodOfStay

в принципе препод прав и должна быть таблица комендантов

tblSupervisors
SupervisorID
ContactID
HostelID
HireDate

тогда в таблице Общежитий будет

tblHostels
HostelID
SupervisorID (комендант из таблицы Комендантов)
HostelName
HostelAddress
<blah-blah-blah>
...
Рейтинг: 0 / 0
Помогите привести к 3н.ф.
    #35105529
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Комендант вовсе не обязан быть постояльцем. Вам как раз и говорят, что это определяется условием задачи. Или Вы недослушали преподавателя, или преподаватель что-то упустил (не рассказал) в постановке задачи.
...
Рейтинг: 0 / 0
Помогите привести к 3н.ф.
    #35105637
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maverick0

Преподаватель почему-то настаивает на том, что бы из первой таблицы в отдельную таблицу вынести "Коменданта", ссылаясь на транзитивную зависимость.. Не пойму почему..



Видимо, КОМЕНДАНТ имеет некую структуру часть атрибутов которой может быть PK, а остальные функционально зависят от этих атрибутов. Заметь, что все поля, кроме поля комендант имеют названия из которых становится ясен их тип. А вот тип поля комендант не очевиден.
...
Рейтинг: 0 / 0
Помогите привести к 3н.ф.
    #35106154
playnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По-моему, все просто... может быть 1 комендант на несколько общаг. А в таком случае его обязательно выделить надо.
...
Рейтинг: 0 / 0
Помогите привести к 3н.ф.
    #35106309
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
playnetПо-моему, все просто... может быть 1 комендант на несколько общаг. А в таком случае его обязательно выделить надо.
Если только в БД есть зависимые от имени коменданта атрибуты типа даты рождения (в реальной БД такие атрибуты сто пудово есть, но это учебная БД). Иначе нет транзитивной зависимости (для нее нужны как минимум три атрибута), и нарушения 3нф по коменданту нет. Хотя из соображений оптимизации приложения и можно его выделить (в приложении луче один раз писать ФИО, а потом выбирать, если комендант уже есть в БД, а для этого луче их деражать в отдельной табле), но это не имеет отношения к нормализации по 3нф.
...
Рейтинг: 0 / 0
Помогите привести к 3н.ф.
    #35106678
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
playnet пишет:
> По-моему, все просто... может быть 1 комендант на несколько общаг. А в
> таком случае его обязательно выделить надо.

1) вряд ли может такое быть в реальности
2) даже если и так, вовсе не обязательно его выносить в отдельную таблицу,
это зависит от бизнес-логики приложения.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Помогите привести к 3н.ф.
    #35106682
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo пишет:

> Если только в БД есть зависимые от имени коменданта атрибуты типа даты
> рождения (в реальной БД такие атрибуты сто пудово есть, но это учебная
> БД).

Блин, да с чего ж обязательно есть ? В ОДНИХ БД - есть, в ДРУГИХ БД - нет.
От задачи зависит.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Помогите привести к 3н.ф.
    #35107051
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
vadiminfo пишет:

> Если только в БД есть зависимые от имени коменданта атрибуты типа даты
> рождения (в реальной БД такие атрибуты сто пудово есть, но это учебная
> БД).

Блин, да с чего ж обязательно есть ? В ОДНИХ БД - есть, в ДРУГИХ БД - нет.
От задачи зависит.
Posted via ActualForum NNTP Server 1.4
Имелось в виду, что эти ДРУГИЕ БД все же без дополнительных усилий воображения могут производить иногда впечатление каких-то ознакомительных студенческих поделок.
Впрочем, в данном топике речь идет именно о студенческой задаче. Потому именно в той структуре, что нарисована в первом посте, транзитивных зависимостей пока не обнаружил.
...
Рейтинг: 0 / 0
Помогите привести к 3н.ф.
    #35107109
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в контексте задачи ФИО коменданта допустимо считать описательным атрибутом общежития, то бритвой Оккама отсекаем сущность "Коменданты". В противном случае в отдельную таблицу вынести "Коменданта" надо.
________
Не дадим распространиться заразе политкорректности!
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Помогите привести к 3н.ф.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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