Coding a custom database; Don't know where to begin

Discussion in 'Web Design and Development' started by aaronchow, Sep 18, 2012.

  1. aaronchow macrumors regular

    Joined:
    Sep 29, 2007
    #1
    I need a custom application to streamline and to keep track of my work. I honestly don't know what kind of application that I need, or I don't know which programming language I should use, so any advice is strongly appreciated.

    I work at a NPO that offers classes to students, and each classes offer a certain amount of credits to the students so that he/she may satisfy their universities' requirement. When each of the classes begin, the faculties have to turn in a certain number of paperworks. And after the classes end, we have to send out an online evaluation to the students and have to keep track of the evaluation results.

    These procedures seem so simple, except that my NPO offer more than 300 classes per fiscal year, and it is very easy to lost track of comes in and what hasn't come in, so I'm planning to create "something" to manage my job.

    I started to look for some Project Management software, but it seems that I have to create hundreds of projects each year? I don't know enough about Project Management, so I don't even know if it will suit my need.

    So, basically, I'd like to invest some time to create some kind of database to solve my problem. But should I continue to spend some time researching the Project Management software? Should I create something with Microsoft Access / SharePoint online? Or should I create my own database with Rudy?

    Any advise is appreciate.
     
  2. rhp2424 macrumors regular

    rhp2424

    Joined:
    Jul 23, 2008
    #2
    To me it would depend on how deep into the tools you need to go. I would suggest looking into FileMaker Pro which I believe still has a Project Management starter solution. That should give you what you need for file/project management.

    To be honest though, for more advanced control, and depending on how comfortable you are with php, I would personally suggest going the way of a PHP/MySQL solution. You will certainly have access to the information no matter where you are as opposed to being locked into where the program is installed. Perhaps more importantly though, this solution means you can do anything you want/need with the information or to gather more information.

    Depending on how many more years you'll need this to work, you may even want to consider building a SQL database through a webhost provider, connecting the db to FileMaker and using the FileMaker interface to input the data while you build up your website interface.
     
  3. ghellquist, Sep 20, 2012
    Last edited: Sep 20, 2012

    ghellquist macrumors regular

    Joined:
    Aug 21, 2011
    Location:
    Stockholm Sweden
    #3
    A bit of roadmap

    I tend to think about these things in a number of stages.

    1) write down the requirements
    2) design the system (including programming if necessary)
    3) use the system and learn
    4) start over from the beginning

    The reason for these steps is that the really expensive mistakes according to my opinion comes from either of:
    a) solving the wrong problem
    b) keep using the wrong solution

    The most important part to get right is the requirements, and often the part skipped over.

    I suggest starting writing very simple things in a number sheets in a spreadsheet program. Each sheet would describe one aspect of the system, my suggestion is as follows.

    Things to keep tags on
    This could be courses, course occurances, students, student enrollments, evaluations and so on.
    For each of them write a small description and what properties you believe could be useful.
    Example: course occurance
    Describes one course occurance, ie a course given at a specific time. We need to know things such as:
    -- what curriculum is used
    -- what name the course has
    -- what dates it runs between
    -- the main teacher
    -- and so on, only you know about that
    Note that simply because you need to know about a thing does not imply that you want to have it in a computer system, that is a later decision.

    Things to do
    Again, small description. This would include who should do it, what to do, when to it and perhaps other information. You might have an informed guess on how much "work" it takes to do the thing.

    Example, handling student online evaluation

    Someone: design the evaluation questions (about 30 designs per year)
    Admin: look up which students should answer the evaluation (about 300 courses x 20 students per year)
    Admin: send out the evaluation (about 300 courses x 20 studens per year)
    Student: Answer evalutation (about 10 courses per student and year)
    Admin: receive answers and compile into statistics
    Admin: publish statististics.
    Admin: send reminders to students that has not answered (about 10% of students needs reminders)

    .. and so on. I guess your description would be slightly longer of course.

    Additional requirements
    This could be just about anything, such as describing that there are x different admins working in different locations, that any computer system has to comply to campus security rules and so on. Maybe you are required to input data in some other computer system which you have no influence on (but might be able to import or export files)... and so on.
    It might also be that you have a maximum budget to work in.

    When you have a first description of the requirements you can start thinking about various solutions. I tend to believe that it is a good idea to guess many different solutions at this stage, all kinds from using rolodex cards to finding an online evaluation system you can rent to doing database work to do doing nothing. And yes, create a sheet describing this as well. Make a best guess on the impact of each solution you have found.

    Now is the time to really start up the brain. What do you really lack at this point. Often what I find I lack is knowledge -- have I checked everything available on the market? -- how do other people do? -- can I really guess what it costs in time to develop things? This is a good place to go back to the first steps above and refine the requirements a little and also get a lot of input from other people.

    And finally, do an experiment or prototype and try one of the solutions. I generally suggest taking the cheapest, fastest, easiest of the solutions instead of the "all-purpose-solve-all-problems-major-change" version.

    The process up to now will probably not take much time -- if it does that is an important sign in itself -- but it will save a lot in time and money.

    Design
    And then comes the design part. In this part you divide the "system" including all computer systems and your own work into different components. Some of them might be computer programming, some not. Don´t do the mistake of automating things that a human with a bit of paper and pen and rolodex cards can do easily.

    As for making databases in SQL and doing php programming and so on -- it takes a lot of time. A lot! Really. So be very sure that the programming you start doing really saves more time (see your sheets above) than you spend programming. And regardles: never make the system in one go, do many iterations where each iteration is meant to solve one more thing. Use that part, learn from it and be prepared to throw it away, keep it as it is, modify it or expand it.

    Anyway, not meant to discourage you, but there is research showing things like:
    -- a large portion of all software projects never deliver
    -- up to 80% of the functions developed in large software projects are never used.

    I tend to believe I only learn from my mistakes, that is why I like doing many as I learn a lot. The trick is make them often and inexpensively. And not doing the same mistake to often of course.

    // Gunnar
     
  4. 960design, Sep 20, 2012
    Last edited: Sep 20, 2012

    960design macrumors 68000

    Joined:
    Apr 17, 2012
    Location:
    Destin, FL
    #4
    There are many, many ways to accomplish your task. The best solution depends on many, many factors.

    I've done something similar in the past using java and mysql ( created a client application that could be deployed on Windows, but they wanted the option of using it on Linux or Mac as well, the reason I choose Java).

    More recently (last couple of years) everyone wants to have access anytime and anywhere. I've developed almost the exact same thing using HTML5, PHP, Javascript, AJAX(which basically is just fancy javascript and php) to make it more friendly and MySQL as the database.

    I'm currently developing a little more complicated application for another client using HTML5, PHP, Javascript, AJAX and MySQL.

    So where should you start? Not access! Grab a couple free tutorials online about MySQL ( database design/development ). Then read a few about PHP and the HTML will pretty much fall into place. Later add javascript when you have the time to make everything pretty, fast and interactive.

    A fantastic place to start is with a free 30 trial of Lynda.com. Great tutorials!

    phpMyAdmin is a great visual tool to see how database elements relate to each other.

    just me

    PS 80% functions unused! dang that's a lot. I don't have time to waste writing unused functions, admittedly I do have many, largest project I've written by myself was just over 500,000 lines of code, typically in the 50,000 - 100,000 range.
    PPS I've had several projects canceled, I just accept it as part of the business. Modular code and prototyping is the best way to mitigate this IMHO. Clients like having something in their hands or on their monitors, even if it only half works. Pretty sells. Fancy functions do not impress anyone, not even other coders.
     
  5. Thom_Edwards macrumors regular

    Joined:
    Apr 11, 2003
    #5
    PLEASE don't take this as too sarcastic, but I feel a good old fashioned metaphor is in order.


    I need a building to provide clients office space. I'm not sure what kind of building I need, and I don't know anything at all about building such a structure.

    It seems so simple, except that there are 300 clients and each need their own floor. So, I'm planning to build "something" to provide for their needs.

    I started by reading a book about skyscrapers. But I don't know enough about skyscrapers, so I'm not sure that will suit my needs.

    So basically, I'd like to invest some time in learning how to build something. Should I continue researching how to build a skyscraper? Should I look in to maybe just putting up some tents? Or should I call my friend Ruby?


    This sounds insane, right? With the (lack of) experience and expertise that you, yourself, have admitted to, I think it will be next to impossible to create what you need in a timely fashion and to a level that will solve your problem.

    I am not saying to give up on learning. On the contrary, I hope you will take this as a reason to go out and learn something so you may one day be able to do it. But expecting to be able to read a few books and create a full blown resource management system right away is a (near) impossible goal.

    It might be time to see if some funds are available in your budget to hire someone that already knows how to build a skyscraper, er, an application.
     
  6. SrWebDeveloper macrumors 68000

    SrWebDeveloper

    Joined:
    Dec 7, 2007
    Location:
    Alexandria, VA, USA
    #6
    First of all, you have to grease the local politicians for the sudden zoning problems that always come up.

    Then there's the kickbacks to the carpenters.

    And if you plan on using any cement in this building I'm sure the teamsters
    would like to have a little chat with you, and that'll cost you.

    Don't forget a little something for the building inspectors.

    There's the long-term costs, such as waste disposal.

    I don't know if you're familiar with who runs that business but I assure you it's not the boy scouts.

    ;)

    To OP:

    I am kidding and don't mean to target Thom_Edwards! His advice is spot on and that's actually words from the legend known as Rodney Dangerfield found in the not so legendary comedy film, "Back to School". His character is speaking to real world complications in getting business done, a far different reality than found in books or in college lectures. In the scene his younger fellow students begin furiously taking notes as Dangerfield's character lectures the teacher about how things really work.

    So this response is a reminder that networking (people) and solid research is essential to learning how to approach a problem like this, beyond the manuals. Once you get a high level view of what needs to be done, it takes time to narrow down the technologies, outline a plan and initiate a workflow process to accomplish said plan. It always starts with reading forums like this an absorbing different points of views, talking to those who have experienced it before, and THEN get technical with the manuals to learn HOW to make that widget.

    I happen to agree with most of the other comments as to technical resources to get started, and posted this in good humor not to poke fun at anyone but to remind you always keep a good sense of humor! You will go far.

    In short, your decision to ask how to start in this very forum was a great start! Bravo.
     
  7. aaronchow, Sep 20, 2012
    Last edited: Sep 21, 2012

    aaronchow thread starter macrumors regular

    Joined:
    Sep 29, 2007
    #7
    Yeah, I laugh so hard when I read his post, but I understand what all of you are trying to say, and I very appreciate it.

    I will just sit down and spend some time to list all of the various things into logical units. Like others have said, I (or whoever follows me) would like to use it for many years, so I really need to analyst all of the various use case (things to keep tag on, to do, etc.) and additional requirements, so that I will minimize the mistakes in future.

    My boss has allocated a limited budget for this project, but I think this is way too low to hire a professional to build a custom app, so I will try to find someone to work on it as a Pro-Bono project and will give the money to him/her as a gift. But I have some basic programming knowledge, and I always like to learn new stuffs, so if no one wants to take this job, I may as well give it a shot (The fiscal year has started already, so I probably can't use it until next year). I find the PHP or Java + SQL quite fascinating (works everywhere as long as there is Internet connection), so I may end up asking more questions if I decide to go this route.

    But, again, I want to thank all of you for all of the great advice.
     

Share This Page