Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 关系数据库设计-为付款类型创建实体类?_Mysql_Oracle_Entity Framework_Rdbms - Fatal编程技术网

Mysql 关系数据库设计-为付款类型创建实体类?

Mysql 关系数据库设计-为付款类型创建实体类?,mysql,oracle,entity-framework,rdbms,Mysql,Oracle,Entity Framework,Rdbms,我目前正在为一个项目设计一个关系数据库 我不确定做这件事的最佳方式,我会尽可能地解释清楚 如果我有一个实体: SALE(SALE_ID, SALE_TYPE, SALE_AMOUNT, CUSTOMER_ID) 以及 如果每个实体中的购买类型和销售类型只能是现金或卡。。 是否值得使用此结构创建一个名为的新实体,例如交易类型 TRANSACTION\u TYPE(TYPE\u ID,PAYMENT\u TYPE) 然后将购买类型和销售类型替换为类型ID作为另两个实体的外键 提前感谢您的回复:)我

我目前正在为一个项目设计一个关系数据库

我不确定做这件事的最佳方式,我会尽可能地解释清楚

如果我有一个实体:

SALE(SALE_ID, SALE_TYPE, SALE_AMOUNT, CUSTOMER_ID)
以及

如果每个实体中的
购买类型
销售类型
只能是现金。。 是否值得使用此结构创建一个名为
的新实体,例如交易类型

TRANSACTION\u TYPE(TYPE\u ID,PAYMENT\u TYPE)

然后将
购买类型
销售类型
替换为
类型ID
作为另两个实体的外键


提前感谢您的回复:)我希望我解释得足够好,并且使用了正确的术语

如您所述,付款类型为:

  • 现金
  • 卡片
因此,您可以将
SALE\u TYPE
PURCHASE\u TYPE
的数据类型设置为
ENUM

如果支付类型的数量会更大,那么最好像您所说的那样将类型保存在单独的表中,并用外键约束替换类型字段

因此,使用
enum
数据类型,您的
SALE
表如下所示:

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
;
对于
采购
表格,也应如此

请注意,
SALE\u TYPE
enum('Cash','Card')字符集utf8 COLLATE utf8\u general\u ci NULL DEFAULT NULL,


总之,,我倾向于保持原始结构,在
*\u type
字段
的数据类型上略有变化,即ENUM

,因为类型的数量本质上是恒定的,所以可以使用
ENUM
数据类型。有没有一种方法可以在概念和逻辑设计阶段使用“ENUM”来表示这一点在这一点上,我需要做的就是交付。还是我应该保持原来的结构?Fwiw,我会有一个单独的支付类型表。这允许您在将来添加付款方式(例如PayPal),而无需修改您的结构。
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
;