OK... I am designing a web based game, and I kind of have a choice on how I want to implement the database.
You are all familiar with the standard way... which is create fixed tables (for example, a table for a player character might have fields like name, strenght, dexterity, hitpoints, etc.).
However, I have been thinking of implementing the database differently. I have been thinking about having a system based on entities and attributes for those entities. So my database would have only one table structured like this:
Entity_ID, Entity_attribute, Entity_value
So, lets say I want my character Super Ninja Bob to have a strength of 55... I simply set that as a record (Entity_ID='Super Ninja Bob', Entity_attribute='strength', Entity_value='55'). The benifit is, I don't have to restructure my database everytime I want to add in a new attribute... Also a benifit is that I don't have to store attributes that can only be found in some entities (for example, a magic user might need to know how much Mana they have stored, a fighter would not... no record would need to exist for Mana unless explicitly needed).
The main question I have, is this going to be painfully slow? Will doing a select statement on all the attributes of an entity, out of all the attributes of all entitys, be significantly slower than the standard was of designing a database. Is this a database design that will turn into a nightmare later on? Namely, will the game come crashing to a halt when I have 200 players on simultaniously?