Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Нормализация БД / 24 сообщений из 24, страница 1 из 1
27.12.2016, 17:42
    #39376295
Andrew542
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация БД
Здравствуйте! Совсем я что-то запутался как нормализовать данную таблицу до Нормальной формы Бойса-Кодда включительно.
Может ли кто-нибудь помочь с этим? Хочется разобраться...

(В таблице приведены данные о дантистах и назначениях на прием, которые они сделали своим пациентам. Пациент должен прийти на прием к дантисту в указанный кабинет в заранее назначенный день и час. В каждый из дней приема дантист имеет право занимать некоторый кабинет.)

Заранее спасибо за оказанную помощь!
...
Рейтинг: 0 / 0
27.12.2016, 17:48
    #39376301
Andrew542
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация БД
В 1НФ данная таблица уже находится, так как ни одна из ее строк не содержит в любом своем поле более одного значения и ни одно из ее ключевых полей не пусто.
Во 2НФ нам надо ее разбить на разные таблицы. Я сделал так :
1 таблица - Staff_No, Dant_Name;
2 таблица - Pat_Name, Pat_No, Date
3 таблица - Staff_No, Pat_No, Date, Surgery_No

Date и Surgery_No - составной первичный ключ;

Верно ли это?
И будет ли 2НФ уже являться 3НФ?
И как привести к Нормальной форме Б-К?
...
Рейтинг: 0 / 0
27.12.2016, 19:44
    #39376341
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация БД
Andrew5422 таблица - Pat_Name, Pat_No, Date
Подумайте ещё раз.
...
Рейтинг: 0 / 0
27.12.2016, 19:58
    #39376343
Andrew542
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация БД
softwarer, Такого полезного ответа еще нигде не видел. Видать я так МАЛО думал, что решил сюда написать. Сами думайте, когда что-то пишите...
...
Рейтинг: 0 / 0
27.12.2016, 21:06
    #39376371
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация БД
Andrew542,

попробуйте обозначить ключи для своих таблиц - думаю, уже на этом этапе увидите ошибки.
...
Рейтинг: 0 / 0
27.12.2016, 21:47
    #39376390
Andrew542
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация БД
Кот Матроскин, Допустим я хочу взять за первичный ключ пару атрибутов {Номер дантиста, Дата приема};

Могу ли я тогда создать такие таблицы:
1 таблица : Номер дантиста; Имя дантиста; Кабинет;
2 таблица : Номер пациента; Имя пациента; Дата;
3 таблица : Номер дантиста; Дата; Имя пациента;

Будет ли она во 2НФ? По сути имя пациента же уже полностью зависит от начального первичного ключа;
...
Рейтинг: 0 / 0
27.12.2016, 21:58
    #39376395
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация БД
Andrew542Кот Матроскин, Допустим я хочу взять за первичный ключ пару атрибутов {Номер дантиста, Дата приема};

Могу ли я тогда создать такие таблицы:
1 таблица : Номер дантиста; Имя дантиста; Кабинет;
2 таблица : Номер пациента; Имя пациента; Дата;
3 таблица : Номер дантиста; Дата; Имя пациента;

Будет ли она во 2НФ? По сути имя пациента же уже полностью зависит от начального первичного ключа;

Для каждой получившейся таблицы у Вас должен быть свой первичный ключ.
Потом разбейте данные по предлагаемым Вами таблицам - увидите что выходит с уникальностью и подходят ли намеченные ключи.
...
Рейтинг: 0 / 0
27.12.2016, 22:01
    #39376397
Andrew542
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация БД
Кот Матроскин, Получается проблема с кабинетами...
...
Рейтинг: 0 / 0
27.12.2016, 22:08
    #39376399
Andrew542
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация БД
Кот Матроскин, не могли бы Вы, пожалуйста, подсказать, как тут лучше будет создать таблицы?
...
Рейтинг: 0 / 0
27.12.2016, 22:11
    #39376401
Andrew542
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация БД
Andrew542,
1 таблица : Имя пациента; Номер пациента;
2 таблица : Имя доктора; Номер доктора;
3 таблица : Номер доктора; Номер пациента; Дата; Кабинет;

Я же такую тоже не могу создать?
...
Рейтинг: 0 / 0
27.12.2016, 22:11
    #39376403
Andrew542
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация БД
Кот Матроскин,
1 таблица : Имя пациента; Номер пациента;
2 таблица : Имя доктора; Номер доктора;
3 таблица : Номер доктора; Номер пациента; Дата; Кабинет;

Я же такую тоже не могу создать?
...
Рейтинг: 0 / 0
27.12.2016, 22:19
    #39376406
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация БД
Andrew542,

Не только ;)
По секрету, первый Ваш вариант был лучше - там только одна таблица была кривой (на которую указал softwarer), сейчас кривые все три.
Можете попробовать с другой стороны - в изначальной таблице намешана информация о нескольких сущностях автоматизируемой области. Какие это сущности? Перечисляете их. Потом по каждой сущности выделяете таблицу и переносите туда атрибуты, которые относятся именно к этой сущности.
...
Рейтинг: 0 / 0
27.12.2016, 22:20
    #39376408
Andrew542
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация БД
Кот Матроскин, 1 таблица была кривая?
...
Рейтинг: 0 / 0
27.12.2016, 22:20
    #39376409
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация БД
Andrew542Кот Матроскин,
1 таблица : Имя пациента; Номер пациента;
2 таблица : Имя доктора; Номер доктора;
3 таблица : Номер доктора; Номер пациента; Дата; Кабинет;

Я же такую тоже не могу создать?
Почему не можете? Какую Вы видите проблему в таком разбиении?
...
Рейтинг: 0 / 0
27.12.2016, 22:22
    #39376410
Andrew542
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация БД
Кот Матроскин, я немного запутался, что тут тогда брать за первичный ключ; Дату + кабинет?
...
Рейтинг: 0 / 0
27.12.2016, 22:42
    #39376415
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация БД
Andrew542Кот Матроскин, я немного запутался, что тут тогда брать за первичный ключ; Дату + кабинет?

Для третьей таблицы? Да, это один из потенциальных ключей этой таблицы, и его можно выбрать в качестве первичного. Это не единственный вариант, но допустимый. Другие варианты - (Врач + Дата), (Пациент + Дата)
...
Рейтинг: 0 / 0
27.12.2016, 22:52
    #39376420
Andrew542
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация БД
Кот Матроскин, по сути, тогда она уже будет и в 3НФ?
...
Рейтинг: 0 / 0
28.12.2016, 08:44
    #39376535
17-77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация БД
Andrew542,

Таблица Dentist:
Staff_No (PK) string not null
DentistName string not null unique constraint

Таблица Patient:
Pat_No (PK) string not null
PatName string not null unique constraint

Таблица Surgery:
Surgery_No (PK) string not null

Таблица Appointment:
App_ID (PK) int not null
Staff_No (FK -> Dentist) string not null
Pat_No (FK -> Patient) string not null
Surgery_No (FK -> Surgery) string not null
AppointmentDateTime datetime not null
...
Рейтинг: 0 / 0
28.12.2016, 11:09
    #39376649
Andrew542
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация БД
17-77, Эта таблица уже в НФБК?
...
Рейтинг: 0 / 0
28.12.2016, 12:29
    #39376759
17-77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация БД
Andrew542,

тьфу, для НКБФ надо еще одну таблицу (дантист имеет право занимать только определенную комнату):
DentistSurgery:
DentistSurgery_ID (PK) int not null
Staff_No (FK -> Dentist) string not null
Surgery_No (FK -> Surgery) string not null
...
Рейтинг: 0 / 0
28.12.2016, 13:06
    #39376818
Andrew542
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация БД
17-77,

Тогда в нас получается 4 таблицы?
...
Рейтинг: 0 / 0
05.01.2017, 18:49
    #39379774
fsharp_fsharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация БД
чтобы нормализовать, надо знать имена сущностей заранее - это знание предметной области + ТЗ, или выявить их в процессе анализа предметной области. и тогда все нормализуется. формально - это не решается, либо решается, но не имеет смысла
...
Рейтинг: 0 / 0
05.01.2017, 18:54
    #39379780
fsharp_fsharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация БД
НФБК - это более общий случай для 3НФ для составных PK - FK. введите суррогатные PK, и задача сведется к нормализации до 3НФ. переход до НФБК, как требуется по условию задачи, будет потом простым
...
Рейтинг: 0 / 0
17.03.2017, 09:08
    #39421185
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация БД
Andrew542Здравствуйте! Совсем я что-то запутался как нормализовать данную таблицу до Нормальной формы Бойса-Кодда включительно.
Может ли кто-нибудь помочь с этим? Хочется разобраться...

(В таблице приведены данные о дантистах и назначениях на прием, которые они сделали своим пациентам. Пациент должен прийти на прием к дантисту в указанный кабинет в заранее назначенный день и час. В каждый из дней приема дантист имеет право занимать некоторый кабинет.)

Заранее спасибо за оказанную помощь!


выделить словарь дантистов, выделить словарь пациентов, и еще будет таблица приемов.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Нормализация БД / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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