Как вы связываете подклассы с суперклассом в 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 типа платежей: карта и наличные.

Другие вопросы по тегам