473,797 Members | 2,933 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

What kind of database is access?

Could someone tell me where MS-Access (current and 97?) fit(s) on the
RDBMS - ORDBMS - ODBMS spectrum?
I gather it's relational, but how does it size up against/follow SQL2/3/4
definitions and how does it compare to other database vendors?
Any articles that might be of interest? It's for an essay on database
models...

Thanks in advance,
Alex

--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Nov 13 '05
29 5909
Thanks, that helped.

On Wed, 01 Jun 2005 01:57:12 +0200, Trevor Best <no****@besty.o rg.uk>
wrote:
A.P. Hofstede wrote:
Could someone tell me where MS-Access (current and 97?) fit(s) on the
RDBMS - ORDBMS - ODBMS spectrum?
I gather it's relational, but how does it size up against/follow
SQL2/3/4 definitions and how does it compare to other database vendors?
Any articles that might be of interest? It's for an essay on database
models...


Not this ol' chestnut.

I'll forgo the Access isn't a database but Jet is malarkey as this is
after all comp.databases. ms-access and not comp.databases. jet so:
Set semantics_mode off

If by RDBMS you mean a relational database management system that
conforms to all 12 rules laid down by Edgar Codd, there isn't one. Only
close approximations.

Like many database vendors, you can create a relational database in it
but it doesn't force you to. Some of the biggies like Oracle, DB/2, SQL
Server, etc are considered by many to be RDBMSs but it is possible to
create databases in them that are totally unrelational and break nearly
every rule in the book. Much of the resulting database lies sqaurely on
the shoulders of the DBA.

Access (or Jet) differs from most databases labelled as RDBMSs by being
a desktop product or file server based product so that the workstation
does the selection/sorting instead of those tasks being performed on a
server. With standard SQL methods of retrieval this can be quite slow
depending on bandwidth/amount of data.

It also has a not undocumented but seldom exploited mode of access
called ISAM, this can make a bigger more expensive database look like a
slouch, it's as far removed from SQL as a pork pie is from a vegan's
diet but if you have a shed load of data (<2GB obviously) and want
little bits of it faster than a speeding bullet then that may be for you.


--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Nov 13 '05 #11
Hank wrote:
Trevor,
Very interesting what you have to say about ISAM files. I
tired to run your code to do benchmarks and it worked. But how do you
traverse a table with parameters? Your function does not seem to allow
Queries...only Tables.
Could you give us a code snippet where you traverse a table
with a particular criteria like ( [Employee ID] = 126 )?
Thanks for the help
Hank Reed


Firstly, you cannot use it on queries, only tables, to traverse what you
want, since the recordset will get sorted by the index that you seek on
you'd do something like (assuming Index is called idxEmpID)

lngID = 126
with rst
.index = "idxEmpID"
.seek "=", lngID
if not .Nomatch then
do until .eof or .fields("Employ ee ID")<>lngID
' do something
.movenext
loop
end if
end with

I've not tested if you need the .nomatch check as I'm not sure if the
cursor would go to .EOF if not found.

--
[OO=00=OO]
Nov 13 '05 #12
Trevor Best <no****@besty.o rg.uk> wrote in
news:42******** **************@ news.zen.co.uk:
David W. Fenton wrote:
Trevor Best <no****@besty.o rg.uk> wrote in
news:42******** *************** @news.zen.co.uk :
ISAM = Indexed Sequential Access Method
It's part of DAO.
You can use it only on local tables or tables from a back end
database if you've opened that database in code (i.e can't use on
linked tables),


Er, why, then, is the term ISAM used in the drivers that support
linking to a number of non-Jet data formats, many of which have
no indexing support?

In other words, I think you're misidentifying what ISAM actually
*is*.


True, they are called ISAM but you can only use the .Index and
.Seek methods on native jet tables AFAIK.


Well, doesn't that mean, then, than those features have zilch to do
with ISAM?

I've never needed the speed of a .Seek, so I've never used it
myself.

--
David W. Fenton http://www.bway.net/~dfenton
dfenton at bway dot net http://www.bway.net/~dfassoc
Nov 13 '05 #13
David W. Fenton wrote:
True, they are called ISAM but you can only use the .Index and
.Seek methods on native jet tables AFAIK.

Well, doesn't that mean, then, than those features have zilch to do
with ISAM?


Well ISAM is what Microsoft used to call MDB files before they were used
in Access. The *index* is sorted in order so is *sequential* and it's an
*access method*. Do you see a pattern emerging here? If MS don't call it
ISAM any more than that doesn't stop it from being ISAM, hell since when
have MS been good at naming things? They call a rowversion column in SQL
Server a "timestamp" and it has nothing to do with time.
I've never needed the speed of a .Seek, so I've never used it
myself.


What do you want? A medal?

--
[OO=00=OO]
Nov 13 '05 #14
Trevor Best <no****@besty.o rg.uk> wrote in
news:42******** *************** @news.zen.co.uk :
David W. Fenton wrote:
True, they are called ISAM but you can only use the .Index and
.Seek methods on native jet tables AFAIK.

Well, doesn't that mean, then, than those features have zilch to
do with ISAM?


Well ISAM is what Microsoft used to call MDB files before they
were used in Access. The *index* is sorted in order so is
*sequential* and it's an *access method*. Do you see a pattern
emerging here? If MS don't call it ISAM any more than that doesn't
stop it from being ISAM, hell since when have MS been good at
naming things? They call a rowversion column in SQL Server a
"timestamp" and it has nothing to do with time.


It doesn't? Isn't the value derived from the time it's updated?

Seek with tabletype recordsets is a feature of DAO. I see no point
in dragging in the term ISAM, whatever historical appropriateness it
may have, because it is mostly used in Access for things that
*don't* provide indexed access to data, and, therefore, can't
provide the benefit you're attributing to ISAM.
I've never needed the speed of a .Seek, so I've never used it
myself.


What do you want? A medal?


No, but I'm just pointing out that speed is not everything. In my
experience, the number of situations where you need the speed and
are able to use a tabletype recordset are quite few and far between.
In 10 years of Access programming, it's never happened to me in any
of the dozens of applications I've created.

I think that's important context, so people who don't have the
experience won't mistakenly go down this road trying to use it where
it can't really help your application.

--
David W. Fenton http://www.bway.net/~dfenton
dfenton at bway dot net http://www.bway.net/~dfassoc
Nov 13 '05 #15
David W. Fenton wrote:
naming things? They call a rowversion column in SQL Server a
"timestamp" and it has nothing to do with time.

It doesn't? Isn't the value derived from the time it's updated?


From BOL
timestamp
timestamp is a data type that exposes automatically generated binary
numbers, which are guaranteed to be unique within a database. timestamp
is used typically as a mechanism for version-stamping table rows. The
storage size is 8 bytes.

Remarks
The Transact-SQL timestamp data type is not the same as the timestamp
data type defined in the SQL-92 standard. The SQL-92 timestamp data type
is equivalent to the Transact-SQL datetime data type.

A future release of Microsoft® SQL Server™ may modify the behavior of
the Transact-SQL timestamp data type to align it with the behavior
defined in the standard. At that time, the current timestamp data type
will be replaced with a rowversion data type.


--
[OO=00=OO]
Nov 13 '05 #16
David W. Fenton wrote:
Seek with tabletype recordsets is a feature of DAO. I see no point
in dragging in the term ISAM, whatever historical appropriateness it
may have, because it is mostly used in Access for things that
*don't* provide indexed access to data, and, therefore, can't
provide the benefit you're attributing to ISAM.
From BC7 Help
<---
ISAM
The Microsoft BASIC Compiler includes a set of ISAM (Indexed Sequential
Access Method) features for writing data management programs. See
Chapter 10, "Database Programming with ISAM," in the BASIC Programmer's
Guide for more information about using ISAM.
The OPEN statement used with the ISAM keyword creates an ISAM database
and tables where they do not exist, and opens them.

See Also BEGINTRANS BOF CHECKPOINT CLOSE COMMITTRANS CREATEINDEX
DELETE DELETEINDEX DELETETABLE EOF FILEATTR GETINDEX$ INSERT LOF
MOVEdest OPEN RETRIEVE ROLLBACK SAVEPOINT SEEKoperand SETINDEX
TEXTCOMP TYPE UPDATE

(MOVEdest)
MOVEFIRST [#]filenumber%
MOVELAST [#]filenumber%
MOVENEXT [#]filenumber%
MOVEPREVIOUS [#]filenumber%

filenumber% The number of an open ISAM table.

(SEEKoperand)
SEEKGT [#]filenumber% ,keyvalue [,keyvalue]...
SEEKGE [#]filenumber% ,keyvalue [,keyvalue]...
SEEKEQ [#]filenumber% ,keyvalue [,keyvalue]...

filenumber% The number of an open ISAM table.
keyvalue An expression less than 256 characters long.

--->
Some of that looks familiar?

Definitions of ISAM
http://www.webopedia.com/TERM/I/ISAM.html
http://search390.techtarget.com/sDef...214626,00.html
http://www.amr-usa.com/thindex.htm (Paragraph entitled "ISAM (Indexes)")

So DAO is updated, merged the SEEKoperand into one Seek and renamed
SETINDEX and made it a property instead of a command, added a few bits
for SQL support amongst other things and is OO orientated, but do you
still think the tables in the MDB file are anything other than ISAM?
No, but I'm just pointing out that speed is not everything. In my
experience, the number of situations where you need the speed and
are able to use a tabletype recordset are quite few and far between.
In 10 years of Access programming, it's never happened to me in any
of the dozens of applications I've created.
10 years ago was Access 2.0, not very quick with large data sets and as
I remember, .FindFirst and .FindNext were notoriously slow. Opening just
the bits you wanted in a dynaset improved things but wasn't a patch on
..Seek.
I think that's important context, so people who don't have the
experience won't mistakenly go down this road trying to use it where
it can't really help your application.


I've already pointed out the pitfall of using this method earlier in
this thread.

--
[OO=00=OO]
Nov 13 '05 #17
Trevor Best <no****@besty.o rg.uk> wrote in
news:42******** *************** @news.zen.co.uk :
David W. Fenton wrote:
naming things? They call a rowversion column in SQL Server a
"timestamp " and it has nothing to do with time.

It doesn't? Isn't the value derived from the time it's updated?


From BOL
timestamp
timestamp is a data type that exposes automatically generated
binary numbers, which are guaranteed to be unique within a
database. timestamp is used typically as a mechanism for
version-stamping table rows. The storage size is 8 bytes.

Remarks
The Transact-SQL timestamp data type is not the same as the
timestamp data type defined in the SQL-92 standard. The SQL-92
timestamp data type is equivalent to the Transact-SQL datetime
data type.

A future release of Microsoft® SQL Server™ may modify the behavior
of the Transact-SQL timestamp data type to align it with the
behavior defined in the standard. At that time, the current
timestamp data type will be replaced with a rowversion data type.


Access GUIDs don't include a time component that can be extracted
out of them, but time is used to derive the value.

I see nothing in what you've quoted that contradicts that.

--
David W. Fenton http://www.bway.net/~dfenton
dfenton at bway dot net http://www.bway.net/~dfassoc
Nov 13 '05 #18
David W. Fenton wrote:

[snip: T-SQL timestamp nothing to do with time]
Access GUIDs don't include a time component that can be extracted
out of them, but time is used to derive the value.

I see nothing in what you've quoted that contradicts that.


FFS

http://groups-beta.google.com/group/...68fdc025bd1ed4

http://tinyurl.com/dklv3

--
[OO=00=OO]
Nov 13 '05 #19
Trevor Best wrote:
True, they are called ISAM but you can only use the .Index and .Seek
methods on native jet tables AFAIK.

--
[OO=00=OO]


Today I had to reinstall Access 2.0 using the 31 Office 4.3 diskettes
on a machine that got whacked by a virus and had been running a POS app
for about nine years. With moderate trepidation I performed the
install using the ancient 1.44 Meg HD disks. The only file that could
not be read from the disks was MSQUERY.EXE (whew!). All the necessary
functions of the app worked correctly. I did a custom install and
noticed that installing the ISAM drivers was a separate checkbox
option. That seemed to indicate that ISAM in Access went beyond table
seeks, at least in A2. ISAM brings back distant memories of using JCL
on an IBM mainframe and of how nearly everyone failed to realize how
important SQL would become. The page indexing method used by Access
queries is not intuitive. I only realized recently that Access is
using something other than an ISAM style indexing method.

James A. Fortune

Nov 13 '05 #20

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
1908
by: Limey | last post by:
Hi All, I want to write an application that will talk to a RDBMS. The application needs to be platform neutral from both an operating system and database backend point of view. I have decided to create a prototype in Python, the RDBMS will be PostgreSQL running on a Linux box.
49
3216
by: Relaxin | last post by:
It is just me or has MS created some of the worst ways to access and display data? You can use a DataSet, but if you want to sort or filter the data to must use a DataView which is created from a DataSet. But, if you sort by using the Grid (clicking the header) you can no longer use the DataSet (or maybe the DataView, if that is what you are using) to locate the record that the user has selected!!
4
1959
by: Shawn H. Mesiatowsky | last post by:
I have a strange problem here. I have my development computer with IIS installed, and we have a SQL server as well on a windows 2000 server. both are members of a domain. I have restricted access to my web app using NTFS ACL's and have disabled anonymous logon and enabled windows authentication. So when a user logons on to a computer and they use there web browser, they are not prompted to logon to the intranet web app I am building. All...
4
1834
by: Val P | last post by:
How does everyone design the database access layer in an asp.net application? Two options that come to mind is: 1. create a database class and instanciate it as needed, local to a function or 2. Provide database access in a base class from which all objects that need db access will inherit from. #1 seems wasteful for application that do frequent but light db access. Option #2 seems even more wasteful, because it adds overhead to the
2
1767
by: williamphenryjr | last post by:
This is a long post. If you have answers I'm ready. If you have web links, that'd be great too. I'm a Junior/Senior in Computer Science at Washington State University, so you can make some assumptions about terminology I'll be familiar with based on that. I am trying to write a class that will abstract out database access stuff for my application. This class will be called DBUtil I will use this class to do the gruntwork for a custom...
5
5463
by: Macca | last post by:
Hi, I have a multithreaded app which now needs database storage. I am in the process of designing my Data Access Layer but and was wondering what issues I should look for for in regards to a multi threaded app. My app will be need to initiate access to the database from several places in the Business logic. I'd appreaciate any advice/suggesstions on best practices to avoid problems such as accessing the same method in the data
1
2928
by: arvind | last post by:
hi all, i am accessing sql+ database through python 2.4.3. i am using Tkinter to build my screens. how can i pass parameters on the click event of button from one function to the another? how can i run another file from current file?
7
4827
by: =?Utf-8?B?Um9nZWxpbw==?= | last post by:
hey, I have 2 threads, th and th2, both of them run a method. each of these 2 methods requires database access. sometimes I get an error, that database requires an open connection, and that the current connection state is "connecting". is this because both threads are trying to use the same database??? they use the same public static data access class. would this be why? isnt
1
1602
by: laziers | last post by:
Hi, What kind of data access you will use for the project with very large database : 1. NHibernate 2. Linq 3. Sql queries + stored procedures 4. DataSets
1
1518
by: tvnaidu | last post by:
I have digital video camera connected to PC, how I will know what kind of packets it is?. I can see live using http access to camera. I installed wireshark, I can see TCP and HTTP packets when I can se LIVE using HTTP. How I will know what kind of packets those video is?. Is it is RTP/RSTP?. mainly streaming packets? thanks.
0
9536
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
10468
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
1
10205
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
10021
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
9063
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
7559
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
5458
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
1
4131
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
3748
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.