gpt4 book ai didi

database - 考虑部分依赖信息的关系数据库设计?

转载 作者:搜寻专家 更新时间:2023-10-30 23:44:02 25 4
gpt4 key购买 nike

我有一种强烈的感觉,我只见树木不见森林,所以我需要你的帮助。

考虑以下两个表:

create table Category (Category_ID    integer,
Category_Desc nvarchar2(500));

create table Text (Text_Id integer,
Text nvarchar2(1000),
Category_Id integer references Category.Category_Id);

此代码没有遵循正确的语法,只是为了了解问题。

考虑为某些类别保存文本部分以在界面中使用它们的想法,例如消息(“你不能那样做!”,“这样做!”,......),但也为创建注释其他物体,e。 G。喜欢订单(“重要客户!优先处理此订单!”)。

现在是我的问题。其中一些文本位会带来更多信息,例如,如果您将“重要客户”注释添加到订单中,还会设置 Order.Prio_Flag

现在这是一个非常特殊的信息,仅考虑类别Order_Note 使用的文本。我不想将它添加到 Text 表中,因为大多数条目不受此影响,并且该表会因特殊情况而变得越来越拥挤,只有其内容的最少部分.

我有这种感觉,设计有缺陷,但我也不希望每个类别都有一个表格并尽可能保持通用。

请记住,这是问题的简化 View 。

TL:DR:如何在不添加新属性的情况下向表格内容添加信息,因为新属性只会为最少数量的条目填充。

最佳答案

子类型化和相关属性在关系数据库中很容易实现。例如,如果某些 Text 很重要并且需要具有依赖属性(例如 DisplayColor),您可以将下表添加到您的架构中:

CREATE TABLE ImportantText (
Text_Id integer NOT NULL ,
Display_Color integer NOT NULL ,
PRIMARY KEY (Text_Id),
CONSTRAINT ImportantTextSubtypeOfText
FOREIGN KEY (Text_Id) REFERENCES Text (Text_Id)
ON DELETE CASCADE ON UPDATE CASCADE
);

许多人认为外键约束建立实体之间的关系。那不是他们的目的。它们是约束,即它们将列中的值限制为另一列的子集。这样就建立了一个子类型关系,可以记录额外的属性。

在上表中,ImportantText 的任何元素都必须是 Text 的元素,并且将具有 Text 的所有属性(因为它必须记录在 Text 表中),以及 ImportantText 的附加属性。

关于database - 考虑部分依赖信息的关系数据库设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31311406/

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