我不是MySQL专家,我必须为我的关卡设计一个相当复杂的数据库。
我现在面临的问题是在同一个表(公司的宏观类别)中有一个供应商-客户关系:
<<p> 宏表/strong>id name mega_id macro_customer_id
------------------------------------------
1 Furniture 2 2,4,5,35
我想表示这样一个事实:id为1的宏条目在同一个表中描述了其他宏公司(即它们的客户)。
哪个是最好的方式来表示这个?
谢谢!
这取决于:我们过去都使用规范化表单(如@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)
然而,最大的问题是如何使用这些数据。如果数据仅针对该用户,并且没有以任何其他方式查询(没有位置,也没有分组),那么将其存储为序列化字符串是完全有效的方法。
RDBMS中实体之间的关系应该以关系的方式存储。问问你自己,如果你关心这个关系在你的数据库-你是否需要写查询将链接macro.id
表/行由macro.macro_customer_id
中的id表示?如果是,则必须将此关系存储在(一对多或多对多)单独的表中。