如何在SQL中将子类连接到超类?

时间:2014-03-12 02:46:59

标签: sql database relational-database rdbms

我们有一个支付类型实体作为超类。我们有现金和卡作为子类。如果我们要在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 个答案:

答案 0 :(得分:0)

由于您不需要额外的信息,不同的现金前付款,您可以使用一列而不是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数据类型:卡和现金。