2009-04-13 67 views
3

如何在SQLite數據庫中存儲和檢索同一列中同一行的多個值?SQLite - 存儲多個值

即我有一個產品列和另一列是商店,在這裏我把所有的商店,在那裏可以得到這個產品:

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

我如何能實現呢?

預先感謝您。

回答

4

像其他人所說的,你可以將它保存爲逗號分隔字符串,然後把在你的數據庫,但像ocdecio提到,你的方式現在你的桌子是壞的設計。你應該考慮做一些添加另一個表的操作,比如一個PRODUCT_TO_STORE表,它有兩列,一列有產品的關鍵字,另一列有存儲關鍵字。然後,產品和商店之間存在關係,並有助於規範化數據,在大多數情況下,這是一件好事。然後,當您需要查找產品所在的所有商店時,只需在該表上執行查詢即可。

2

我會使用類似JSON的東西。然而,這是壞的分貝設計,因爲它沒有正常化。由於

1

無論是商店的每個商店以逗號分隔的列表,或添加多行一個每對「商店」 - 產品」。

+0

而我該如何使用多行? – 2009-04-13 13:41:16

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

更改模式。

不在同一行的列中存儲多個值。

添加一個新表,其中多個值可以存儲在自己的行

壞表deisgn:
家長:

ParentID, values, other columns 

好表的設計:

parentID, other columns 

孩子

parentID, childID, value