I want to design and implement a mobile application in which:Users who have already registered are able to add/delete some humanskills in their profile page. Skills are categorized hierarchically:each leaf of the skills tree has its specific fields. Indeed allskills have some shared columns plus some specific ones in thedatabase. One shared column is called description by which userdescribed his skills in detail.All users' skills can be searched in a different page of theapplication. To do so, a user should choose a category. Then allskills which are in that category (in case of leaf) or are childrenof it (in case of none leaf) are shown. He can also filter skills byshared columns and specific columns (if he has selected a leafcategory). Except description filter which is a text-box, all filtersare multi-selected combo-boxes.I have decided to use a XML file which is synced between app and server. In the XML file, skill tree is defined by nested tags. Each category has its specific ID. In the leaf categories, there is a nested tag in which specific fields of the skills plus their probable values are defined. When a user choose a category its id will fetch from the XML file; Besides if it is a leaf category, its specific fields' filters will be shown as combo-boxes filled by values. To sum up, because by help of XML tags, maximum value numbers for each field are reserved, I will map selected values of all specific fields to a Long variable (64 bits) some bits of which are reserved for a field and its value shows which probable value of field is chosen. Combo-boxes are multi selected; therefore, for example, if a user choose two values of one field and three ones of another, there will be 6 generated Long variables to any of which database specific fields column get matched is returned. I choose this structure because of a lot of reasons:generating filters and category menus on the applicationdynamically.querying database much fasterjust a flat skill table on the database: shared columns (includingcategory type) plus a Long column as specific attributes.lower size packets on the network.being able to add new values or fields.Is my decision correct and helpful or not?
A proposed method to handle some specific requirements of a mobile application
database;android;xml;front end;backend