對於某種庫存系統的,用戶可以創建一個item_type
具有一定的性能,現在性能的量爲每類..我應該如何去與DBStructure這個變量?只需填寫X數量的propertyX
字段,或者是否有其他方法可以通過這種方式實現靈活性?數據庫結構設計,不同數量的領域
note我不想自動創建表,因爲這是不可管理的。
對於某種庫存系統的,用戶可以創建一個item_type
具有一定的性能,現在性能的量爲每類..我應該如何去與DBStructure這個變量?只需填寫X數量的propertyX
字段,或者是否有其他方法可以通過這種方式實現靈活性?數據庫結構設計,不同數量的領域
note我不想自動創建表,因爲這是不可管理的。
具有被連接的N-屬性表:1到ITEM_TYPE表是這樣的:
TABLE item_type (
item_type_id INT,
...)
TABLE properties (
property_id INT, -- primary key
item_type_id INT, -- foreign key for item_type
key NVARCHAR(max), -- adjust type to your needs
value NVARCHAR(max))
因此,每個ITEM_TYPE可以有0:N特性。
通常的方式做到這一點是這樣的(僞SQL):
create table property_types (
property_id int primary key,
name varchar,
-- more info here
);
create table items (
item_id int primary key,
-- your item table
);
-- this table links a property value with an item
create table item_properties (
item_id int,
property_id int,
property_value varchar,
foreign key fk_item (item_id) references items (item_id),
foreign key fk_property (property_id) references properties (property_id)
);
或者,你可以在item_properties唯一約束(ITEM_ID,PROPERTY_ID),以確保每一個屬性設置只有一次每件
您也可以用每個屬性引用您的Items
表創建一個Properties
表實現屬性的動態數量。例如
Items Table
Id Name
Properties Table
Id ItemId Name Value
以這種方式,您不限於靜態數量的屬性,甚至不限於相同的屬性。 Properties
表基本上是一個名稱/值對的字典表,並與您的Items
表綁定。
屬性看起來像什麼? – hatchet
你有多少種物品? – Milhous
屬性看起來像INT,VARCHAR或TEXT,從2到大約100種不同的屬性(無限希望) – Sander