Lookup Tables
Also known as reference, crosswalk and a few other names.
I love 'em.
I'm not afraid to use them. It certainly makes that table count go up, but you know what you're getting.
I have ADDRESS_TYPES, PHONE_TYPES, PERSON_TYPES (in an intersection table of course) and any other kind of TYPE you can imagine.
I could use CHECK constraints I guess, but if it's anything other than Y or N, I typically create a lookup table to go with the table.
Let's take an ADDRESS table. ADDRESSTYPECODE becomes an attribute of an address. It gets a Foreign Key to the ADDRESS_TYPES table and also (many seem to leave this one out), a NOT NULL constraint. Every address
has to have an type.
To make it somewhat easier, I use codes (as opposed to IDs which I tend to associate with numbers) so a join isn't absolutely necessary. If 'HOME' is the ADDRESSTYPECODE, you would rarely need to join as it's self evident what that means. If the lookup table is large, I'd typically use ID (or numbers) for the key.
Like I said, it bumps up that table count and makes things look a bit "messy," but you know exactly what belongs in what column. And if you're using ApEx, administrative screens are a snap!
Just don't ask
Duke Ganote whether type is a good name or not!
Labels: apex, constraints, database, design, development
ApEx: Oracle Marketing WTF?
At the time of writing, the
score is 68 have not used ApEx leaving only 8 who have. Obviously this poll isn't scientific, but it does have to represent a small bit of the community. Perhaps Oracle Mix would be a better place to ask the question?
I guess my followup poll would be why? Why haven't you used it?
Did you not know about it?
If that's the case, then it's definitely an Oracle Marketing WTF.
Did you know about it but just never got around to trying it?
I'm completely dumb(quit snickering)-founded.
I believe the very first time I heard anything about the product was when it was referred to as Marvel (Project Marvel?) on AskTom. Am I the only one who read the site for enjoyment (probably, but it was the only thing I could read at work). That must have been 4 or 5 years ago. I started using it in May of 2005, now three years back.
Yes, Oracle has boatloads of products. I still don't know what the whole
Fusion thing is (please don't say middleware, I don't know what that is either).
As someone pointed out in the
comment section, it's one of the busiest forums on OTN.
I wonder if
John and Dmitri run into this? Probably makes cold calling difficult.
As a [ApEx] community, what can we do to help promote it?
Labels: apex, database, oracle, wtf
ApEx: What is it?
Surprisingly it seems, very few Oracle professionals know about
ApEx. At WellCare, no one knew about it. Many others I have talked to have no idea what it is.
How can this be?
I'm hard-pressed to believe I am an early adopter. I like to think of myself as such, but perception and reality are two totally different things.
In a nutshell, ApEx (or Application Express, aka HTMLDB) is a rapid application tool that allows you to quickly build web based applications on top of an Oracle database. If I remember correctly, it was initially billed as the Microsoft Access killer.
It is also the front end for Oracle XE.
I've personally built 3 (professional, i.e. paid for) ApEx applications. One for my former day job with 350 pages (1.5 years to build and maintain), one for my fellow
baseball alumni at the University of Florida, and one for my now defunct business, CABEZE.
I believe the question I get most often is: "Can you format it?"
Which I take to mean can you make it pretty or design it anyway you want?
The answer to that is a resounding "Yes!"
So, what follows is a list of ApEx applications for you to evaluate on style and design (borrowed from the
unofficial ApEx wiki housed at
shellprompt):
- Dance Tunes - arguably the best designed ApEx application out there.
- AskTom - We all know, or should know, this site. 40,000 page hits a day on a 4 CPU box.
- Metalink - In my opinion not the best implementation of ApEx, but it's a busy site.
- Shellprompt - host your applications here for a very reasonable price.
- View other examples here
In summary, you can do with ApEx what you can do with any other web tool/environment. Want AJAX? Done. CSS? Done.
You're only limited by your imagination.
(Polls are fun...I'll stop apologizing for it soon)
Labels: apex, development, oracle
ApEx Presenting = FUN!
Wow...that's all I can say.
At lunch today, I put together my power point presentation. I meant to do it sooner of course, but it's been another busy week. In fact, I hadn't done a thing to prepare other than walking through it in my head.
I did not want this to be a presentation so much as a demo.
Six slides is all they got.
I suddenly got very nervous around 4 today. I just want to get over there and start. I ended up leaving work just before 5.
The meeting was at the PriceWaterhouseCoopers building in Tampa, just across the street from the Tampa Bay Buccaneers headquarters. Very nice building.
The Presentation
I was introduced by the SOUG president promptly at 6:30. Roughly 40 people showed up (filled the room).
I had an hour and a half to complete my presentation...ummm...WHAT? I've got like 10 minutes worth of material! How the hell am I going to manage this??
Anyway, I walked through some of the features of APEX: Load/Unload data, SQL Commands, that kind of stuff, just trying to get to the application builder.
A couple of nights ago I began walking through and building a basic little reporting application tailored to the DBAs. Reports on roles and privileges basically. I never even got to that.
I created a 2 line csv (yes, I should have done it before hand), uploaded it to demonstrate how easy it was and then off the creating a report on that table.
"Can you create a form to update that record?"
Sure, here's how you do it. One minute later the form was done and I had updated the record. True to form...it's just so damn easy.
I answered a few other questions and then I got stuck. A member of the audience started answering the questions that I couldn't. We (the member in the audience) had spoken before the meeting and I believe he's just as passionate about APEX as I am). It worked rather well, so well in fact, that we're going to try and work out a dual presentation at the upcoming
Technology Day SOUG puts on.
Someone would ask a question, I would answer them by showing them how to do it. Have I mentioned how much I like APEX? Rocks.
Next thing I know, it's a little past 8 and I can see the President trying to end the meeting. No way dude, too many questions to answer!
I got out of there around 9:30. I answered questions to the best of my ability...if I didn't know, pointed them to resources that could.
Exhilarating!
Can't wait to do it again...but next time I'll practice!
updateBTW, great crowd tonight. I couldn't have asked for a better group. Thanks to everyone for their support, and thanks to
Tom and
LewisC for asking me to do it.
Did I mention how cool it was? ;)
Labels: apex, database, oracle, presentation
ApEx Presentation
I'll be doing my first professional IT presentation this Thursday for the
Suncoast Oracle Users Group.
I'm a bit nervous, but excited at the same time. My goal is to make it as interactive as possible and just let it take me where it takes me.
I will have a canned demo, but I would rather it be more fluid. Can't always plan for those things...I could be a total bust!
So, if you're in the neighborhood and you want to check it out (or just laugh and heckle me), come on by. Details can be found
here.
Labels: apex, oracle, presentation
Vacation?
I've been on "vacation" since April 4th. Of course I was sick and slept most of the day. On Sunday, I took the family to Disney World. Last year my parents bought us annual passes to the Magic Kingdom so that we could all go together to get away.
I am an only child. My parents and I never had vacations, we just moved somewhere (8 times). If we did go somewhere, it was to my parents home town town for a week or two to visit Grandma and Grandpa.
Now, here's what I consider a vacation, sitting on a beach drinking Corona's with my beautiful wife (no kids) staring at the ocean. Yes, this is the Corona ads you've probably seen. Quiet. No work. Perfect.
I love the kids, but they are harder "work" than work. On "vacation," I am the pack mule. I carry everything and everyone. A friend at work has shared this story about
Man's Stages of Life, I'm in the donkey phase...
I'll say it again because I don't believe my sense of humor always comes out correctly (I'm rarely serious), I love my family, my kids, but a break it is not.
Disney H5N1?
We did have a great time despite all of us coming down with the Disney version of the bird flu. Imagine a virus made up of viri (sp?) from 100 countries...that's what we all have. I'm hacking right now. I took a half day on Thursday and spent the following day with
Kate at home. She slept most of the day. Kris and Little Chet spent the day at Disney's Hollywood Studios. Saturday we came home because Little Chet finally caught it. Now we're resting.
Upcoming
- Little Chet gets a tooth pulled tomorrow
- Pick up new Dell XPS laptop tomorrow (woohoo!)
- Go back to work (woohoo?)
- I'll be doing my first Application Express presentation for the Suncoast Oracle Users Group, SOUG. Actually, it's my first IT related presentation. If you can make it, please come by and laugh. More information about the presentation can be found here.
Labels: apex, kate, vacation, work
The Return to ApEx
It's been almost a year, but I've finally gotten a chance to dive back into ApEx!
I've been working primarily on our financial reconciliation for our Medicaid business. That's now very stable as we have everything in our fancy new star schema.
One of the support type activities we've been doing for the past 6 months is maintaining their rate tables...manually. They send (and resend) a csv file and we then match and insert those new records into their rate tables. I don't get to recreate the entire thing unfortunately, it's horribly designed, but I do get to do something.
So instead of doing these manually I finally convinced my boss that this could be done relatively easy with ApEx. I've demo'd it for him in the past, so he's aware of it's capabilities (my evangelism of it doesn't hurt though). Of course our VP steps in and says we have to go through the technical review board. Fair enough, I'm all for standards.
Thankfully my manager convinced the architects that we don't have the Java or Ruby resources to do this, plus, it would take weeks!
So, here's to ApEx, and the further infiltration of it at WellCare!
Labels: apex, oracle, work
Keeping it Simple
One of my all time favorite articles is
The Complicator's Gloves on
Worse Than Failure (formerly the DailyWTF). It identifies the tendency of software developers in particular to come up with overly complex solutions, usually when there is a much simpler one available.
This was the context of my latest
rant to my CIO. Actually, this theme seems to play out in all my rants. Funny how that works.
While web services and the like have their place, many times they are used just because they are the cool new thing, not because of a pressing need. I know I am not the first to mention that nor will I be the last.
Whether it was years of reading asktom (for pleasure no less) or the influence of my first boss, I have striven (sp?) to build applications that are scalable yet easy to maintain.
One of my proudest accomplishments as a developer was at my previous job. A small state-contracted agency where I was the lone developer. I, thanks to a very trusting boss, was allowed to install Oracle and soon after found Application Express (APEX). In 18 months I was able to create some 350 pages of forms and reports for the organization. One person, 350 pages. I once found a job ad for a web developer to help maintain a 100 page website on a team of six. What? Six people? Really? Must be java or something. ;)
I continued to work for them on a contract basis for about six months after I left. Mostly until the new guy got comfortable. Unfortunately for me, they didn't require my services a whole lot. Yes, I could be deluding myself, I realize that...but I just don't believe it. They
WOULD tell me.
Back to my point. At our organization we seem to have quite a few architects. They talk of Ruby on Rails, Java, JBoss, etc. MySQL gets a brief mention on occasion.
We have a hard enough time writing good SQL or PL/SQL, so now we're going to introduce new languages and a new database platform?
If we were a company that made software, I will probably be [mostly] on board, but we are not. We store and manage data for the business to do their job.
I do hope I am wrong about them and that they do talk about the importance of data in our organization. I just haven't see it yet.
So, put it in the database, use APEX when appropriate (95% of the time) and keep it simple.
Labels: apex, database, development, work
Looking for an Oracle Developer?
So I am on vacation (well, I wouldn't necessarily call being a pack mule vacation) at Disney World this week.
Yesterday I received a text message from one of my friends, our company was being overtaken by armed FBI agents, lots of 'em.
FBI raid shutters Medicare insurerFBI Raids Tampa WellCareI've never seen any of these types of activities, though the scope of duties has been fairly limited (I've been there less than a year). I find it hard to believe as everyone I have worked with on the IT side of things I
KNOW is on the up and up. I've never been asked to do anything nefarious...My hope, that if true, it is only a select few individuals.
I thoroughly enjoy working there. I am surrounding by some great people, both personally and
professionally, but I do have a family to feed so...
So if you are in the Tampa area and are looking for a hard-working Oracle developer (APEX, PL/SQL), either email me or post a comment (I won't post the comment, but I will receive it via email and I can contact you from there). I'll also work on getting my resume updated and online.
Labels: apex, development, oracle, work
APEX Evangelism
I started using APEX, Application Express, formerly HTMLDB, more than two years ago.Prior to APEX, anything web related I used Java (J2EE). When I started at my previous job, they had virtually no internal systems. I was hired as a Reports Analyst/Data Analyst because they had decided their 3rd party vendor wasn't working out. I somehow managed to talk them into purchasing an Oracle database (SE); since they wanted it quick, and that's what I knew, it was a no-brainer for my boss.Relatively quickly I managed to nail down my first report after downloading all the data into our shiny new Oracle database. I wanted to impress so I began the tedious task of webifying it, and boy were they impressed.Up to that point, I had been using a modified version of the Struts framework. It was definitely overkill. I created a bean (class) for the report data and a page (jsp) to display that data. It was a time consuming process at best.I had read about HTMLDB through AskTom at the job before that one and it was intriguing. So I downloaded it at the new job and took it for a spin. Within a month I had a couple of pages up and running (complete with user login and our cool new graphs). It was difficult initially to wrap my head around the terminology, but once I did it was full speed ahead.I found the forums on OTN for APEX and began researching problems and asking questions. Soon after that I was contributing. I was hooked.I was now an APEX evangelist. I would extoll the virtues of APEX to anyone that would listen (mostly my wife, but she was just humoring me). By the time I left that job, 18 months later, our internal web site consisted of almost 350 pages. At one point I read an job description something along the lines of "Developer wanted to help maintain 100 page web site with a team of 6." Six people? What? Why does it take so many people? What the hell are they using, Java?I still consider myself an APEX evangelist, but I no longer get to work with it on a daily business. I did manage to convince my superiors though that it would be a good basic reporting tool for our data warehouse environment. We've built 2 applications so far that utilize APEX and hopefully there's more to come.Labels: apex, database, oracle