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