假设有两种产品X和Y,X的主键是A,B和C,而Y的主键是A和D。我应该把它们放在同一张表里吗?为什么我应该这样做,如果我不应该这样做,那为什么呢?
我目前将它们放在两个不同的表中,但一些同事建议它们属于同一个表。我的问题是,我应该考虑将它们放在同一个表中,还是继续使用不同的表?
下面我给出了上述情况的示例表。
CREATE TABLE `product_type_b` (
`PRODUCT_CODE` VARCHAR(50) NOT NULL,
`COMPONENT_CODE` VARCHAR(50) NOT NULL,
`GROUP_INDICATOR` VARCHAR(50) NULL DEFAULT NULL,
`RECORD_TIMESTAMP` DATE NULL DEFAULT NULL,
PRIMARY KEY (`PRODUCT_CODE`, `COMPONENT_CODE`)
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
;
CREATE TABLE `product_type_a` (
`PRODUCT_CODE` VARCHAR(50) NOT NULL,
`CHOICE_OF_COVER` VARCHAR(50) NOT NULL,
`PLAN_TYPE` VARCHAR(50) NOT NULL,
`RECORD_TIMESTAMP` DATE NULL DEFAULT NULL,
`PRODUCT_TENURE` INT(11) NULL DEFAULT NULL,
PRIMARY KEY (`PRODUCT_CODE`, `CHOICE_OF_COVER`, `PLAN_TYPE`)
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
;
正如您所看到的,有一些字段对于两个表都不是通用的,但它们是主键的一部分。还有一些对两个表都不通用的其他字段。
以下是正在考虑的系统的更大图景。
我想要有良好的读写速度,而不会牺牲太多。那么我应该继续这个设计吗?如果不是,应该实施什么设计?
https://stackoverflow.com/questions/56995719
复制相似问题