私はこのように、Items
用とStores
のテーブル、およびルックアップテーブルItemStores
とMySQLデータベースを持っている:データベースからデータを整理する方法は?
CREATE TABLE IF NOT EXISTS Items (
itemId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
description VARCHAR(256) NOT NULL DEFAULT '',
priceBeforeTax DECIMAL(10,2) NOT NULL,
) DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE TABLE IF NOT EXISTS Stores (
storeId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
storeName VARCHAR(128) NOT NULL,
) DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE TABLE IF NOT EXISTS ItemStores (
storeId INT NOT NULL REFERENCES Stores(storeId),
itemId INT NOT NULL REFERENCES Items(itemId),
quantity INT NOT NULL
) DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
アプリケーションがItem
とStore
オブジェクトのObservableCollections
s内のアイテムや店舗を格納し、そしていくつかのWPF
public class Store
{
public int storeId { get; set; }
public string storeName { get; set; }
public override string ToString()
{
return this.branchName;
}
}
private static ObservableCollection<Store> _stores = new ObservableCollection<Store>();
public static ObservableCollection<Store> Stores
{
get { return _stores; }
}
public class Item
{
public int itemId { get; set; }
public string description { get; set; }
public decimal priceBeforeTax { get; set; }
public override string ToString()
{
return this.description;
}
}
private static ObservableCollection<Item> _items = new ObservableCollection<Item>();
public static ObservableCollection<Item> Items
{
get { return _items; }
}
今私のジレンマはItemStores
データを割り当てる方法を中心:そのようコントロールは、これらのObservableCollections
秒にバインドされています。私は各Item
のHashTableについて、storeID
を各Store
の項目の数量にマッピングすることを考えています。時にはItem
をitemId
で検索することを前提に、マップするより良い方法はありますか? ObservableCollectionにデータを埋め込むために既にSELECT * FROM Items
を実行していますが、各ストアから数量を取得するために別のクエリを実行すると、実際にMySQLが損なわれる恐れがあります。 A JOIN
は、返されるストアの数がわかっていないため、同じアイテム(それを運ぶ各ストアの1つの行)に複数の行を返すと、ObservableCollectionにデータを入れるのに苦労します。
あなたはNHibernateを参照していますか? – dotancohen
またはMySqlをサポートするその他のもの。 –