小编典典

数据库模型结构

sql

我有一个专栏 群组
具有存储在group_types中的不同类型(买方,卖方,裁判)。只有当该组是买方类型时,它才具有另一种(更专门)的类型,例如电气和机械类型。

我对如何将其存储在数据库中感到有些困惑。

有人可以建议我一个数据库结构吗?

谢谢


阅读 226

收藏
2021-04-22

共1个答案

小编典典

将您的存储group_types为层次结构表(带有nested setsparent-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

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。它允许简单的结构更改和分层排序。

请参阅我的博客中有关如何实现该文章的文章MySQL

2021-04-22