我有一个专栏 组 。 群组 具有存储在group_types中的不同类型(买方,卖方,裁判)。只有当该组是买方类型时,它才具有另一种(更专门)的类型,例如电气和机械类型。
我对如何将其存储在数据库中感到有些困惑。
有人可以建议我一个数据库结构吗?
谢谢
将您的存储group_types为层次结构表(带有nested sets或parent-child模型):
group_types
nested sets
parent-child
Parent-child:
Parent-child
typeid parent name 1 0 Buyers 2 0 Sellers 3 0 Referee 4 1 Electrical 5 1 Mechanic
SELECT * FROM mytable WHERE group IN ( SELECT typeid FROM group_types START WITH typeid = 1 CONNECT BY parent = PRIOR typeid )
将选择中的所有买家Oracle。
Oracle
Nested sets:
Nested sets
typeid lower upper Name 1 1 2 Buyers 2 3 3 Sellers 3 4 4 Referee 4 1 1 Electrical 5 2 2 Mechanic
SELECT * FROM group_types JOIN mytable ON group BETWEEN lower AND upper WHERE typeid = 1
将选择任何数据库中的所有买家。
Nested sets如果您不需要层次结构上的排序或频繁更新,则可以在任何地方实现且性能更高group_types。
Parent-child可以轻松地在中实现,Oracle并且SQL Server只需花费一点点努力即可实现MySQL。它允许简单的结构更改和分层排序。
SQL Server
MySQL
请参阅我的博客中有关如何实现该文章的文章MySQL: