gpt4 book ai didi

mysql - 为可以具有多个可选列和依赖项的表设计数据库

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

SO 中的每个人都有美好的一天。

我在为我的项目(孔眼工厂生产模块)设计数据库时遇到问题。作为记录,我在我的项目中使用了 MySQL、C# .NET Framework 和 NHibernate。

背景故事

对于我的项目,会有Item 表。项目定义了孔眼生产中包含的所有项目。它可以是可以出售的原 Material (卷材、油漆、板材等)、中间产品(目前为冲压产品)和最终产品(组装产品、抛光产品、彩色产品等)。

所有项目都有名称库存阈值/strong> 列,但是一些 项目可以有外径颜色 列,而有些项目没有有那个。此处的可选列取决于项目类型(例如,线圈只有外径、内径和高度。而油漆只有颜色,而最终产品有所有这些)。 Item 也有多个Unit(Kg、Pcs、Pack 等),可以转换为其他单位。同样,一些项目可能只有 Kg 单位相关联,而其他项目可以有 Kg 和 Pcs 单位相关联(以及它们之间的转换率)。

这就是我的想法。

  1. 项目
    • 身份证
    • ItemType_ID [FK]
    • 姓名
    • 股票
    • 阈值
    • 时间戳(创建时间、更新时间、删除时间)
    • 已删除
  2. 维度
    • Item_ID [FK]
    • 外径
    • 内径
    • 高度
  3. 颜色
    • Item_ID [FK]
    • 颜色
  4. 元素类型
    • 身份证
    • 姓名
  5. 单位
    • 身份证
    • 姓名
  6. Item_Unit关联表

    • Item_ID [PK]
    • Unit_ID [PK]

    ……还没完,来这里求教

我想问的是:

  1. 这是我的第二个设计,而我的第一个设计将所有可选Item 表中的列,当用户没有输入时赋值为空该列的值。使用我的第一个设计更好吗?造成它简化我的代码(仅选择 1 个表)。但是听说数据库里有null值不好?
  2. 在这种情况下使用继承是否更好?使用父表和子表(Item 表和 Coil 表作为子表)?
  3. 对于组装元素、有色元素、抛光元素,它们有先决条件元素,可以是中间元素或其他最终元素(一些有颜色的元素可以由中间元素+油漆制成,而其他一些有颜色的元素可以由组装元素制成+ 油漆,而组装项目总是由中间项目组成)。如何设计表格以便于查找?在我的主要生产形式中,会有组合框来选择组件。
  4. 在这种情况下如何存储项目转化率?

任何建议、更正甚至整个改造都将受到赞赏。非常感谢你

最佳答案

每个项目都有一个表,您将有很多空列。在 Items 变化不大的某些情况下,这不被称为糟糕的设计。

如果您的元素具有太多不同的属性而不是使用父子关系,我会建议最好的方法是使用 Entity–attribute–value model

此模型的列数较少但行数较多。检查此模型是否适用于您的问题。

关于mysql - 为可以具有多个可选列和依赖项的表设计数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40601227/

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