powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Оцените, пожалуйста.Спасибо.
5 сообщений из 5, страница 1 из 1
Оцените, пожалуйста.Спасибо.
    #32954340
MAVi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задание: База для хранения информации о разрабатываемых тестах(информации минимум), у каждого теста должен быть автор(преподаватель), и каждый тест можно отнести к какой-либо дисциплине.
Оцените, пожалуйста: 1)правильно ли я создал таблицы; 2) не переборщил ли с количеством внешних ключей; 3) насколько далек этот вариант от оптимального. Спасибо.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
   mysql> create table  tutor (
    -> id_tut int not null unique auto_increment,
    -> fam_tut varchar( 25 ) not null,
    -> name_tut varchar( 15 ) not null,
    -> otch_tut varchar( 25 ) not null,
    -> primary key(id_tut));

mysql> create table test (
    -> id_test int not null unique auto_increment,
    -> fk_tuttest int not null,
    -> fk_distest int not null,
    -> name_test varchar( 40 ) ,
    -> info_test varchar( 100 ),
    -> primary key(id_test),
    -> constraint who_made
    -> foreign key(fk_tuttest)
    -> references tutor(id_tut));


mysql> create table discipline (
    -> id_dis int not null unique auto_increment,
    -> fk_tutdis int not null,
    -> name_dis varchar( 30 ),
    -> primary key(id_dis),
    -> constraint who_teach
    -> foreign key(fk_tutdis)
    -> references tutor(id_tut));

mysql> alter table test
    -> add constraint on_dis
    -> foreign key(fk_distest)
    -> references discipline(id_dis);
...
Рейтинг: 0 / 0
Оцените, пожалуйста.Спасибо.
    #32954395
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имена полей, отражающих один и тот же объект, лучше делать одинаковыми во всех таблицах, т.е.
-> id_test int not null unique auto_increment,
-> id_tut int not null,
-> id_dis int not null,
Если этого не придерживаться, то при большом количестве таблиц можно в них запутаться.

Ф.И.О. лучше положить в одно поле. Будет меньше забот при формировании отчетов и вводе данных.

В ключевых полях auto_increment неоудобен с точки зрения стройности организации справочников. Пользователю захочется разделить все коды на диапазоны для разных групп. Поэтому лучше дать возможность ему вводить коды самому. В сервисе можно предоставить ему значение по умолчанию новой записи.
...
Рейтинг: 0 / 0
Оцените, пожалуйста.Спасибо.
    #32954536
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> -> otch_tut varchar(25) not null,

Я бы убрал not null. Отчество присутствует у славян и арабов. Для преподавателей, по-видимому, нет таких ограничений.

Из каких соображений выбран размер varchar полей в таблицах? Вполне можно представить имя теста длиннее 40 символов.

Если нет условия, что любой преподаватель может создавать тест для любой дисциплины, потребуется связать преподавателей и дисциплины.

> 1)правильно ли я создал таблицы;

Маловато информации о задаче.

> 3) насколько далек этот вариант от оптимального

Оптимальным может быть решение исключительно в контексте задачи. Оптимальности "вообще" не бывает. Вполне может оказаться, что в этой задаче требуется учитывать временнЫе изменения преподавательского состава, возможность смены фамилии, пол, состояние тестов и пр.
...
Рейтинг: 0 / 0
Оцените, пожалуйста.Спасибо.
    #32954657
MAVi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 PVP.
авторИмена полей, отражающих один и тот же объект, лучше делать одинаковыми во всех таблицах, т.е.
-> id_test int not null unique auto_increment,
-> id_tut int not null,
-> id_dis int not null,
Не понял что Вы имеете в виду. Я стараюсь имена полей имеющие сходую функциональность строить по схожей структуре.
Или Вы предлагаете давать им соверешенно одинаковые имена?

2 guest_20040621. Да любой преподаватель может создавать тест для любой дисциплины.
...
Рейтинг: 0 / 0
Оцените, пожалуйста.Спасибо.
    #32954823
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAViИли Вы предлагаете давать им соверешенно одинаковые имена? Да, совершенно одинаковые имена. И не только в таблицах, но и в процедурах, если для этого потребуются переменные. Тогда имена легко запоминаются. Эти правила "выстраданы", очень тяжело в большой базе данных привести в порядок имена полей, если в начале разработки не было системы.

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


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