Вы можете сделать это с тремя таблицами, как показано ниже.Если вы хотите добавить данные о пассажирах, вам понадобится четвертая таблица «Пассажир»
Значение в столбце «Числа» можно рассчитать из базовых данных с помощью SQL COUNT, например, так:
SELECT COUNT(passengerNr)
FROM Departure
WHERE portCode = "EL_OGRPIR";
Чтобы получить данные по годам, вы просто добавляете что-то вроде [И дата = "2011"] (зависит от того, как вы решили хранить данные о дате.)
Если мое решение поможет,пожалуйста, нажмите на значок голосования.
Вот логическое представление таблиц.
Вот SQL DDL, который вы использовали бы для генерации таблиц в базе данных.(например, вы можете вырезать и вставить этот SQL на панель «Новый запрос» в SQL Server Management Studio.)
CREATE SCHEMA Trade
GO
CREATE TABLE Trade.Port
(
portCode nchar(15) NOT NULL,
countryCode nchar(2) NOT NULL,
portName nchar(50) NOT NULL,
type nchar(10) CHECK (type IN (N'SeaPort', N'AirPort', N'LandBorder')) NOT NULL,
CONSTRAINT Port_PK PRIMARY KEY(portCode)
)
GO
CREATE TABLE Trade.Departure
(
passengerNr int NOT NULL,
portCode nchar(15) NOT NULL,
"date" datetime NOT NULL,
isInternational bit,
CONSTRAINT Departure_PK PRIMARY KEY(passengerNr, portCode)
)
GO
CREATE TABLE Trade.Arrival
(
passengerNr int NOT NULL,
portCode nchar(15) NOT NULL,
"date" datetime NOT NULL,
isInternational bit,
CONSTRAINT Arrival_PK PRIMARY KEY(passengerNr, portCode)
)
GO
ALTER TABLE Trade.Departure ADD CONSTRAINT Departure_FK FOREIGN KEY (portCode) REFERENCES Trade.Port (portCode) ON DELETE NO ACTION ON UPDATE NO ACTION
GO
ALTER TABLE Trade.Arrival ADD CONSTRAINT Arrival_FK FOREIGN KEY (portCode) REFERENCES Trade.Port (portCode) ON DELETE NO ACTION ON UPDATE NO ACTION
GO