powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / БД по контролю движения объектов
5 сообщений из 5, страница 1 из 1
БД по контролю движения объектов
    #38636156
gema
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть контейнера. Она отправляются потребителю и потом возвращаются назад. Задача контроль за контейнерами. То есть необходимо отслеживать вернулись ли контейнера от покупателя и что мы имеем в наличии.Логично ли сделать такую структуру таблиц?
Таблица движения
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE TABLE container.ac_moving
(
  id serial NOT NULL,
  container_id integer NOT NULL,
  otpravka_id integer NOT NULL,
  vozvrat_id integer,
  CONSTRAINT moving_pkey PRIMARY KEY (id),
  CONSTRAINT container1 FOREIGN KEY (container_id)
      REFERENCES container.ac_container (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT shape2 FOREIGN KEY (otpravka_id)
      REFERENCES container.ac_shape (id) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE RESTRICT,
  CONSTRAINT shape3 FOREIGN KEY (vozvrat_id)
      REFERENCES container.ac_shape (id) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE RESTRICT
)


И описание данных по движению (отправка/возврат)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE TABLE container.ac_shape
(
  id serial NOT NULL,
  shape_num character varying(50) NOT NULL,
  shape_type character(3) NOT NULL,
  d date NOT NULL,
  transport_id integer NOT NULL, -- 1-жд 2-автотранспорт
  num_transp character varying(50),
  num_naclad character varying(50),
  num_part character varying(50),
  contragent_id integer NOT NULL,
  status character(1) DEFAULT 'Y'::bpchar,
  buyer_id integer,
  CONSTRAINT shape_pkey PRIMARY KEY (id),
  CONSTRAINT contragent3 FOREIGN KEY (contragent_id)
      REFERENCES container.ac_contragent (id) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE RESTRICT,
  CONSTRAINT shape_type CHECK (shape_type = ANY (ARRAY['otv'::bpchar, 'voz'::bpchar])),
  CONSTRAINT transport CHECK (transport_id = ANY (ARRAY[1, 2]))
)
...
Рейтинг: 0 / 0
БД по контролю движения объектов
    #38636232
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gema,

Упрощенный макет (сделать имена английскими, добавить недостающие поля):
1. Контейнер – все контейнеры.
2. Потребитель – все покупатели + владелец этих контейнеров .
3. Движение – собственно движуха.

Первоначально вводим исходные данные:
- Все контейнеры
- Все потребители + заносим себя в потребители.
- Пытаемся заполнить таблицу Движение реальными данными на сегодня: Делаем связку Контейнер > Потребитель (у кого на данный момент реально этот контейнер) + даты и отправитель для истории (по возможности) – если таких данных нет – то отправителя чтоб не париться – вбиваем себя и даты ставим текущего дня… Главное правильно сделать связку – что где сейчас лежит…

Далее алгоритм простой:
– добавляем новые записи в таблицу Движение (так описывается движение) по реальному движению контейнеров, старые записи не удаляем - это история.
- Где контейнер сейчас ? – Ищем самую старшую дату получения контейнера и берем ИД Потребителя…
- От кого получен ? Там же дата отправления и ИД_Отправителя (соответствует записи из таблицы Потребитель)
- История контейнера, Потребителя и Движуха за период? Думаю без проблем, заблудиться в трех соснах не возможно…
На экспромт критика приветствуется… может чего и не доглядел, а может и не додумал....
...
Рейтинг: 0 / 0
БД по контролю движения объектов
    #38636478
gema
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Исходя из условий моей задачи нельзя владельца контейнеров прировнять к покупателю.
Для потребителя мы имеем только факт отправки ему контейнера. Нас не интересует и мы не знаем,когда он его получит.
А для владельца контейнеров мы имеем только факт возврата(получения) контейнера.

Потребетиль - только дата отправки ему.
Владелец - только дата получения назад контейнера.
...
Рейтинг: 0 / 0
БД по контролю движения объектов
    #38636530
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gemaИсходя из условий моей задачи нельзя владельца контейнеров прировнять к покупателю.
об этом кроме Вас никто не будет знать...
gemaДля потребителя мы имеем только факт отправки ему контейнера. Нас не интересует и мы не знаем,когда он его получит.
удалите из таблицы дату получения
gemaА для владельца контейнеров мы имеем только факт возврата(получения) контейнера.
Добавьте дату возврата в Движение (она будет не пустая только в том случае, когда ИД_Потребителя это вдаделец контейнера)
...
Рейтинг: 0 / 0
БД по контролю движения объектов
    #38636556
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gema,

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


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