Как вы связываете подклассы с суперклассом в SQL?
У нас есть сущность типа оплаты в качестве суперкласса. У нас есть наличные и карта в качестве подклассов. Если бы мы создали эти таблицы в SQL, как бы мы связали подклассы с суперклассом?
CREATE TABLE Transactions
(
transactionID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
customerID INT FOREIGN KEY references LoyaltyCustomers(customerID),
total MONEY,
timePlaced time,
datePlaced date
)
CREATE TABLE Cash
(
cashID INT NOT NULL,
transactionID INT NOT NULL FOREIGN KEY references Transactions(transactionID),
PRIMARY KEY (cashID, transactionID)
)
CREATE TABLE Card
(
cardID INT NOT NULL,
transactionID INT NOT NULL FOREIGN KEY references Transactions(transactionID),
PRIMARY KEY (cardID, transactionID)
)
1 ответ
Поскольку вам не нужна дополнительная информация, которая отличается от наличных платежей по карте, вы можете использовать один столбец вместо 2 дополнительных таблиц
CREATE TABLE Transactions
(
transactionID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
total MONEY,
placed datetime,
[type] tinyint NOT NULL CHECK ([type] IN(1,2))
)
Если type = 1
может быть наличными. type = 2
может быть кредит. Или вы могли бы использовать bit
Тип данных, если у вас есть только 2 типа платежей: карта и наличные.