Форум программистов, компьютерный форум, киберфорум
Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Нарушитель
430 / 180 / 41
Регистрация: 13.07.2017
Сообщений: 4,582
Записей в блоге: 14

Как правильно создать несколько одинаковых полей?

11.03.2020, 12:08. Показов 924. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Допустим, есть некоторая база данных. Допустим, о кораблях и грузах (такая в учебнике). Допустим, один корабль может перевозить несколько партий груза. Для этого можно в таблице Shipment создать поля, к примеру, Consignment1, Consignment2 и Consignment3. Но это приводит к следующим аномалиям:
1. Если груз аннулируется и строка, связанная с грузом, удаляется из отношения, то вместе с ней удаляются все сведения о партиях груза на борту судна.
2. Если на склад прибывает новая партия груза, и она еще не включена в состав груза, подлежащего отправке, то сведения о партии заносить некуда.
3. Необходимо вводить ограничение: в грузе не может быть более трех партий.
И учебник предлагает создать подчиненную таблицу Consignment и заносить туда сведения о партиях груза. Но как СВЯЗАТЬ эти две таблицы, в учебнике не написано, нарисована только связь "один ко многим". А какое поле в таблице Shipment должно соответствовать этим "многим", чтобы число партий было неограниченно и чтобы запросы могли обращаться к каждой партии по отдельности? Какой тип оно должно иметь? Как это узнать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.03.2020, 12:08
Ответы с готовыми решениями:

Как создать несколько одинаковых компонентов?
Здравствуйте! Как известно, в Delphi нельзя создать два компонента с одинаковыми именами. У меня появилась проблема. Я делаю что-то вроде...

Как создать несколько одинаковых объектов?
С++ , SFML. Пожалуйста, покажите на каком-нибудь простейшем примере, как отрисовать один и тот же спрайт из двух разных точек. И в идеале...

Как программно создать несколько текстовых полей на странице?
Как программно создать несколько текстовых полей на странице? На странице окно со скролом, а внутри располагаются несколько текстовых...

13
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
11.03.2020, 12:42
Корабли - это справочник кораблей, партии груза - не подчиненная корабля. Корабль же единственную перевозку партий груза совершает.
Нужны, как минимум, четыре таблицы. Что-то вроде: Корабли (К_Код, К_Наименование, ...), Грузы (Г_Код, Г_Наименование, ...), Перевозки (П_Код, П_Дата, К_Код, ...), Перевозки_Грузы (ПГ_Код, Г_Код, ПГ_Количество, ...)
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,933
Записей в блоге: 4
11.03.2020, 12:43
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Для этого можно в таблице Shipment создать поля, к примеру, Consignment1, Consignment2 и Consignment3.
это признак того, что база не нормализована до 3НФ

это принято делать по принципу накладной - парой таблиц
головная - накладная: код_накл, дата,код_корабля, код_кому, код_сотрудника_оформителя_документа
табличная -состав накладной: код состава_накладной, код_накл, код товара, количество.....

и несколько справочников
- корабли
- сотрудники
- клиенты
- единицы измерения
- товары
....
0
Нарушитель
430 / 180 / 41
Регистрация: 13.07.2017
Сообщений: 4,582
Записей в блоге: 14
11.03.2020, 12:48  [ТС]
Цитата Сообщение от shanemac51 Посмотреть сообщение
это принято делать по принципу накладной - парой таблиц
Дело не в этом. Допустим, по принципу накладной. Но как сделать, чтобы эта накладная могла предназначаться неограниченному количеству "кому", и чтобы к каждому из них в запросах можно было обращаться по отдельности?
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
11.03.2020, 12:53
ТС не читатель? Еше раз (немного изменив):
Цитата Сообщение от ltv_1953 Посмотреть сообщение
Перевозки (П_Код, П_Дата, К_Код, ...), Перевозки_Грузы (ПГ_Код, П_Код, Г_Код, ПГ_Количество, ...)
1
Нарушитель
430 / 180 / 41
Регистрация: 13.07.2017
Сообщений: 4,582
Записей в блоге: 14
11.03.2020, 12:57  [ТС]
ltv_1953, спасибо, попробую, только не ругайтесь.

Добавлено через 1 минуту
ltv_1953, а в какую вторую таблицу записывается ПГ_Код (кроме той, где это первичный ключ)?
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
11.03.2020, 13:10
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
ПГ_Код
Это ее первичный ключ (если груз в перевозке уникален, то можно и без него обойтись, а сделать составной ключ (П_Код, Г_Код)).
0
Нарушитель
430 / 180 / 41
Регистрация: 13.07.2017
Сообщений: 4,582
Записей в блоге: 14
11.03.2020, 13:12  [ТС]
Цитата Сообщение от ltv_1953 Посмотреть сообщение
Это ее первичный ключ
Я понимаю, что первичный ключ, но с какой другой таблицей СВЯЗАН этот первичный ключ?
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
11.03.2020, 13:15
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
но с какой другой таблицей СВЯЗАН этот первичный ключ?
Это еще зачем? Первичный ключ не обязан быть внешним ключом для других таблиц, он должен только однозначно идентифицировать запись таблицы.
0
Нарушитель
430 / 180 / 41
Регистрация: 13.07.2017
Сообщений: 4,582
Записей в блоге: 14
11.03.2020, 13:17  [ТС]
Цитата Сообщение от ltv_1953 Посмотреть сообщение
Первичный ключ не обязан быть внешним ключом для других таблиц
То есть таблица Перевозки_Грузы корневая?
0
 Аватар для VinniPuh
9127 / 6129 / 593
Регистрация: 27.03.2013
Сообщений: 19,972
11.03.2020, 13:18
Наверное ещё нужны -Порты или - Получатели.
А то грузы кому то, надо доставлять.
Или их просто вывозят и в море потом выкидывают через борт?
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
11.03.2020, 13:24
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
То есть таблица Перевозки_Грузы корневая?
Не знаю такого термина. Это таблица фактов, подчиненная Перевозкам и Грузам.
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
11.03.2020, 16:27
Etyuhibosecyu,
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
И учебник предлагает создать подчиненную таблицу Consignment и заносить туда сведения о партиях груза. Но как СВЯЗАТЬ эти две таблицы, в учебнике не написано, нарисована только связь "один ко многим".
это достигается вводом в таблицу Consignment поля Shipment_id, которое является внешним ключом (Foreign key) на поле id таблицы Shipment, и, как заметили, это поле не является первичным ключом.
0
Нарушитель
430 / 180 / 41
Регистрация: 13.07.2017
Сообщений: 4,582
Записей в блоге: 14
11.03.2020, 16:30  [ТС]
AndreyVorobey, я уже во всем разобрался, тема завершена.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.03.2020, 16:30
Помогаю со студенческими работами здесь

Как быстро и правильно создать ИМ за несколько месяцев?
Как быстро и правильно создать ИМ за несколько месяцев? Не первый год хочу создать хороший ИМ. Один сайт нам создавала студия под...

Как правильно создать несколько потоков, вызывающий одну и ту же функцию?
Пробовал так: ... #include "process.h" ... __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { ...

Как заполнить несколько полей
Добрый день! Хочу сделать базу данных клиентов в Access. Например есть две таблицы: 1-я - "перечень клиентов" с полями: код...

Как Парсить несколько одинаковых XML тегов? (BeautifulSoup)
Имеется XML по типу: <players> <player> <level>5</level> <kills>5</kills> <deaths>5</deaths> <assists>7</assists> ...

Как сделать несколько одинаковых слайд шоу на странице
Здравствуйте. Воспользовался этим примером слайд шоу. http://jquery.malsup.com/cycle/basic.html Но если сделать несколько блоков <div...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru