Re: What is a database?
Date: Mon, 2 Dec 2013 23:00:06 +0100
Message-ID: <529d02e6$0$3192$e4fe514c_at_dreader36.news.xs4all.nl>
On 2013-12-02 19:48:31 +0000, Eric said:
> On 2013-12-02, Jan Hidders <hidders_at_gmail.com> wrote:
>> On 2013-11-30 17:51:50 +0000, Eric said:
>>
>>> No, seriously, what is your short, accurate definition of the word >>> "database" (in, but not necessarily restricted to, a computer context)?
>>
>> I have several. It depends on the circumstances, who I am talking to
>> and what subject I am teaching. Note that there is no such thing as a
>> wrong definition. A definition is just a statement clarifying what you
>> mean with the concept X. It can only be wrong if it does not correctly
>> represent what you have in mind if you use the term X. So it all
>> depends on you. It could be, and I'm guessing, that what you are really
>> asking is how community Y (e.g. database researchers) defines the
>> concept X.
>>
>> So what do you need that definition for?
> > Fair question. I found what I consider to be a rather dubious > definition. It's in a wiki, and I could replace it, but I thought I > would see what ideas I could find before going for my own replacement. I > don't want to quote the dubious definition yet since then people would > be inclined to just respond to that.
Fair enough.
> It's reasonable to want some more context too. The context is definitely > programming, but somE proportion of the audience are doing minor ad-hoc > projects, or things in very specialised niches, or just playing about, > rather that writing serious applications. I suspect that many in all of > those categories do not have much of a clue about databases.
I sense that what you actually want to do is to explain what DBMSs do, why they do that and why that is relevant for the audience. Or do you want to stress what it means to properly define a databas schema and why that is important for them? Or all of the above? Note that this is why many textbooks define these notions in the way that they do.
Let me clarify. I sometimes use the definition:
"A *database* is a collection of data that is managed by a DBMS."
But that does not really explain what DBMSs do an why they do that. So
let us reverse engineer for what type of collections of data they were
built:
- These are structured collections of data. (That's why you can define
a schema.)
- These are coherent, integrated collections of data. (That's why you
can define foreign keys.)
- These collections represent the current state of some part of the
world. (That's why we have update facilities.)
- The current state they represent is needed by a certain organization,
or parts of it, to function. (That's why we have query languages.)
- These collections need to correctly represent that state in order to
help the origanization. (That's why we have integrity checks.)
- These collections are accessed and used by one or more applications
or users. (That's why we have access control and concurrency
management.)
- The availability of the data crucial for the functioning of the
organzation. (That's why we have recovery mechanisms.)
Many textbooks simply list those properties as the defining characteristics of a database. Just so that later on they can answer a question such as "do I need to store this database in a DBMS?" with the impressive sounding but contentless "of course, otherwise it would not be a database, by definition!" ;-)
- Jan Hidders