我正在设计一个支持POS功能的MYSQL数据库。假设有一个拥有多个地点(多个分支机构)的企业,每个地点都必须被识别为唯一但具有自己的税收,产品,产品组和产品子组,客户等的层次结构。
需要有一个主要位置,其他位置为子位置。
在事务数据库中存储此信息的最佳方法是哪种?我应该使用一个表来存储主位置和子位置,只使用Self Join
来检索层次结构吗?
示例:
StoreID
Sub_StoreID
Store_Name
Sub_StoreID
对于主要位置将为空白,而对于其他位置,它将存储ID
。
或者我应该选择两个表并在下面提到。我应该复制产品的所有表格吗?客户和其他人使其以更好的方式运作。
Primary_Location_Attributes,
Secondary_Location_Attributes,
Association_Primary_Secondary_locations
如果问题不清楚,请告诉我,以便我可以尝试以不同的方式解释。
答案 0 :(得分:1)
不需要在另一个表中,您可以创建parent_id
属性:
CREATE TABLE offices(
id INT PRIMARY KEY AUTO_INCREMENT,
parent_id INT REFERENCES offices(id),
...
);
这将是父母或总部:
INSERT INTO offices (parent_id) VALUES(NULL);
这将是一个子办公室:
INSERT INTO offices (parent_id) VALUES(1);