面向文檔的數據庫可能是您需要的。
如果你想堅持到關係數據庫,不拿只是哦,這麼多場創建表的原始的方法:
CREATE TABLE SomeEntity (
ENTITY_ID CHAR(10) NOT NULL,
PROPERTY_1 VARCHAR(50),
PROPERTY_2 VARCHAR(50),
PROPERTY_3 VARCHAR(50),
...
PROPERTY_915 VARCHAR(50),
PRIMARY KEY (ENTITY_ID)
);
而是定義屬性表:
CREATE TABLE Attribute (
ATTRIBUTE_ID CHAR(10) NOT NULL,
DESCRIPTION VARCHAR(30),
/* optionally */
DEFAULT_VALUE /* whatever type you want */,
/* end_optionally */
PRIMARY KEY (ATTRIBUTE_ID)
);
然後定義您的SomeEntity表,該表僅包含基本屬性(例如,註冊表中的必填字段):
CREATE TABLE SomeEntity (
ENTITY_ID CHAR(10) NOT NULL
ESSENTIAL_1 VARCHAR(30),
ESSENTIAL_2 VARCHAR(30),
ESSENTIAL_3 VARCHAR(30),
PRIMARY KEY (ENTITY_ID)
);
然後爲您可能或可能不想存儲的那些屬性定義一個表。
CREATE TABLE EntityAttribute (
ATTRIBUTE_ID CHAR(10) NOT NULL,
ENTITY_ID CHAR(10) NOT NULL,
ATTRIBUTE_VALUE /* the same type as SomeEntity.DEFAULT_VALUE;
if you didn't create that field, then any type */,
PRIMARY KEY (ATTRIBUTE_ID, ENTITY_ID)
);
很明顯,在你的情況下,SomeEntity是用戶。
謝謝! 我會研究其他提到的數據庫,並分解數據庫。 標準化的user_variables表方式不幸的是不能正常工作,因爲我經常需要一次拉多個變量。 對於一些我認爲我可以連接成一個字符串,因爲我幾乎總是將它們拉在一起,我從來沒有索引它們。 再次感謝,只是想確保我沒有失去明顯的東西。 – Alex 2010-02-15 22:30:14