That is a good start. I would point a few things out though (with the knowledge that you're just learning.. so investigate these as you go):
1) Each layer is currently tightly coupled to the implementations of the layer below it. Generally you would "code against interfaces" in this instance. This means your code is coupled to the contract.. not the implementation. Not a deal breaker because you're learning.. but good to keep in mind.
2) Your data layer is all very custom. You can save yourself a lot of headaches here by investigating the use of an ORM. They take a bit of time to learn.. but WOW are they worth the maintenance hassle.
3) Generally you have Domain Models that represent the domain objects. Alot of the time these correspond directly to database tables. Then in your UI, you have ViewModels that represent the current entity within the View being rendered. This gives you the flexibility to add custom UI-based logic (validation, formatting, etc) in the ViewModels, without the Domain Models ever needing to have such specific UI concerns in them.
If you REALLY want to start thinking about design and architecture (which is fantastic! Kudos for starting to think about that stuff), then you should definitely check out things like:
IoC/Dependency Injection Frameworks
Etc. Again, I commend you on taking the step of actually thinking about your application structure :)