SQLite - 存储多个值

时间:2009-04-13 13:28:44

标签: sqlite

如何在SQLite数据库中存储和检索同一列的同一行的多个值?

即。我有一个产品列,另一列是商店,我放在所有商店,在那里可以得到这个产品:

Product: iLamp;
Stores: River's; McWay; Lonnie's; ...

我该如何实现?

提前谢谢。

5 个答案:

答案 0 :(得分:7)

如果你很聪明,你就不会这样做。因为到了确定哪些商店库存商品的时候,您的查询将会被隐藏变形。当他们尝试插入和删除商店时,您的库存控制应用程序也是如此。你最终会得到的是我喜欢称之为SQL体操,花费越来越多的时间尝试以最离奇的方式进行SQL,仅仅是因为设计选择不好。

说真的,将这些存储在数据库的不同行中,就像Codd想要的那样。

将多行组合成一个以分号分隔的字符串比将字符串分解为元素要容易得多(并且在DBMS grunt方面更快)。

这样的架构就足够了:

Products:
    ProdCode integer primary key
    ProdDesc varchar(50)
Stores:
    StoreCode integer primary key
    StoreDesc varchar(50)
StockLevels:
    StoreCode integer \
    ProdCode  integer / primary key
    Count     integer

答案 1 :(得分:4)

像其他人提到的那样,你可以把它存储为逗号分隔的字符串,然后把它存放到你的数据库中,但就像提到的ocdecio一样,你现在拥有表的方式很糟糕。您应该考虑执行类似添加另一个表的操作,例如具有两列的PRODUCT_TO_STORE表,一个具有产品的密钥,另一个列具有存储的密钥。然后,产品和商店之间存在关系,并有助于规范化您的数据,这在大多数情况下是一件好事。然后,当您需要查找产品所在的所有商店时,您只需在该PRODUCT_TO_STORE表上执行查询。

答案 2 :(得分:2)

我会使用像JSON这样简单的东西。然而,这是糟糕的数据库设计,因为它没有规范化。

答案 3 :(得分:2)

更改架构。

不要在同一行的列中存储多个值。

添加一个新表,其中多个值可以存储在各自的行中

坏桌子设计:
父母:

ParentID, values, other columns
好的桌子设计:

parentID, other columns

parentID, childID, value

答案 4 :(得分:1)

以每个商店的逗号分隔列表存储,或为每对“Store”添加多行“商品”。产品“。