Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > Создание базы данных в Access


Автор: skorpik 16.6.2010, 07:17
Помогите создать БД по таким условиям:
1) имеется предприятие, у которого неколько поставщиков. У каждого из этих поставщиков есть несколько торговых точек. У каждой из торговых точек есть свои заказы на отгрузки продукции с данного предприятия. Создать БД в Access так, чтобы можно было ввести номер\название поставщика и посмотреть все его торговые точки, а также все его заказы на отгрузку на данную дату либо промежуток дат.

Как связать 2 таблицы (поставщики и торговые точки) мне понятно.
--+-----------------+
1 | Поставщик1 |
2 | Поставщик2 |
3 | Поставщик3 |
4 | Поставщик4 |
--+-----------------+

--+--+------------------------+
1 | 1 | Пункт отгрузки1   |
2 | 1 | Пункт отгрузки2   |
3 | 1 | Пункт отгрузки3   |
4 | 2 | Пункт отгрузки11 |
5 | 2 | Пункт отгрузки12 |
6 | 3 | Пункт отгрузки21 |
7 | 3 | Пункт отгрузки22 |
8 | 3 | Пункт отгрузки23 |
9 | 4 | Пункт отгрузки24 |
--+--+------------------------+
Тут ясно, что можно связать по второму полю второй таблицы - это и есть нфа о номере поставщика.
Не могу сообразить, как сюда прицепить еще заказы на отгрузку. Помогите разобраться. Спасибо!

Автор: Akina 16.6.2010, 07:56
В таблице заказов должны быть ссылки на таблицы поставщиков и точек отгрузки. Если не бывает так, что несколько поставщиков обеспечивают одну и ту же точку - достаточно одной ссылки на поставщика.

Автор: skorpik 16.6.2010, 10:37
т.е. я создаю третью таблицу заказов вида:

s_id   |c_id| p_id|  naimen   |
-------+----+------+------------+
1        |  1  |   1   |заказ111 |
2        |  1  |   1   |заказ111 |
3        |  1  |   2   |заказ123 |
4        |  2  |   1   |заказ211 |
5        |  2  |   1   |заказ212 |
6        |  3  |   1   |заказ311 |
7        |  3  |   1   |заказ312 |
8        |  3  |   2   |заказ321 |
9        |  3  |   3   |заказ331 |
10      |  4  |   1   |заказ411 |
11      |  5  |   1   |заказ511 |
21      |  5  |   2   |заказ521 |

тут s_id - порядковый номер заказа
       c_id - номер клиента
       p_id - номер пункта отгрузки

Причем, 1 и 2 -я таблицы связаны по полю c_id в отношении 1 ко многим - это все работает. Подскажите, как мне связать третью таблицу к этим двум грамотно?
Спасибо за помощь!

Автор: Akina 16.6.2010, 11:51
Бывает ли
Цитата(Akina @  16.6.2010,  08:56 Найти цитируемый пост)
так, что несколько поставщиков обеспечивают одну и ту же точку 

?

Автор: skorpik 16.6.2010, 13:31
Цитата(Akina @  16.6.2010,  08:56 Найти цитируемый пост)
Бывает литак, что несколько поставщиков обеспечивают одну и ту же точку ?


нет, так не бывает. Все верно Вы вначале предположили. Я вот подумал - так плохо у меняполучится, судя по тем примерам таблиц, что я привел. Может нужно еще одно поле ввести в таблицу2, для нумерации пунктов отгрузки для конкретного поставщика?
типа так:

id | p_id |c_id|p_naimen
1  |1      |1     |пункт11
2  |2      |1     |пункт12
3  |3      |1     |пункт13
4  |1      |2     |пункт21
5  |2      |2     |пункт22

где p_id - и есть это новое поле, c_id - номер поставщика, id - порядковый номер заказа? Помогите плиз.

Автор: Akina 16.6.2010, 13:43
Цитата(skorpik @  16.6.2010,  14:31 Найти цитируемый пост)
нет, так не бывает

В таком случае в последней таблице поле поставщика не требуется. Оно определяется через существующую связь точка-поставщик содержимым поля ИД точки поставки.
Цитата(skorpik @  16.6.2010,  14:31 Найти цитируемый пост)
Может нужно еще одно поле ввести в таблицу2, для нумерации пунктов отгрузки для конкретного поставщика?

Нет, это вычисляется по имеющимся данным. Вместо этого следует ввести дату-время отгрузки заказа.

Автор: skorpik 16.6.2010, 16:35
т.е. вот так нужно все делать?
Поставщики
--+-----------------+
1 | Поставщик1 |
2 | Поставщик2 |
3 | Поставщик3 |
4 | Поставщик4 |
--+-----------------+

Точки
--+--+------------------------+
1 | 1 | Пункт отгрузки1   |
2 | 1 | Пункт отгрузки2   |
3 | 1 | Пункт отгрузки3   |
4 | 2 | Пункт отгрузки11 |
5 | 2 | Пункт отгрузки12 |
6 | 3 | Пункт отгрузки21 |
7 | 3 | Пункт отгрузки22 |
8 | 3 | Пункт отгрузки23 |
9 | 4 | Пункт отгрузки24 |
--+--+------------------------+

Заказы
-------+------+------------+--------+
s_id   | p_id |  naimen  |  data  |
-------+------+------------+---------+
1        |   1   |заказ111 |дата1  |
2        |   1   |заказ112 |дата2  |
3        |   2   |заказ123 |дата3  |
4        |   1   |заказ211 |дата4  |
5        |   1   |заказ212 |дата5  |
6        |   1   |заказ311 |дата6  |
7        |   1   |заказ312 |дата7  |
8        |   2   |заказ321 |дата8  |
9        |   3   |заказ331 |дата9  |
10      |   1   |заказ411 |дата10|
11      |   1   |заказ511 |дата11|
21      |   2   |заказ521 |дата12|
-------+------+------------+---------+

В последней таблице убрал поле - номер поставщика, во второй таблице не добавлял поле - номер пункта для конкретного поставщика. Пок каким полям связать таблицы поподробнее плиз?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)