gpt4 book ai didi

多表的数据库设计

转载 作者:搜寻专家 更新时间:2023-10-30 20:37:40 24 4
gpt4 key购买 nike

我对表格的正确设计有疑问。假设我有一张名为 Hamburger 的 table ,这个汉堡包上可以放很多调味品,例如奶酪、番茄酱等。我想将这些信息保存在一组表格中。每种调味品必须在其自己的表中,因为每种调味品都有不同的列。

这是我的:

汉堡包-(ham_id、标题等)

ham_condiments (ham_id, condiment_id, parent_condiment_id,condiment_type)

奶酪(奶酪 ID、名称、奶酪特定列)

肉(meat_id、名称、一些特定于牛肉的列)

mayo(mayo_id、名称、一些特定于 mayo 的列)

因此,ham_condiments 有点显示 hamburger 表中的一对多,而 mayo_id、meat_id 和 cheese_id 用于 ham_condiments 表中的 condiment_id 列。

所有这一切的原因是 parent_condiment_id 它将显示汉堡包中调味品的正确顺序。

因此,如果您想查看汉堡包上的所有调味品,您会:

select ham.title, c.name, m.name, mo.name, condiment_type
hamburger ham,
ham_condiments hc,
cheese c,
meat m,
mayo mo
where
ham.ham_id = hc.ham_id and
hc.condiment_id = c.cheese_id and
hc.condiment_id = m.meat_id and
hc.condiment_id = mo.mayo_id
order by hc.parent_condiment_id

(parent_condiment_id 可以只是一个 sort_order 列,其值也从 1、2、3、4 开始)

我是不是想多了?我基本上是在添加另一张 table 来保存汉堡包内调味品的顺序,但我很难把它放在一起。感谢您的帮助。

最佳答案

首先,您想研究类型/子类型数据库模式——搜索关于这些主题的 SO 答案,或在线查找详细文章。这是我过去发布的两个这样的问题:

Foreign Key Referencing Multiple Tables

Derived concepts - database design considerations

一般的想法是你有一个定义所有可能调味品的“主”表,然后你有另一个表用于每种类型的调味品,其中每个作为“主调味品”表作为它的父级。细节很微妙,实现起来也很棘手。

其次,您描述为“parent_condiment_id”的内容听起来更像是“condiment_order”,这是汉堡包和调味品之间连接的属性。 (或者它实际上引用了另一个表?)

关于多表的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33260977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com