![]() |
![]() |
#1 (permalink) |
Lover - Protector - Teacher
Location: Seattle, WA
|
Flat file or relational?
I just got some contract work progamming a little app for an HR department. As a third-year CS major I'm good, but not great. They want a program that will allow them to (a) create student profiles with name/address/phone/class schedule, (b) track who's working in what room, (c) be able to schedule vacation time for students and still have the rooms automatically assign new sudents, (d) print out schedules for the students and for the rooms, (e) and ideally assign the empty rooms to people with preferences for certain ones.
OK -- background aside; would I get much performance/ease of programming out of using a relational database? Every "assignment" program I've ever written was relatively simple and used a flat-file, so I've got no experience with relational databases beyond CREATE and DROP. Their budget wouldnt afford something like MS SQL, so I'd have to learn AND use mySQL in the two-ish weeks they've given me. There's about 10 rooms and an active payroll around 30-40 students... So -- would you use a flat file database or a relational databse in my situation?
__________________
"I'm typing on a computer of science, which is being sent by science wires to a little science server where you can access it. I'm not typing on a computer of philosophy or religion or whatever other thing you think can be used to understand the universe because they're a poor substitute in the role of understanding the universe which exists independent from ourselves." - Willravel |
![]() |
![]() |
#2 (permalink) |
Insane
Location: Vermont
|
Just a question, if all you know is create and drop (and I'll guess simple select stuff), what good would MSSQL do?
As for me I'd use a the relational because I think you'll start having problems once you get in the corner cases and the exceptions to rules (there are ALWAYS some). Good luck though. |
![]() |
![]() |
#3 (permalink) |
Lover - Protector - Teacher
Location: Seattle, WA
|
The question was moreso whether learning what I need to of a relational database is worth it in the limited time frame of this project (2 weeks) or whether it seems simple enough to work with a flatfile.
__________________
"I'm typing on a computer of science, which is being sent by science wires to a little science server where you can access it. I'm not typing on a computer of philosophy or religion or whatever other thing you think can be used to understand the universe because they're a poor substitute in the role of understanding the universe which exists independent from ourselves." - Willravel |
![]() |
![]() |
#4 (permalink) |
Sky Piercer
Location: Ireland
|
Another third year CS student here. I'm completly new to databases (never even took a class). I started learning MySql over the weekend, and it doesn't seem to be too challenging. So I'd say go for it.
On the other hand, given that you are working with such a small dataset, you could probably get away without using such a database...but it probably wouldn't be as nice a solution. Wish I could be more helpful...
__________________
![]() |
![]() |
![]() |
#5 (permalink) |
Darth Papa
Location: Yonder
|
Even if you use flat-file storage, it's relational data. You'll need multiple flat files with relationships between them anyway. Were I you, I'd use the tool that's meant for that.
Besides, it's just as tricky managing file interactions, locks, atomiticity, etc. May as well let the database engine handle all that for you. You'll be glad you have the tools later. |
![]() |
![]() |
#6 (permalink) |
Tilted
|
yes, a database, because of the whole mess with opening/writing/locking files.
But the real trouble for someone new to databases is creating a good enough database schema. Make sure it is normalized (http://en.wikipedia.org/wiki/Database_normalization), meaning that you do not have redundant data lying around.
__________________
"Over here in my country , im a real sex object. Whenever I ask girls for sex ... they object." - taken from bash.org |
![]() |
![]() |
#7 (permalink) |
Pure Chewing Satisfaction
Location: can i use bbcode [i]here[/i]?
|
Maybe a.... "low end" database would be the best solution? Something like Access or a free equivalent (don't know of any myself). While not being a great database overall, it will at least help you to get things set up and running, and would be less of a hassle than learning/setting up/using something like MySql.
__________________
Greetings and salutations. |
![]() |
![]() |
#8 (permalink) |
Professional Loafer
Location: texas
|
If you're going to be using MySQL, I would recommend installing apache and php, then installing something called phpMyadmin. Web-based util to do anything with MySQL.
Thank god you're not MSSQL. MSSQL is built to handle massive amounts of data. This isn't an option, whether you have the budget or not. At my work, our Database server is running MSSQL 2000 Enterprise, has 18 databases on it ranging from 6 to 20 gigs in size. I think this would be a bit of overkill for less than 50 people. You might try looking at Sourceforge.net to see if someone has anything similar to this. It would be free to use, and might give you some direction to go. Also, if you use apache, mysql, phpmyadmin option, the easiest distros to use it with I believe are debian and gentoo. Their package management systems allow you just to tell is to install and the distros set it all up for you.
__________________
"You hear the one about the fella who died, went to the pearly gates? St. Peter let him in. Sees a guy in a suit making a closing argument. Says, "Who's that?" St. Peter says, "Oh, that's God. Thinks he's Denny Crane." Last edited by bendsley; 08-09-2005 at 05:17 AM.. |
![]() |
![]() |
#9 (permalink) |
Lover - Protector - Teacher
Location: Seattle, WA
|
Thanks guys. I think I'll check out Sourceforge or see if she has Access. The lady I'm developing this for barely knows how to turn on a computer, nonetheless install a DBMS (or Linux).
![]() ![]()
__________________
"I'm typing on a computer of science, which is being sent by science wires to a little science server where you can access it. I'm not typing on a computer of philosophy or religion or whatever other thing you think can be used to understand the universe because they're a poor substitute in the role of understanding the universe which exists independent from ourselves." - Willravel |
![]() |
![]() |
#10 (permalink) | |
Sky Piercer
Location: Ireland
|
Quote:
Just downloaded phpMyAdmin. It's great! I will definately be using this until I know my way around mySql, so that I am more confident with the command line interface. Thanks for the recommendation!
__________________
![]() |
|
![]() |
![]() |
#12 (permalink) |
Free Mars!
Location: I dunno, there's white people around me saying "eh" all the time
|
Another CS student here, yeah I agree with some of the possible solutions here. MySQL is the way to go to easy manage the data if your employer doesn't have Access. In this case, it seems that only a max of 10 rooms, 40 possible students (Max?) makes Access the best database solution for this situation. MySQL is designed to be a larger database.
MS SQL is overkill.
__________________
Looking out the window, that's an act of war. Staring at my shoes, that's an act of war. Committing an act of war? Oh you better believe that's an act of war |
![]() |
![]() |
#13 (permalink) | |
Addict
|
You can get MSSQL for free.
Will also PM you to make sure you get it. MS Visual studio Express editions. http://lab.msdn.microsoft.com/express/default.aspx http://lab.msdn.microsoft.com/express/sql/default.aspx It doesn't sound like you need them for this, but Express doesn't have any of the advanced MSSQL tools. Quote:
|
|
![]() |
![]() |
#14 (permalink) |
Junkie
|
I missed what language you're writing this in, but if it supports serializing native objects or otherwise dumping native objects to flatfiles, that would be the way to go. If you use CSV flatfiles, not only do you have the same data design problems that you'd have with SQL (normalization, etc.), the programming overhead for reading/writing/updating/deleting lines will be worse than simply learning to use a database server.
|
![]() |
![]() |
#15 (permalink) |
Insane
|
Watch what you get yourself into. This may blow up into something that could get you a grant or full-time work if people high up see the value of it.
Make sure you find some software that will scale well and program to that end. You never know, if you retain the rights, you could even sell it to other companies and make a small fortune out of it. =)
__________________
"You looked at me as if I was eating runny eggs in slow motion." - Gord Downie of The Tragically Hip |
![]() |
![]() |
#16 (permalink) |
Upright
|
You might also consider using SQLite. Free and GPL like MySQL, but it uses regular files for data storage so you don't need to set up a server or mess around with permissions like you do with MySQL. Also, using any language with decent abstraction you should be able to switch between the two fairly easly.
|
![]() |
![]() |
#17 (permalink) | |
Lover - Protector - Teacher
Location: Seattle, WA
|
Quote:
__________________
"I'm typing on a computer of science, which is being sent by science wires to a little science server where you can access it. I'm not typing on a computer of philosophy or religion or whatever other thing you think can be used to understand the universe because they're a poor substitute in the role of understanding the universe which exists independent from ourselves." - Willravel |
|
![]() |
![]() |
#18 (permalink) |
Adequate
Location: In my angry-dome.
|
JK, for jobs I've been involved with, helping the spec process is part of my work. If nothing else as self-defense. The jobs of any complexity completed from "spec" either started as school assignments or ended in the trash.
If he knew how to properly and realistically spec the project...?
__________________
There are a vast number of people who are uninformed and heavily propagandized, but fundamentally decent. The propaganda that inundates them is effective when unchallenged, but much of it goes only skin deep. If they can be brought to raise questions and apply their decent instincts and basic intelligence, many people quickly escape the confines of the doctrinal system and are willing to do something to help others who are really suffering and oppressed." -Manufacturing Consent: Noam Chomsky and the Media, p. 195 |
![]() |
![]() |
#19 (permalink) |
Upright
Location: Ohio
|
A note on MS Access: Yeah, the JET engine craps out at 65k records, etc. etc., but the shiny things (forms and other front-end bits) are a snap to throw together, and the standardization of the user interface coupled with it being wrapped up in MS Office makes it an excellent choice.
I use access to build front-ends for big backend databases in mySQL. Anytime the boss wants a new sparkly toy, it's nothing to whip up a new form or report in access built on a mySQL query. It's almost the best of both worlds, easy Lego frontend, powerful backend. Just that messy connection stuff in the middle. |
![]() |
![]() |
#21 (permalink) |
Knight of the Old Republic
Location: Winston-Salem, NC
|
To continue the discussion, my final CIS course at college is based around the two classes constructing a fully operational IS system for a local camp. The two classes are split into four groups. My team is the database group. Right now we're talking very specifically about relational and flatfile databases. Ours is definitely gonna be relational. Our group has developed level 1 and level 2 entity relationship diagrams. This week we're actually taking the level 2 ERDs and transforming them into Access tables using SQL.
Anyone have tips on doing this? We have to make approximately 50 tables in this database, all with at least 4 attributes. Is there an easier way to do this other than going into Access and manually creating 50 fucking tables? I have 3 days to get these done. ![]() -Lasereth
__________________
"A Darwinian attacks his theory, seeking to find flaws. An ID believer defends his theory, seeking to conceal flaws." -Roger Ebert |
![]() |
Tags |
file, flat, relational |
|
|