|
|
|
Верна ли структура БД?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Подскажите, пожалуйста, верна ли структура базы, все ли таблицы удовлетворяют нормальной форме Бойса-Кодда? Имеется следующая информация о студентах: Номер студенческого ФИО Адрес (только город) Номер группы Староста группы (можно задать номером билета, у группы только один староста) Предмет Кол-во часов, которые отводятся на предмет в учебном плане Дата сдачи экзамена (могут быть несколько дат в случае пересдачи) Оценка В СУБД MS SQL Server 2008 создайте базу данных. Все таблицы должны удовлетворять требованиям нормальной формы Бойса-Кодда, при этом должны учитываться все указанные выше особенности. Создайте представления (View), позволяющие получить: Список студентов, имеющих по всем предметам оценки 4 или 5 Список студентов, живущих в том же городе, что и староста его группы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2011, 22:26 |
|
||
|
Верна ли структура БД?
|
|||
|---|---|---|---|
|
#18+
Таблицу экзаменов надо разделить на 2 - собсно экзамен (дата, предмет) и оценки (студент, экзамен, оценка) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2011, 23:02 |
|
||
|
Верна ли структура БД?
|
|||
|---|---|---|---|
|
#18+
В задании сказано, что в случае пересдачи могут быть несколько дат, поэтому делить не надо. У меня еще один вопрос есть. В таблицу Starosta я пишу, к примеру, NumGroup - 382 и NumStud (староста группы, который задается номером билета) - 124. А в таблице Student я могу этому же NumStud 124 задать другую группу. Получается противоречие. Староста группы сам находится в другой группе. Подскажите, что не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2011, 23:12 |
|
||
|
Верна ли структура БД?
|
|||
|---|---|---|---|
|
#18+
А нет, все нормально, этот вопрос снимается...Но появился еще один. В таблице Exam первичный ключ составной. И он же является внешним ключом, который ссылается на две другие таблицы. Это нормально? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2011, 02:07 |
|
||
|
Верна ли структура БД?
|
|||
|---|---|---|---|
|
#18+
verja, Вы говорите о пересдаче, но составной ключ таблицы экзамен вроде не позволяет одному биленту иметь несколько предметов. Т.е. только один раз. Кроме того, у Вас, скорее всего, типа предполагается что экзамены могут сдавать тока старосты. Кроме того, в реале и студенты могут преходить из группы в группу и старосты группы меняться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2011, 08:29 |
|
||
|
Верна ли структура БД?
|
|||
|---|---|---|---|
|
#18+
verjaВ задании сказано, что в случае пересдачи могут быть несколько дат, поэтому делить не надо.Не согласен. Каждая пересдача тоже фиксируется как отдельный экзамен. Можно высчитать, что это экзамен с номером > 1, можно хранить специальный признак пересдача. авторВ таблице Exam первичный ключ составной. И он же является внешним ключом, который ссылается на две другие таблицы.Можно и так, но из соображений пракического удобства можно завести в таблице экзам автосчетчик, который и будет ПК, а сочетание двух полей, которые ключевые сейчас - сделать уникальным составным индексом. авторКроме того, у Вас, скорее всего, типа предполагается что экзамены могут сдавать тока старостыЕсли долго вглядываться в картинку, можно заметить, что у ТС связи проходят строго одна по другой, наверное, все-таки, с таблицей экзаменов связана таблица студентов. А старосты - с таблицей студентов а не экзаменов. Все равно нужно было яснее рамположить таблицы при фотографировании экрана. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2011, 08:36 |
|
||
|
Верна ли структура БД?
|
|||
|---|---|---|---|
|
#18+
П-Л, не связи а ОЦ я имел в виду. Если между староста и экзамен один к одному, то скорей всего ОЦ не позволит занести номер билета не старосты. А если мжду старостой и студентом типа связь без ОЦ (я не знаю что за тулса, но в Аксцессе такое моно), то экзамен могут сдавать номера билетов, которых нет в таблице студент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2011, 08:48 |
|
||
|
Верна ли структура БД?
|
|||
|---|---|---|---|
|
#18+
vadiminfoП-Л, не связи а ОЦ я имел в виду. Если между староста и экзамен один к одному, то скорей всего ОЦ не позволит занести номер билета не старосты. А если мжду старостой и экзаменом типа связь без ОЦ (я не знаю что за тулса, но в Аксцессе такое моно), то экзамен могут сдавать номера билетов, которых нет в таблице студент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2011, 08:49 |
|
||
|
Верна ли структура БД?
|
|||
|---|---|---|---|
|
#18+
Там бы ла опечатка. Между старостой и студентом, читать между старостой и экзаменом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2011, 08:50 |
|
||
|
Верна ли структура БД?
|
|||
|---|---|---|---|
|
#18+
Да, таблицу Exam, наверное, действительно надо делить на 2 - "Экзамен" (дата, предмет) и "Оценки" (студент, экзамен, оценка). Только вот в таблице "Оценки" поля "Номер студенческого" и "Предмет" получается не могут быть составным первичным ключом, потому как может быть пересдача экзамена. Как же тогда быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2011, 18:27 |
|
||
|
Верна ли структура БД?
|
|||
|---|---|---|---|
|
#18+
Что-то я окончательно запутался. Как я понимаю, естественное соединение таблиц должно дать исходную большую таблицу. Так вот, если я делаю таблицы, как нарисовано ниже, то их естественное соединение дает исходную таблицу. Если же таблицу экзамен разделяю на две ("Экзамен" (дата, предмет) и "Оценки" (студент, экзамен, оценка)), то соединение всех таблиц исходную таблицу не дает. Хотя, по идее, делить надо, т.к. есть функциональная зависимость "Дата сдачи -> Предмет"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2011, 22:12 |
|
||
|
Верна ли структура БД?
|
|||
|---|---|---|---|
|
#18+
Examen(NumExamen ПК, RunDate, Subject ФК) ExamenMark(NumExamenMark ПК, NumExamen ФК, NumStud ФК, MarkValue) Не вижу проблемы. Таблицы сделал по своему вкусу - в каждой ПК автосчетчик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2011, 22:40 |
|
||
|
Верна ли структура БД?
|
|||
|---|---|---|---|
|
#18+
verjaЧто-то я окончательно запутался. Как я понимаю, естественное соединение таблиц должно дать исходную большую таблицу. Так вот, если я делаю таблицы, как нарисовано ниже, то их естественное соединение дает исходную таблицу. Если же таблицу экзамен разделяю на две ("Экзамен" (дата, предмет) и "Оценки" (студент, экзамен, оценка)), то соединение всех таблиц исходную таблицу не дает. Хотя, по идее, делить надо, т.к. есть функциональная зависимость "Дата сдачи -> Предмет"... кто-кому-чего-куда не даёт ?? самая, что ни на есть, стандартная схема - таб."Оценки" - таб.фактов, на которой "висят" справочники студентов и экзаменов зы а специальная таб.Старосты - это чем вызвано ? битового поля в Студентах - недостаточно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2011, 22:45 |
|
||
|
Верна ли структура БД?
|
|||
|---|---|---|---|
|
#18+
qwerty112, автора специальная таб.Старосты - это чем вызвано ? Исходя из задания в моем первом сообщении, есть столбец "Староста", поэтому и сделал таблицу "Старосты". Куда-то ж его надо девать)) В любом случае, я думаю таблица "Старосты" ничего не портит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2011, 23:20 |
|
||
|
Верна ли структура БД?
|
|||
|---|---|---|---|
|
#18+
П-Л, Получается так. Только базу мне надо создать в MS SQL Server 2008, а потом через Access подключиться к БД и для каждой таблицы создать форму. Как-то неправильно получается вводить в таблицу Mark значение экзамена через значение автосчетчика таблицы Examen. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2011, 02:39 |
|
||
|
Верна ли структура БД?
|
|||
|---|---|---|---|
|
#18+
verja, Теперь у Вас предполагается что у студента по одному экзамену может быть много оценок, но дата у них одна (сока не перездавай экзамен, то дата одна, а Вы говорили что их может быть несколько). Чтобы дат было несколько, Date претендует попасть в таблу Mark. Т.е. это дата получения оценки. Но тогда в таблице Exam останется два поля из которых один суррогат: она типа претендует на удаление из схемы. Но, возможно, у экзамена может быть дата экзамена (для расписания, например), а даты перездачи это другое менее важное. Ну типа дата оценки. Вы там уже уточните у препада. Что он там хочет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2011, 08:19 |
|
||
|
Верна ли структура БД?
|
|||
|---|---|---|---|
|
#18+
Не смешивайте физичекую модель БД с формами для ввода. Физическая модель должна быть полная и непротиворечивая. Формы - эргономическими. Ввод оценок, очевидно удобно осуществлять в следующем виде: Форма оценки за экзамен. Наверху формы дата экзамена, предмет. Ниже - вложенный грид со значениями Студент - Оценка. Дата экзамена - поле ввода. Предмет - комбобокс. В гриде Студент - комбобокс, позволяющий выбрать любого студента. Оценка - поле ввода или комбобокс по вкусу. Форма имеет источником данных таблицу экзаменов. Вложенный грид - таблицу оценок за экзамен. Связь по LinkMasterChild/ Чуть-чуть кода - ресайзинг, еще какие-нибудь бантики - почти все можно настроить в конструкторе. Время реализации сего поделия - 3 минуты с перекурами и перерывами на кофе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2011, 08:19 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37316493&tid=1542111]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
82ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
| others: | 230ms |
| total: | 407ms |

| 0 / 0 |
