|
|
|
структура таблицы, позволяющая объединить несколько записей??
|
|||
|---|---|---|---|
|
#18+
Здравствуйте и с наступающим! Такой вопрос - создаю базу данных выпускников вуза (примерный объем выпускников в год ~2500). В базе необходимо хранить информацию о успеваемости выпускников (т.е. список дисциплина-оценка для каждого). Количество дисциплин для одного выпускника колеблется в пределах 40-60 штук. Как лучше организовать структуру для хранения данных об успеваемости, так: 1) Таблица "Успеваемость" поле IDVypusknik - integer - служит для связи с таблицей выпускников поле IDDiscipl - integer - служит для связи с таблицей дисциплин поле Ball - integer - соответственно здесь хранится полученная оценка При использовании такой структуры на каждого студика в таблице успеваемости будет создаваться ~40-60 записей. Это мне не очень нравится, поэтому привожу другой вариант организации таблицы успеваемости: вот так: 2) Таблица "Успеваемость" поле IDVypusknik - integer - служит для связи с таблицей выпускников поле Disciples - строковое - здесь хранятся коды всех изученных дисциплин через запятую (или другой разделитель) - примерно так ":1:2:10:25:" (т.е. студентом были изучены диспциплины с кодами 1, 2, 10, 25) поле Balls - строковое - соответственно здесь хранятся полученные оценки по предметам Использование такого варианта даст существенный выигрыш в количестве записей, используемых для описания одной и той же информации, но требует дополнительных усилий к парсингу таких "суммирующих" полей. Какой вариант на ваш взгляд практичнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2006, 13:12 |
|
||
|
структура таблицы, позволяющая объединить несколько записей??
|
|||
|---|---|---|---|
|
#18+
вариант №1 только имя поля лучше Balls - small, average, big, huge :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2006, 13:19 |
|
||
|
структура таблицы, позволяющая объединить несколько записей??
|
|||
|---|---|---|---|
|
#18+
Nike85... даст существенный выигрыш в количестве записей... А для чего он, этот "существенный" выигрыш? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2006, 13:30 |
|
||
|
структура таблицы, позволяющая объединить несколько записей??
|
|||
|---|---|---|---|
|
#18+
to .gc а почему второй не устраивает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2006, 14:16 |
|
||
|
структура таблицы, позволяющая объединить несколько записей??
|
|||
|---|---|---|---|
|
#18+
Sgt.Pepper Nike85... даст существенный выигрыш в количестве записей... А для чего он, этот "существенный" выигрыш? Как для чего? Есть же разница открывать пустую таблицу, или таблицу, где записей порядка 100 тысяч? Ведь производительность работы с таблицей (выборка, поиск, фильтрация) зависит и от числа записей в ней. Другое дело, что для обработки каждой записи во втором случае придется тратить дополнительное время проца. Вот я и хочу узнать - в каком случае затраты времени меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2006, 14:21 |
|
||
|
структура таблицы, позволяющая объединить несколько записей??
|
|||
|---|---|---|---|
|
#18+
А мне вот интересно как будет выглядеть и сколько будет работать запрос во 2ом случае, если надо найти средний бал всех выпускников по математике? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2006, 14:35 |
|
||
|
структура таблицы, позволяющая объединить несколько записей??
|
|||
|---|---|---|---|
|
#18+
0. Некоторые могут увидеть нарушение NF1 в варианте#2 :) 1. как вы во втором варианте будете выполнять запросы типа: Код: plaintext 1. 2. 3. 4. 2. Скорее всего, типичный запрос не потребует всех сотен тыс. записей, + индексы на foreign keys могут значительно уменьшить время запросов. Единственный случай, когда могут потребоваться все записи - печать приложений к диплому перед выпуском - но тут время печати значительно превысит время выборки :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2006, 14:46 |
|
||
|
структура таблицы, позволяющая объединить несколько записей??
|
|||
|---|---|---|---|
|
#18+
.gc0. Некоторые могут увидеть нарушение NF1 в варианте#2 :) Как бы у автора топика не возникли бы вопросы про 1НФ, а-то я волноваться начинаю :-)). Короче - вариант №1 канает :-). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2006, 14:59 |
|
||
|
структура таблицы, позволяющая объединить несколько записей??
|
|||
|---|---|---|---|
|
#18+
Rin@t .gc0. Некоторые могут увидеть нарушение NF1 в варианте#2 :) Как бы у автора топика не возникли бы вопросы про 1НФ, а-то я волноваться начинаю :-)). Короче - вариант №1 канает :-). Да, первая нормальная форма, это конечно, круто, но Ваши сомнения, Ринат, могут отдохнуть в другом месте, ведь здесь приветствуются лишь предложения, а не сомнения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2006, 14:27 |
|
||
|
структура таблицы, позволяющая объединить несколько записей??
|
|||
|---|---|---|---|
|
#18+
basА мне вот интересно как будет выглядеть и сколько будет работать запрос во 2ом случае, если надо найти средний бал всех выпускников по математике? Ага, понял, bas . Приче это для меня существенно :)) (первый вариант рулит А может еще есть варианты для агрегации нескольких записей в данном случае??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2006, 14:44 |
|
||
|
структура таблицы, позволяющая объединить несколько записей??
|
|||
|---|---|---|---|
|
#18+
Да пожалуйста. авторКоличество дисциплин для одного выпускника колеблется в пределах 40-60 штук. а количество столбцов в таблице - до 1000. Хватает на каждую дисциплину. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2006, 15:00 |
|
||
|
структура таблицы, позволяющая объединить несколько записей??
|
|||
|---|---|---|---|
|
#18+
ModelRДа пожалуйста. авторКоличество дисциплин для одного выпускника колеблется в пределах 40-60 штук. а количество столбцов в таблице - до 1000. Хватает на каждую дисциплину. Угу а поскольку редко приходится считать средний бал по физике+медицине то и запросы попроще будут да и скорость повыше, только вот средний бал по студенту считать не очень удобно ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2006, 16:01 |
|
||
|
структура таблицы, позволяющая объединить несколько записей??
|
|||
|---|---|---|---|
|
#18+
Nike85Здравствуйте и с наступающим! поле Ball - integer - соответственно здесь хранится полученная оценка Боллз - это в данном контексте переводится скорее как "яйца". А оценка будет Mark. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2007, 09:04 |
|
||
|
структура таблицы, позволяющая объединить несколько записей??
|
|||
|---|---|---|---|
|
#18+
Nike85 Как для чего? Есть же разница открывать пустую таблицу, или таблицу, где записей порядка 100 тысяч? Ведь производительность работы с таблицей (выборка, поиск, фильтрация) зависит и от числа записей в ней. Другое дело, что для обработки каждой записи во втором случае придется тратить дополнительное время проца. Вот я и хочу узнать - в каком случае затраты времени меньше. Ну и для чего страдать икснёй? Вся эта сотня тысяч записей будет занимать объём порядка одного мегабайта, на чём база вертится, на XT с 640кб памяти? Ради чего эта экономия на спичках, чтобы любые сколько-нибудь сложные запросы проводить перректально через курсор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2007, 17:06 |
|
||
|
структура таблицы, позволяющая объединить несколько записей??
|
|||
|---|---|---|---|
|
#18+
ModelRДа пожалуйста. авторКоличество дисциплин для одного выпускника колеблется в пределах 40-60 штук. а количество столбцов в таблице - до 1000. Хватает на каждую дисциплину. Подскажи, пожалуйста, ModelR, а как тогда должна выглядеть структура таблицы Оценки по дисциплинам - если к изучаемым дисциплинам могут добавляться новые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2007, 08:15 |
|
||
|
структура таблицы, позволяющая объединить несколько записей??
|
|||
|---|---|---|---|
|
#18+
Решение годится, если на период эксплуатации системы число предметов плюс число других полей в ОЦЕНКИ заведомо меньше лимита числа колонок . ОЦЕНКИ (Студент, Семестр, ОценкаПредм1, ...., ОценкаПредмN) ПРЕДМЕТЫ (Наименование, Номер_позиции_ОЦЕНКИ,...) -- метаданные, компетенция администатрора. Запросы динамические, типа оценки по премету 'Физика' sql_txt= 'Select ОценкаПредм' <конкатенация> (Select Номер_позиции_ОЦЕНКИ from ПРЕДМЕТЫ where Наименование = 'Физика') <конкатенация> ' from ОЦЕНКИ' Формы ввода также строятся динамически по метаданным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2007, 13:02 |
|
||
|
структура таблицы, позволяющая объединить несколько записей??
|
|||
|---|---|---|---|
|
#18+
2ModelR А какой смысл-то в этом? Динамические запросы, изменение структуры для добавления предмета... Выигрыш-то в чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2007, 12:34 |
|
||
|
структура таблицы, позволяющая объединить несколько записей??
|
|||
|---|---|---|---|
|
#18+
To ModelR Спасибо за дельные советы. Наверное, все ж таки лучше организовать структуру таблицы Оценки так: код_выпускника, код_предмета, полученная_оценка. А то если для объединять все оценки по предметам в одну запись, то получится либо зашифрованное поле, либо куча "простаивающих полей" (типа студент не изучал физику, но поле для "физика" в его записи то существует). Спасибо за критику и предложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2007, 16:02 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34227738&tid=1544781]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
151ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 437ms |

| 0 / 0 |
