供应商 - 客户关系在同一个表中

时间:2016-06-26 11:42:36

标签: mysql join database-design

我不是MySQL专家,我必须为我的关卡设计一个相当复杂的数据库。

我现在面临的问题在于在同一个表格(公司的宏观类别)中建立供应商 - 客户关系:

宏表

BoxLayout

我想表示这样一个事实,即id为1的宏条目在同一个表中描述了其他宏公司(它们是他们的客户)。

哪种方式代表这个?

谢谢!

2 个答案:

答案 0 :(得分:0)

这取决于:我们以前都习惯使用规范化形式(如@ 1000111所示),但是根据数据的使用情况,您可以选择在规范化讨论的某些部分看起来不同:

这个的正常模型是:

 Table userData(id,name) 
    - 1:N table linkTable(id,macro_customer_id) 
         - N:1 table metaData(macro_customer_id,value)

或者:

 Table userData(id,name) 
    - 1:N table linkTable(macro_customer_id,id) 

然而,最重要的问题是如何使用数据。如果数据仅适用于该用户而不是以任何其他方式查询(没有位置或分组),则将其存储为序列化字符串是一种完全有效的方法。

答案 1 :(得分:0)

RDBMS中的实体之间的关系应以关系方式存储。问问自己是否关心数据库中的这种关系 - 您是否需要编写将macro.id链接到macro.macro_customer_id中由ID表示的表/行的查询?如果是,那么您必须将此关系存储在(一对多或多对多)单独的表中。