i have 2 tables: Customers and Variables. Below are the fields for each tables. Variables Table: VariableID int PK VariableType varchar(20) VariableValue varchar(50) Customers Table: CustomerID int PK CustomerName varchar(100) Gender int Occupation int MaritalStatus int Religion int Sample Variables Data: VariableID VariableType VariableValue 1 Gender Male 2 Gender Female 3 Occupation Doctor 4 Occupation Engineer 5 Occupation Director 6 MaritalStatus Single 7 MaritalStatus Married 8 MaritalStatus Widowed 9 Religion Buddhist 10 Religion Christian Sample Customers Data: CustomerID CustomerName Gender Occupation MaritalStatus Religion 1 Alexander Smith 1 3 6 10 2 Kelvin Woo 1 5 7 9 3 Stacy White 2 3 8 10 The Gender, Occupation, MaritalStatus, Religion in Customers Table will join back to Variables Table to get VariableValue. I'm not sure this is a good approach but is easy to maintain as I can change the VariableValue and add new VariableType if there is new Occupation. My concern is joining multiple times on same table in one query will greatly hurt the query performance? If yes, any suggestion to solve this issue? I hope can get the balance between flexibility and performance. I get flexiblity but not performance on the above design.