powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Помогите с проектированием таблиц
1 сообщений из 1, страница 1 из 1
Помогите с проектированием таблиц
    #39896546
StarDestroyer89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. У меня мало опыта в проектировании баз данных, поэтому нужна помощь в реализации задачи

Есть база по грузоперевозкам - сервер Microsoft SQL Server 2016

Есть данные по внутренним отправкам - это уникальная связка поставка-перевозчик-дата отгрузки - дата доставки.
Отдельно разносятся затраты по счетам от перевозчиков за внутренним отправку.

Перевозчиков несколько - я допускаю, что номера счетов и внешние номера отправок у разных перевозчиков могут совпадать...

Стоит задача автоматизировать работу по разнесению затрат от перевозчиков между внутренними отгрузками

Условия задачи:
1) Сначала пользователи получают информацию по внешним номерам отправок для каждого перевозчика и присваивают их внутренним отгрузкам.

2) После этого пользователи получают детализации с затратами для каждого внешнего номера перевозчика и номера счетов от перевозчиков (встречаются ситуации когда один внешний номер перевозчика фигурирует в нескольких счетах)

Допускается, что не все затраты будут проставляться таким способом, а только часть(оставшуюся часть пользователи заполнят руками)


Спроектировал таблицы - пример упрощенный для наглядности. Меня смущает следующий момент, что мне приходится ссылаться на таблицу Carriers из разных таблиц(логически связанных) для отслеживания уникальности записи ... Мне кажется, что я неправильно спроектировал таблицы и связи между ними.Хотел бы услышать мнение опытных разработчиков, по поводу данного решения...


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
create schema main;

Create table main.Carriers
(Id BIGINT NOT NULL IDENTITY(1,1) PRIMARY KEY,
Name NVARCHAR(255) NOT NULL
Constraint AK_Carriers UNIQUE(Name) 
);

go;

Create table main.Deliveries
(Id BIGINT NOT NULL IDENTITY(1,1) PRIMARY KEY,
Delivery NVARCHAR(255) NOT NULL
Constraint AK_Deliveries UNIQUE(Delivery) 
);

go;

Create table main.Transportations
(Id BIGINT NOT NULL IDENTITY(1,1) PRIMARY KEY,
ShipDate DATE NOT NULL,
DeliveryDate DATE NOT NULL,
DeliveryId  BIGINT NOT NULL,
CarrierId BIGINT NOT NULL,
CarrierDeliveryId BIGINT NULL,
Constraint FK_Transportations_1 foreign key(DeliveryId) References main.Deliveries(Id),
Constraint FK_Transportations_2 foreign key(CarrierId) References main.Carriers(Id),
Constraint FK_Transportations_3 foreign key(CarrierDeliveryId) References main.CarrierDeliveries(Id),
Constraint AK_Transportations UNIQUE(ShipDate,DeliveryDate,DeliveryId,CarrierId ) 
);

go;

Create table main.TransportationCosts
(Id BIGINT NOT NULL IDENTITY(1,1) PRIMARY KEY,
TransportationId BIGINT NOT NULL,
CarrierInvoiceId BIGINT NULL,
Cost FLOAT NULL
Constraint FK_TransportationCosts_1 foreign key(TransportationId) References main.Transportations(Id),
Constraint AK_TransportationCosts UNIQUE(TransportationId ,CarrierInvoiceId ) 
);

go;

Create table main.CarrierInvoices
(Id BIGINT NOT NULL IDENTITY(1,1) PRIMARY KEY,
Invoice NVARCHAR(255) NOT NULL,
CarrierId BIGINT NOT NULL,
InvoiceDate DATE NULL,
InvoiceDate2 DATE NULL,
IsChecked TINYINT NULL
Constraint FK_CarrierInvoices foreign key(CarrierId) References main.Carriers(Id),
Constraint AK_CarrierInvoices UNIQUE(Invoice,CarrierId,InvoiceDate) 
)

go

Create table main.CarrierDeliveries
(Id BIGINT NOT NULL IDENTITY(1,1) PRIMARY KEY,
Delivery NVARCHAR(255) NOT NULL,
CarrierId BIGINT NOT NULL
Constraint FK_CarrierDeliveries foreign key(CarrierId) References main.Carriers(Id),
Constraint AK_CarrierDeliveries UNIQUE(Delivery,CarrierId) 
)


Create table main.CarrierInvoiceDeliveryCosts
(
CarrierInvoiceId  BIGINT NOT NULL,
CarrierDeliveryId BIGINT NOT NULL,
Cost FLOAT NOT NULL
Constraint FK_CarrierInvoiceDeliveryCosts_1 foreign key(CarrierInvoiceId) References main.CarrierInvoices(Id),
Constraint FK_CarrierInvoiceDeliveryCosts_2 foreign key(CarrierDeliveryId) References main.CarrierDeliveries(Id),
Constraint AK_CarrierInvoiceDeliveryCosts UNIQUE(CarrierInvoiceId,CarrierDeliveryId  ) 

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


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