1. Uri relevant class (usually a nested class with inner class inheritated from BaseColumns
2. Provider class derived from ContentProvider (mainly used to handle database operation)
3. Client of self-defined ContentProvider (use ContentValues to interact with the Provider)
4. Provider in AndroidManifest.xml