我如何能有多个项目或元素在一个sql单元格



我想创建一个数据库,其中包含某公司的销售和服务表。我想知道的是(因为我对SQL了解不多),如果有一种方法来存储像对象一样,在单个单元格中表示列表或数组。为什么?因为我希望Sales表中的单元格指向生成该特定销售的所有服务。例如:

在09/09/11由service_1, service_2,…, service_n。其中service_#是该公司提供的特定服务。我再次为我的愚蠢道歉,但我现在正在学习SQL。

我计划在SQL server上创建数据库。

这是一个糟糕的方法。数据库必须规范化。

如果您要查找的是N:M关系,则应该创建一个名为sale_services: 的新表。
sales (saleId, ...)
services (servideId, name, price, ...)
sale_services( saleId, serviceId)

根据经验,只要您想在一个单元格中添加多个内容,就更改您的数据库设计。把桌子分开。使用一个名为Sales的表,另一个名为Services的表,最后一个表将这两个表连接在一起,其中包含要"连接"的Sales和Services的id。

正如其他人所说,仅仅想要存储数组是设计错误的标志。如果您想要一个数据数组,那么您真正需要的是一个相关的表,将这些信息存储在各个记录中。

我想讨论的是当你决定将一个数组存储在一个字段中,例如用逗号分隔时会发生什么。

假设您将产品的可用颜色存储在名为colors的字段中。

现在你有

Product Colors 
item1   red, blue, yellow 
item2   blue, purple, red
对于100万条记录 ,

等等

现在你如何找到所有红色的产品?数组字段很难正确查询,而且查询时的性能通常很差。添加新颜色也是一个痛点,特别是当你想让它按照一定的顺序排列时。

在进一步设计数据库之前,您需要阅读规范化和数据库设计。数据库设计的首要规则之一是永远不要在记录的一个字段中存储多个信息。这是一个复杂的问题,早期做出错误的选择可能会杀死你的系统。数据库并不简单,也不容易重构,所以你需要在创建设计时就知道你在做什么。

这里有很多好的评论。

您可能想后退一步,看看您的数据库的大局。这里的评论来自实际经验,而不仅仅是教科书。试着看看您的数据还会有什么其他用途。在您的示例中,如果您将服务列表存储在单个单元中,如您所提到的,那么如何确定哪个服务执行得最多?哪些服务从未使用过呢?如果您的解决方案需要阅读每一行并做一些事情,那么很可能有更好的方法。

如果你把一个建议的设计放在一起,这里的许多人会帮助你调整和微调它,使它更好。

好运…

相关内容

最新更新