To what extent should a database be normalized? [closed] - database

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
Personally I find database normalization really interesting(in fact really enjoy doing it) but while designing the schema and normalizing it for the asset manager(containing generic and project specific assets with each having types of arbitrary relation depth) I am currently working on, I came to this basic question i.e. to what extent should one normalize a database(I am aware of 3NF) such that making multiple query, insert etc, doesn't become more costly than programmatically taking care of data inconsistencies, redundancy etc which normalization tries to avoid?

In designing your database you should normalize it to the fullest extend (well, with common sence in mind). While developing you'll notice some potential performance issues. In this case you may want to resort to using views or even denormalize a bit.
Though this differs from case to case, since some programs have serious requirements on performance. Others may be used by just a few users, in this case performance may not be that important.
In order to make a good decision on whether or not to denormalize and thus being able to execute simpler queries, you should run some performance tests for both cases. Keeping in mind what denormalizing would cause to the maintenance of your database.
In case of denormalizing, be sure to document this to the fullest extend.

Related

Why are DDL commands AutoCommit? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I have read on many pages that "All DDL commands are AutoCommit in Oracle". It's okay DDL commands are autoCommit, but my question is: What's the reason for doing it?
Meaning, why are all DDL commands AutoCommit in Oracle?
Is there a reason of doing it?
The Concepts Guide chapter on Transactions includes DDL as one of the markers for End of Transaction. Find out more.
Why? The short answer is, because.
The slightly longer answer is: DDL writes to the data dictionary. If DDL didn't issue implicit commits the data dictionary could get hung up in long-running transactions, and that would turn it into a monstrous bottle neck. Remember, every single SQL statement queries the data dictionary.
"Other DBMS seem to be able to handle transactional DDL without
problems"
Yes, but are those other databases as scalable in a multi-user environment as Oracle? Perhaps they are, but that's what makes this a contentious question and why I voted to close.
The fact is, Oracle is a venerable product: they made architectural decisions in the early days which are baked into the database kernel at a very low level. Some changes just have too great an impact to be worthwhile.
If implementing transactional DDL had been feasible Oracle wouldn't have put all that effort into developing Edition-based Redefinition. And now that we have got Edition-based Redefinition what further benefits would transactional DDL deliver us?

Simple Database Implementation for Educational Purpose [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I would like to learn Database systems implementation in Depth. Is there an open-source simple implementation of database for educational purpose that I can go through the code? Like there are a lot of OS implementation (Minix, Pintos...). I am wondering if there are similar systems for database education as well.
I read a few textbooks and they are mainly focus on theory and concepts.
Thanks a lot!
Alfred
Then find some educational material :)
When i was learning db concept, my professor ask us to code a simple dbms. One important reference is the Redbase:
http://infolab.stanford.edu/~widom/cs346/
Hope that helps.
MySQL, PostgreSQL, SQlite are all opensource. You can find their source code and related documentation.
Also check NoSQL group of databases.
What makes you think implementing a database is simple?
What parts of the database interest you? Storage management? Indexing? Query Language? Query Planning? Transactions?
Modern (even "toy") Relational systems have all of those components, which makes them rather complex from the outset. Other DBs, such dbm based databases are much simpler. Then you have things like Lucene, which is a database for documents and free form text -- conceptually simple but put a lot of effort in to scaling.
You can look at implementations of SPARQL if you're curious about query languages, as they work against RDF triple stores (which aren't super complicated).
There's also things like Prevlayer, which is an in memory database using a concept called prevalence. Probably the simplest of all of them, really when you get down to it.

Software analysis patterns - pros and cons [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
What are pros and cons of using software analysis patterns (in general)?
I need this information for study purposes. Such question was asked at the lecture of the Software Modeling subject, therefore I think it can come back again.
Anyway, this question intrigued me, because I know what pros of using analysis pattern would be (mostly I think). But what about cons?
It's more like using Right tool for Right Job.
So, pros and cons depend on how well did you use it in your design?
One help what these patterns provide that we need not reinvent the wheel. Someone has already found solution for a problem and published it for others to use.
Hence, Pros are a follows (but not limited to)
Time is less wasted.
We get robust solution without spending much effort.
Highly scalable.
Common understanding among developers.
Cons can be summarized if you use it for over engineering. i.e. making a simple problem more complex when pattern use can be avoided OR using a Pattern1(say) in place of Pattern2(say).
In general, It depends on how you use them.
You might like see following links:
Categories of design patterns
Does functional programming replace GoF design patterns?
Examples of GoF Design Patterns in Java's core libraries

Do you know some good resources for learning NoSQL databases? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I consider to use some NoSQL database in one of my project. Do you know some good starting points for a newbie in this topic?
Pick your particular "NoSQL" database first -- or at least type of "NoSQL" -- I'm going with the assumption that there is a reason why you want "NoSQL". Do you need object graph traversal? Explicit distributed clustering? Fast write/append? Dumb key/value associations? The selection should be based off more than a "I want something NoSQL" as different approaches can offer significant advantages (along with significant drawbacks) :-)
And, as often, google/wikipedia are a good place to start:
http://en.wikipedia.org/wiki/NoSQL
http://nosql-database.org/ has a long list of alternative databases, grouped in categories by type of technology. It has links to each product's website, lists of books, and forums, news, etc. about NoSQL.
Also see http://nosqlsummer.org/city/krakow. This is the Kraków chapter of a reading club for studying NoSQL concepts. I see from your profile that you live in Kraków.

Simplest database implementation [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I am looking for a really simple database implementation; basically one with no complex parsing SQL engine. What I am looking for is something demonstrating B+ trees and ACID storage (Suitable for educational purposes). What I have found up-till now form my current searches was hamster-db. I am looking for something even simpler with a smaller code-base. If there is any such opensource project in your knowledge please let me know.
The University of Wisconsin Databases group uses their own small relational database, minirel, to teach the undergraduate databases class. I just took it, actually; it's enlightening. My semester's assignments are posted publicly. I'm sure the faculty would be willing to part with the source code used at each step.
In the undergraduate class, we do not implement B+ trees or ACID components, but it appears that the larger project does include them.
You can try to look at OrientDB. Don't know if it's simpler than hamster-db, but it's open source, uses a mix of Red-Black Tree and B+Tree algorithms and supports ACID.

Resources