业务场景:
订单拆分。
sql示例如下:
DROP TABLE IF EXITS `customer_order`;
CREATE TABLE IF NOT EXISTS `customer_order`
(
`id` VARCHAR(32),
`split_no` INT,
`is_split` tinyint
);
ALTER TABLE `customer_order` ADD CONSTRIANT PK_CUSTOMER_ORDER PRIMARY KEY
(`id`,`split_no`);持久化框架: Hibernate
期望场景:
id 是自动生成的,但是split_no是可配置的。Hibernate 映射文件示例:
<composite-id name="id" class="com.bingsoft.data.vo.CustomerOrderId" >
<key-property name="customerOrderId" type="string" >
<column name="customer_order_id" length="32" />
</key-property>
<key-property name="splitNo" type="int">
<column name="split_no" />
</key-property>
<!-- Can I configure Generator Strategy? --> </composite-id>
现收集的意见如下:
(https://forum.hibernate.org/viewtopic.php?p=2347681)
Simply because composite-id are meant to be business keys, not technical one. So they can't be automatically generated.
We regard this as an extremely strange thing to want to do. If you have a generated surrogate key, why not just make it be the primary key?自己的意见是: 逻辑数据库的设计问题以上。求指导。求意见。数据库HibernateSQL
订单拆分。
sql示例如下:
DROP TABLE IF EXITS `customer_order`;
CREATE TABLE IF NOT EXISTS `customer_order`
(
`id` VARCHAR(32),
`split_no` INT,
`is_split` tinyint
);
ALTER TABLE `customer_order` ADD CONSTRIANT PK_CUSTOMER_ORDER PRIMARY KEY
(`id`,`split_no`);持久化框架: Hibernate
期望场景:
id 是自动生成的,但是split_no是可配置的。Hibernate 映射文件示例:
<composite-id name="id" class="com.bingsoft.data.vo.CustomerOrderId" >
<key-property name="customerOrderId" type="string" >
<column name="customer_order_id" length="32" />
</key-property>
<key-property name="splitNo" type="int">
<column name="split_no" />
</key-property>
<!-- Can I configure Generator Strategy? --> </composite-id>
现收集的意见如下:
(https://forum.hibernate.org/viewtopic.php?p=2347681)
Simply because composite-id are meant to be business keys, not technical one. So they can't be automatically generated.
We regard this as an extremely strange thing to want to do. If you have a generated surrogate key, why not just make it be the primary key?自己的意见是: 逻辑数据库的设计问题以上。求指导。求意见。数据库HibernateSQL
那我要把表拆分下吗?
仍以上述业务场景为例:
订单拆分之后的实体对应的数据表设置一个代理主键,然后使用外键关联订单表的主键。又把问题给兜回去了,就此业务场景而言,拆分表应该是不可行的吧。
另请教下:mysql的基本索引方式也是 B+Tree?
非常感谢 rucypli、ACMAIN_CHM的指导与帮助。