我正在尝试设计一个必须处理5种不同类型订单的数据库,我将要有一个大订单表,其中包含每种类型或订单的字段,但它太大了。
我想到的方式如下所示,每个订单都有一个唯一的ID,下订单的人的ID和order_type表的id,这是订单细节的存储位置。
顺序
ID
user_id(USER.id的外键)
order_date的
order_type2_id(ORDER_TYPE1.id的外键)
order_type3_id(ORDER_TYPE2.id的外键)
order_type4_id(ORDER_TYPE3.id的外键)
order_type5__id(ORDER_TYPE4.id的外键)
order_type6_id(ORDER_TYPE5.id的外键)
order_type1
ID
order_type2
ID
order_type3
ID
order_type4
ID
order_type5
ID
将所有数据存储在一个大表中是否更好并将未使用的字段归零或者我是否在正确的轨道上通过使用单独的表并以某种方式连接它们。正确的方向上的一点很好,因为我觉得我的解决方案不正确。
答案 0 :(得分:0)
在事务方面可能更简单,只有一个表,通常只转换为业务层中的一个对象。如果出于某种原因需要在某个时刻提取所有订单,则不需要加入。如果空间是可变的,那么空区域不会占用太大的空间,固定的区域占据与其宽度相同的空间。
答案 1 :(得分:0)
这是数据库设计和规范化的问题。
您需要回答基本的数据库设计问题,例如:
另外,我建议你追逐一个过于复杂的概念,了解你的终端数据库需要什么。
考虑一下...... 如果5个订单类型的数据结构相同,那么您实际上只需要一个订单类型字段。
order_table
id (primary key BIGINT(10) UNSIGNED NOT NULL AUTO_INCREMENT,)
user_id (foreign key to USER.id BIGINT(10) UNSIGNED NOT NULL)
order_date (DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',)
order_type_id (foreign key to order.type TINYINT(1) UNSIGNED NOT NULL)
通过应用程序代码
处理联接但关键是你没有提供足够的信息来正确评估数据库设计以及如何将规范化应用于表来处理当前Order表超出主机mysql限制的问题(可能考虑不同的主机或VPS托管选项)。
额外阅读https://www.codeproject.com/articles/359654/important-database-designing-rules-which-i-fo