关系数据库设计 - 为付款类型创建实体 Class?
Relational Database Design - Create an Entity Class for Payment Type?
我目前正在为我正在进行的项目设计一个关系数据库。
我不确定最好的方法,我会尽力解释。
如果我有实体:
SALE(SALE_ID, SALE_TYPE, SALE_AMOUNT, CUSTOMER_ID)
并且,
PURCHASE(PURCHASE_ID, PURCHASE_TYPE, PURCHASE_AMOUNT, CUSTOMER_ID)
如果每个实体中的PURCHASE_TYPE
和SALE_TYPE
只能是Cash OR Card..
如果值得创建一个新的实体,要求 E.g. Transaction Type
具有这种结构
TRANSACTION_TYPE(TYPE_ID, PAYMENT_TYPE)
然后用 TYPE_ID
替换 PURCHASE_TYPE
和 SALE_TYPE
作为其他 2 个实体的外键?
提前感谢您的任何回复 :) 我希望我解释得足够好并使用了正确的术语。
如您所述,付款类型为:
- 现金
- 卡片
所以您可以更喜欢 SALE_TYPE
或 PURCHASE_TYPE
的数据类型 AS ENUM
.
如果支付类型的数量会更多,那么最好将类型保持在单独的 table 中,如您所说,并将类型字段替换为外键约束。
所以 enum
数据类型你的 SALE
table 看起来像:
CREATE TABLE `SALE` (
`SALE_ID` int(11) NOT NULL AUTO_INCREMENT ,
`SALE_TYPE` enum('Cash','Card') CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`SALE_AMOUNT` decimal(18,4) NULL DEFAULT NULL ,
`CUSTOMER_ID` int(11) NULL DEFAULT NULL ,
PRIMARY KEY (`SALE_ID`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=1
ROW_FORMAT=COMPACT
;
PURCHASE
table.
也应如此
注意 SALE_TYPE
enum('Cash','Card') CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
简而言之,我会继续保留原始结构,在您的 *_Type
字段 i.e. ENUM
.
的数据类型中稍作更改
我目前正在为我正在进行的项目设计一个关系数据库。
我不确定最好的方法,我会尽力解释。
如果我有实体:
SALE(SALE_ID, SALE_TYPE, SALE_AMOUNT, CUSTOMER_ID)
并且,
PURCHASE(PURCHASE_ID, PURCHASE_TYPE, PURCHASE_AMOUNT, CUSTOMER_ID)
如果每个实体中的PURCHASE_TYPE
和SALE_TYPE
只能是Cash OR Card..
如果值得创建一个新的实体,要求 E.g. Transaction Type
具有这种结构
TRANSACTION_TYPE(TYPE_ID, PAYMENT_TYPE)
然后用 TYPE_ID
替换 PURCHASE_TYPE
和 SALE_TYPE
作为其他 2 个实体的外键?
提前感谢您的任何回复 :) 我希望我解释得足够好并使用了正确的术语。
如您所述,付款类型为:
- 现金
- 卡片
所以您可以更喜欢 SALE_TYPE
或 PURCHASE_TYPE
的数据类型 AS ENUM
.
如果支付类型的数量会更多,那么最好将类型保持在单独的 table 中,如您所说,并将类型字段替换为外键约束。
所以 enum
数据类型你的 SALE
table 看起来像:
CREATE TABLE `SALE` (
`SALE_ID` int(11) NOT NULL AUTO_INCREMENT ,
`SALE_TYPE` enum('Cash','Card') CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`SALE_AMOUNT` decimal(18,4) NULL DEFAULT NULL ,
`CUSTOMER_ID` int(11) NULL DEFAULT NULL ,
PRIMARY KEY (`SALE_ID`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=1
ROW_FORMAT=COMPACT
;
PURCHASE
table.
注意 SALE_TYPE
enum('Cash','Card') CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
简而言之,我会继续保留原始结构,在您的 *_Type
字段 i.e. ENUM
.