Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/22: Рейтинг темы: голосов - 22, средняя оценка - 4.64
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249
1

Нормализация таблицы БД (сложности с вычисляемым столбцом)

08.02.2014, 17:08. Показов 4000. Ответов 52
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток!

Ребята, посоветуйте пожалуйста, как нормализовать мою БД. Так же не могу разобраться как быть с вычисляемым полем "полетное_вермя" и "Общая_наработка_самолета_в_часах". Тут вопросов несколько: на сколько я понимаю, то вычисляемые поля в таблице лучше не создавать, а размещать их в запросах. С полем "полетное_вермя", я еще соглашусь (так как оно складывается из двух предыдущих полей "взлет" и "посадка"), а вот как быть с полем "Общая_наработка_самолета_в_часах"? Допустим сейчас строка в этом поле содержит значение 55985:05 часов, но после следующего рейса к нему должно приплюсоваться "полетное время". Так где хранить значение 55985:05 часов и где должны происходить вычисления?
Еще вопрос, на поле "Общая_наработка_самолета_в_часах" ставлю формат Дата/время, но не могу добиться чтобы получился формат 99999:00 часов. Как быть?
Вложения
Тип файла: rar НАРАБОТКА.rar (42.1 Кб, 25 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.02.2014, 17:08
Ответы с готовыми решениями:

Нормализация таблицы до 2НФ
Добрый день, начал делать курсовую работу по СУБД, начал с таблиц, и тут засада, отошел от 1НФ и...

Нормализация перекрестной таблицы
Есть перекрестная таблица в строках: Фамилии в столбцах: месяцы в ячейках: суммы Нужна...

Нормализация таблицы excel
Нужна помощь в написании макроса который бы производил нормализацию таблицы до первой нормальной...

Декомпозиция таблицы животные (нормализация)
Добрый вечер! Подскажите, пожалуйста, сделать декомпозицию данной таблицы? Читал форумы, но все...

52
Эксперт MS Access
2833 / 1375 / 215
Регистрация: 13.05.2011
Сообщений: 4,217
08.02.2014, 17:27 2
Мои замечания: Если поле Дата – дата взлета; то должно быть поле Дата_посадки (сегодня взлетает и завтра прилетает). Полетное время у вас подсчитано не правильно, т.к. вы сложили поля Взлет и Посадка. Надо вычесть из поля Посадка поле Взлет с учетом дат взлета и посадки. Сейчас постараюсь поправить ваши данные как я это вижу и выложу.
Еще: в схеме данных не корректно установлены связи.
1
Модератор
Эксперт MS Access
11957 / 4825 / 779
Регистрация: 07.08.2010
Сообщений: 14,138
Записей в блоге: 4
08.02.2014, 17:55 3
мое решение
таб1
--ид1
--данные самолета
--наработки на момент поступления самолета в контору, причем не в дата/время, а в нормальном числовом значении

таб2
--ид2
--ид1
--взлет
--посадка
--наработка в часах числом(здесь допустима денормализация, чтобы не возится с минутами /секундами

сосчитать накопление для некого отчета--не проблема
причем бывает неоднократная правка данных(незапланированные посадки, прогрев системы и т.п.)
0
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249
08.02.2014, 18:00  [ТС] 4
Буду очень признателен. Заинтересовался акцесом (возможностями базы данных), но на начальном этапе имею очень общие представления о построении. Раньше все таблицы вел в экселе.
0
Модератор
Эксперт MS Access
11957 / 4825 / 779
Регистрация: 07.08.2010
Сообщений: 14,138
Записей в блоге: 4
08.02.2014, 18:07 5
я это поняла
--в екселе легко сделать формулы, накопление
--в аксесс-- это сложнее, особенно когда есть суммирование промежуточных данных


аксесс--для более формализованных задач
некоторые вещи непрограммисту легче склепать в ексель
0
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249
08.02.2014, 18:41  [ТС] 6
Цитата Сообщение от shanemac51 Посмотреть сообщение
мое решение
таб1
--ид1
--данные самолета
--наработки на момент поступления самолета в контору, причем не в дата/время, а в нормальном числовом значении

таб2
--ид2
--ид1
--взлет
--посадка
--наработка в часах числом(здесь допустима денормализация, чтобы не возится с минутами /секундами

сосчитать накопление для некого отчета--не проблема
причем бывает неоднократная правка данных(незапланированные посадки, прогрев системы и т.п.)
Если взлет и посадка в формате дата/время, а общая наработка в числовом выражении, как в этом случае прибавлять разницу: взлет-посадка к общей наработке?
0
Эксперт MS Access
2833 / 1375 / 215
Регистрация: 13.05.2011
Сообщений: 4,217
08.02.2014, 19:36 7
Если по простому (очень муторно), то можно в запросе сделать отдельные поля вычисляющие часы полета и отдельно поле вычисляющее минуты полета. Сложить их нет проблем. В этих полях очень много зависимостей. Рассмотрим вариант:
Вылет Прилет
10:50 12:30
Сами видете, что простыми вычислениями не обойтись. Поэтому я деляю отдельно поля (по другому не умею):
Часы_полета Мин_полета
1 40
А в этих полях стоят зависимости: если минуты больше, то, если минуты меньше, то и т.д.
Поля потом без проблем складываются и выкладываются в любом виде.
Обычно выкладываю окончательный пример, сейчас запрос доведен не до конца. Главное наверное дать идею, а далее сами. Поможем.
Вложения
Тип файла: rar НАРАБОТКА1.rar (42.4 Кб, 9 просмотров)
0
Эксперт MS Access
2833 / 1375 / 215
Регистрация: 13.05.2011
Сообщений: 4,217
08.02.2014, 19:40 8
Все эти сложности, конечно-же, если вы хотите только проставлять время взлета и время посадки. Все остальное по моему должна считать машина. Если наработку будете проставлять вручную, то это не верное решение. Наработка должна вычисляться автоматом.
1
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249
08.02.2014, 19:53  [ТС] 9
Цитата Сообщение от Вячеслав Я Посмотреть сообщение
Все эти сложности, конечно-же, если вы хотите только проставлять время взлета и время посадки. Все остальное по моему должна считать машина. Если наработку будете проставлять вручную, то это не верное решение. Наработка должна вычисляться автоматом.
Да верно в моих эксель таблицах так и происходит, проставляются: дата, лист журнала, регистационный номер самолета, взлет и посадка, все остальное в автомате. Но общая наработка должна быть на каждый рейс, такая же наработка вычисляется на каждый двигатель. На счет разделения часов и минут - не плохая идея, думаю стоит рассмотреть.
0
Эксперт MS Access
2833 / 1375 / 215
Регистрация: 13.05.2011
Сообщений: 4,217
08.02.2014, 20:27 10
Цитата Сообщение от ac1-caesar Посмотреть сообщение
общая наработка должна быть на каждый рейс, такая же наработка вычисляется на каждый двигатель
ac1-caesar. Когда получите окончательно часы по рейсу, то далее с ними можно делать все, что угодно.

Не по теме:

Именно так я сделал учет отгулов, а там такая каша, как с рейсами, только хуже есть еще увеличивающий коэффициент. И если 45 мин умножить на коэф 2, то должно получиться 1 час 30 минут (у меня в разных полях).

0
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249
08.02.2014, 22:59  [ТС] 11
Понял суть идеи разделения часов и минут. Но время полета вычислить можно в запросе и в формате дата/время затем перевернуть в числовое выражение. Разместил поле "общую наработку" на момент поступления в таблице "данные_самолета", как уже подсказали.
Дата вылета и посадки, как мне кажется, здесь не нужна, так как самолет делает рейсы длительностью не больше 5 часов.
Но все-таки как при этом складывать в запросах "общую наработку" цепляясь за "общую наработку на момент поступления" из таблицы "данные_самолета" и прибавляя к этому время полета крайнего рейса???
По поводу времени которое перескакивает например: взлет в 23:50 минус посадка в 02:30 получается 21:20. В экселе это решается просто: взлет 23:50 минус посадка 26:30 и все работает. Как это обойти?
Вложения
Тип файла: rar НАРАБОТКА2.rar (38.8 Кб, 7 просмотров)
0
Эксперт MS Access
2833 / 1375 / 215
Регистрация: 13.05.2011
Сообщений: 4,217
08.02.2014, 23:40 12
А вот как раз для этого и нужна дата посадки. Делаю пример.
0
Эксперт MS Access
2833 / 1375 / 215
Регистрация: 13.05.2011
Сообщений: 4,217
09.02.2014, 00:09 13
Примерно сделал, но здесь не все условия (их много). Рассмотрел ваш вариант перелета через 0 часов и некоторые варианты полета не более суток. Постарайтесь поймать мою мысль. Дата посадки нужна. А вдруг полет более двух суток (такое возможно). К тому же надо учесть перелет из 31.01.2014 например в день 01.02.2014 (т.е. влет в новый месяц)
Вложения
Тип файла: rar НАРАБОТКА3.rar (43.7 Кб, 12 просмотров)
1
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249
09.02.2014, 22:10  [ТС] 14
Цитата Сообщение от Вячеслав Я Посмотреть сообщение
Примерно сделал, но здесь не все условия (их много). Рассмотрел ваш вариант перелета через 0 часов и некоторые варианты полета не более суток. Постарайтесь поймать мою мысль. Дата посадки нужна. А вдруг полет более двух суток (такое возможно). К тому же надо учесть перелет из 31.01.2014 например в день 01.02.2014 (т.е. влет в новый месяц)
Согласен, спасибо! Но честно скажу с общей наработкой пока мыслей нет. Может завтра будет лучше...

Добавлено через 21 час 44 минуты
А как быть с полями "добавление масла в двигатель" с точки зрения нормализации? Нужно ли эти поля выводить в отдельную таблицу?
0
Эксперт MS Access
2833 / 1375 / 215
Регистрация: 13.05.2011
Сообщений: 4,217
09.02.2014, 22:48 15
Я считаю, что не надо. Вот только вопрос: масло заливается перед полетом или после него. Сейчас получается, что техобслуживание происходит после полета (что в принципе правильно), т.к. мы знаем время вылета и посадки. А значит берем самолет после рейса такого-то и записываем в журнал все те работы, которые были произведены. Считаю, что в отдельную таблицу записывать не надо.

Добавлено через 16 минут
ac1-caesar,
0
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249
09.02.2014, 22:51  [ТС] 16
Вячеслав, подскажите как сделать чтобы в таблице НАРАБОТКА, поле регистрационный номер самолета был не код из таблицы данные самолета 3,2,1, а реальный номер - RA-292. ... Понимаю что должен быть столбец подстановки, но не получается.
0
Эксперт MS Access
2833 / 1375 / 215
Регистрация: 13.05.2011
Сообщений: 4,217
09.02.2014, 23:07 17
ac1-caesar, ни как. В таблице в полях подстановки должны быть коды (правило такое, которое оспаривать не надо, хотя можно, но потом по моему будет сложнее). Просматривать данные надо не в таблице, а в запросе. Смотрите запрос Регистрационный_номер.
Вложения
Тип файла: rar НАРАБОТКА4.rar (45.5 Кб, 4 просмотров)
1
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249
09.02.2014, 23:12  [ТС] 18
Я почему спросил, потому что планируется сделать форму ввода данных именно из таблицы НАРАБОТКА. Может у меня не верный ход мыслей???
0
Эксперт MS Access
2833 / 1375 / 215
Регистрация: 13.05.2011
Сообщений: 4,217
09.02.2014, 23:21 19
Ход правильный. Так и надо. В форме в поле со списком Регистрационный_номер_самолета в Окне свойств выберете Число столбцов - 2 (код и рег № самолета), а ширина столбцов соответственно 0 и хватит 3 см.
Между делом сделал уже. Посмотрите.

Извеняюсь, но я пошел бай-бай!
На остальные вопросы отвечу позже, если кто нибудь не ответит. Спокойной ночи.
Вложения
Тип файла: rar НАРАБОТКА5.rar (54.8 Кб, 12 просмотров)
1
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249
10.02.2014, 14:38  [ТС] 20
Цитата Сообщение от Вячеслав Я Посмотреть сообщение
Я считаю, что не надо. Вот только вопрос: масло заливается перед полетом или после него. Сейчас получается, что техобслуживание происходит после полета (что в принципе правильно), т.к. мы знаем время вылета и посадки. А значит берем самолет после рейса такого-то и записываем в журнал все те работы, которые были произведены. Считаю, что в отдельную таблицу записывать не надо.

Добавлено через 16 минут
ac1-caesar,
В моем случае поля "заправка масла в двигатель" получается - двигатель 1, двигатель 2, но может быть и двигатель 3, двигатель 4 еще и двигатель (вспомогательная силовая установка). Не противоречит ли это правилам нормализации?

Добавлено через 1 минуту
Цитата Сообщение от Вячеслав Я Посмотреть сообщение
Ход правильный. Так и надо. В форме в поле со списком Регистрационный_номер_самолета в Окне свойств выберете Число столбцов - 2 (код и рег № самолета), а ширина столбцов соответственно 0 и хватит 3 см.
Между делом сделал уже. Посмотрите.

Извеняюсь, но я пошел бай-бай!
На остальные вопросы отвечу позже, если кто нибудь не ответит. Спокойной ночи.
Спокойной ночи!

Добавлено через 15 часов 10 минут
Вячеслав Я, похоже кроме Вас на форуме access никто больше не участвует
0
10.02.2014, 14:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.02.2014, 14:38
Помогаю со студенческими работами здесь

Нормализация значений поля таблицы
Добрый день. Столкнулся с проблемой: Имеется таблица, для ввода данных пользователем....

Нормализация таблицы и составить ER-модель!
Предметная область: Университет Основные объекты: Преподователь: ФИО, кафедра, должность,...

Функциональные зависимости и нормализация таблицы Материалы
Всем привет, нужна ваша помощь, чтоб корректно описать множество функциональных зависимостей...

Нормализация БД, две связанные таблицы. А что дальше?
Здравствуйте. Помогите разобраться с задачкой Есть две таблицы РАБОТНИКИ и КОМПАНИИ (названия...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru