You may want to look into MongoDB. Its significantly different than MySQL as it is in the NoSQL group but seems like it might be a good fit for what you need. You can store the dynamic aspects in one table in an array which is something you can't do in a MySQL setup. If however you need/want to stick with the MySQL database then the appropriate method is to split the data between tables as suggested by Jonathan Henson.
FYI the MongoDB Structure would be something like the following:
Classes:
{
Name : NameValue,
Attributes : {
0 : {
AttName : AttNameValue0,
AttVisibility : AttVisibilityValue0,
AttType : AttTypeValue0
},
1 : {
AttName : AttNameValue1,
AttVisibility : AttVisibilityValue1,
AttType : AttTypeValue1
},
2 : ...
},
Functions: {
0 : {
FuncName : FuncNameValue0,
FuncVisibility : FuncVisibilityValue0,
FuncReturnType : FuncReturnTypeValue0
},
1 : {
FuncName : FuncNameValue1,
FuncVisibility : FuncVisibilityValue1,
FuncReturnType : FuncReturnTypeValue1
},
2 : ...
}
...
}