gpt4 book ai didi

mysql - 数据库设计: Multiple States for single item

转载 作者:行者123 更新时间:2023-11-29 19:45:13 24 4
gpt4 key购买 nike

我正在设计一个数据库,我想知道做这样的事情的最佳方法是什么:

我的数据库将存储项目。每个项目可以有多种状态:

  1. 等待验证
  2. 已验证
  3. 等待内容。
  4. 已删除

...等等。

这些状态可以同时打开。例如,项目可以等待验证 + 等待内容。

此外,每个项目都会根据其所在国家/地区的不同而具有不同的状态,假设我有三个国家/地区:英国、巴西和中国。

所以我有一个具有这些属性的项目 X:

  • 等待验证(英国)-(是/否)
  • 等待验证(巴西)-(是/否)
  • 等待验证(中国)-(是/否)
  • 已验证(英国)-(是/否)
  • ...

当项目的状态增长时,组合的数量也会呈指数增长。

我的想法是使用二进制状态,有一个像这样的表:

tbl_item:

  • status_uk:0000
  • status_br:0101(等待验证 + 等待内容)
  • status_cn:0001(等待验证)

并在SQL中使用二元运算符。

如果您对我有任何建议,那就太好了!

谢谢。

最佳答案

您似乎想要一个 ItemCountries 表。像这样的东西:

create table ItemCountries (
ItemCountriesId int auto_increment primary key,
ItemId int not null,
CountryId int not null,
Status ?,
foreign key (ItemId) references Items(ItemId),
foreign key (CountryId) references Countries(CountryId)
unique (ItemId, CountryId)
);

我将Status 列保持打开状态。我可能会将其设为 varchar(255) 并控制应用程序中的值。 (在其他数据库中,我会使用 check 约束,但 MySQL 不强制执行这些约束。)

您还有其他选项,包括有效状态的引用表(例如,如果您需要将状态值翻译为其他语言,则非常重要)或枚举

关于mysql - 数据库设计: Multiple States for single item,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41058832/

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