How to normalize contacts in Access

I think you missed the part where I said, "when one splits a backend db". But you did confirm what I said.
You're right, I hadn't checked for your great message, one hour or so, before I wrote my question here (then again, it wasn't my original question, it was more of an tangential observation).
The problem with losing Referential Integrity ONLY appears if you split a back end accdb itself into two or more accdbs with some tables in one of them and other tables in the other. It's not an artifact of simply splitting the front end (interface and logic elements) from the back end (tables).

The problem is also not in Access, it's in the nature of database engines. When you split some tables into one accdb and other tables into a different accdb, you make it impossible for the ACE database engine to maintain RI across the two accdbs. Within a single accdb, that is not a factor, assuming the tables are properly set up in the first place.

The same would be true for splitting tables between two SQL Server databases, or an ACE database in Access and a SQL Server database and so on.
 
My bank has me logon to my account here over the WEB with my four-digit ATM PIN. How hard is that to crack?
:oops:

Don't know how feasible, but I would advise you change your bank!

Wow!

Over here (UK), our banks go to great lengths to tell us that they will never ask for our card PIN's; so if you're being asked for it, it is most likely a scam/fraud.
 
hi @twgonder

I have 2 contact management systems with source code in Access that you may want to look at to get ideas.

http://msaccessgurus.com/tools.htm#Contacts

The Contact Management Template is older and more robust (and also has many extra tables so just import what you need). MyContacts is newer and has better naming but isn't split into FE/BE and is easier to learn.

ps, Welcome to AWF!
Thanks, you just got added to my favorites, and I look forward to learning from your examples.
 
The problem with losing Referential Integrity ONLY appears if you split a back end accdb itself into two or more accdbs with some tables in one of them and other tables in the other. It's not an artifact of simply splitting the front end (interface and logic elements) from the back end (tables).

The problem is also not in Access, it's in the nature of database engines. When you split some tables into one accdb and other tables into a different accdb, you make it impossible for the ACE database engine to maintain RI across the two accdbs. Within a single accdb, that is not a factor, assuming the tables are properly set up in the first place.

The same would be true for splitting tables between two SQL Server databases, or an ACE database in Access and a SQL Server database and so on.
Yep, it's a problem in MS dbs, because MS has never gotten their hands dirty and figured out how to properly distribute a db remotely. That doesn't mean that others haven't done it successfully.
 
:oops:

Don't know how feasible, but I would advise you change your bank!

Wow!

Over here (UK), our banks go to great lengths to tell us that they will never ask for our card PIN's; so if you're being asked for it, it is most likely a scam/fraud.
No, they don't ask for the PIN over the phone. They ask for it In lieu of a password! On their web page. The account manager seemed very uncertain when I said this is a horrible security practice, like there was no other option than a PIN.

1659237311628.png
 
No, they don't ask for the PIN over the phone.
I got that, but the fact they want you to use it as a p/w is exactly as you describe: "a horrible security practice"

Makes you wonder about their attitude to the rest of their security!
 
Yep, it's a problem in MS dbs, because MS has never gotten their hands dirty and figured out how to properly distribute a db remotely. That doesn't mean that others haven't done it successfully.
Not quite sure what you mean by ‘properly distribute a db remotely’ can you clarify what this actually means.

Would be interested in some examples where others have achieved this
 
hi @twgonder

I have 2 contact management systems with source code in Access that you may want to look at to get ideas.

http://msaccessgurus.com/tools.htm#Contacts

The Contact Management Template is older and more robust (and also has many extra tables so just import what you need). MyContacts is newer and has better naming but isn't split into FE/BE and is easier to learn.

ps, Welcome to AWF!
Hi Crystal.
I tried several times but MyContacts would not unzip
 

Attachments

  • Capture.PNG
    Capture.PNG
    8.5 KB · Views: 132
Yep, it's a problem in MS dbs, because MS has never gotten their hands dirty and figured out how to properly distribute a db remotely. That doesn't mean that others haven't done it successfully
It's a problem with ALL database engines. You cannot enforce Referential Integrity between tables in two different databases. Period. It has NOTHING to do with properly distributing a db remotely. It has to do with the architecture of a database.

Of course, if you know of a case where "others have done it successfully" I am always open to learning. Links please, if they exist.
 
directing back to the topic of this thread .... contacts

side topics are great .... always learn something new ~

I posted a link to 2 examples to help with the question about structuring contacts. @twgonder liked but @HealthyB1 had trouble downloading ... and I want to know if that was caused by mark of the web as I can download and unzip ok
 
My old manual says yes/no uses integer, so it's two bytes if that's still true with ACE and Access.
Yes/No Yes and No values and fields that contain only one of two values (Yes/No, True / False, or On/Off). 1 bit.
 
you may need to remove Mark of the Web from the zip file. Here's a link with steps to do that:

https://msaccessgurus.com/MOTW_Unblock.htm

Does that do it @HealthyB1?
Hi Crystal,
I tried what you suggested and checked the unblocked, applied same and then rechecked properties again and unblocked message had gone. However I still get the same error message as before.
I then decided to download the next file from you site, being the contacts management template "Contacts_32_64_160430.zip" and it also came down as blocked. I set it to unblock and the file unzipped as expected. So it seems to be only the first zip file for "Contacts" that is causing me trouble..
Cheers
 
Last edited:
I was able to download and open Contacts, the MyContacts keeps coming up as invalid when trying to open it.
Have tried twice now, downloading each time.
 
It's a problem with ALL database engines. You cannot enforce Referential Integrity between tables in two different databases. Period. It has NOTHING to do with properly distributing a db remotely. It has to do with the architecture of a database.

Of course, if you know of a case where "others have done it successfully" I am always open to learning. Links please, if they exist.
Hi George, the problem is, everyone thinks that databases started with SQL or Access. Forty years ago we had to write our own from scratch, with the idea of distribution in mind. My business partner Ted took about a month to write the code. It worked great. I can't provide a link, as this was well before the Internet and it was proprietary code which I no longer have anyways.

Besides just handling integrity, Ted handled synchronization on the record and field level with a pretty sophisticated transaction logging routine(s). We first had to do this as four of us were writing code and creating tables with what little time we could "borrow" from client's mini computers (we couldn't afford our own back then at a cost of over $50,000 for the cheapest model--not to mention the space and air-conditioning to run it). Once a week we all brought our 1/2" tapes to the vendor's sales office, which let us use their computer after hours on Friday nights, and synched up all the programs and data. It was rare there was a conflict, as Ted had each transaction log down to the millisecond of a given day, even though the time might be off a few minutes between all the computers we had used. Then we rolled out all the changes back to our client's computers the next week as we visited them (the long-forgotten sneaker-net). Now, if Ted could do that in a month, I wonder why Microsoft has had so much trouble over thirty years? Which all goes to show, one motivated to find-a-new-career-truck-driver can often do a better job that a "Seattle campus" filled with certified geniuses.

Sorry that I keep adding little edits, but (there's the big but), the main driver program for my "forms" program took 45 minutes to compile. Two years ago, when I had it running again, it compiled in less than a second. So, in my mind, there's no reason with the power available today, that MS can't do things we did forty years ago on a Friday evening (with beer and pizza).

Anyways, I think we come up out of one rabbit hole and gone down another from the original post. I've lost track of where that happened.
 
Last edited:
Yes/No Yes and No values and fields that contain only one of two values (Yes/No, True / False, or On/Off). 1 bit.
Then how is it possible that true = -1? I'm pretty sure my old MS manual is confusing field type of yes/no with the VBA "compatible Access Basic data type" in the explanation. They don't show the actual size used in Access. And my F1 on the topic in Access goes off into Wonderland. Whatever happened to the local helps that didn't need Internet access (which I often don't have)?
 
Then how is it possible that true = -1? I'm pretty sure my old MS manual is confusing field type of yes/no with the VBA "compatible Access Basic data type" in the explanation. They don't show the actual size used in Access. And my F1 on the topic in Access goes off into Wonderland. Whatever happened to the local helps that didn't need Internet access (which I often don't have)?
If the data is in Access, True is -1. However if data is in SQL Server, then True is 1. False is always 0. Therefore, to test for true, I like to test for <>False or <>0

EDIT:
Yes/No's bit is stored in a byte unlike the byte data type whose range is 0 to 255
I often store Yes/No as an integer to avoid the byte data type and let the value be null (unlike the integer type in VBA, which can't be null).

Hi Crystal,
It works perfectly now. Many thanks.
you're welcome and thank you
 
Last edited:
Hi George, the problem is, everyone thinks that databases started with SQL or Access. Forty years ago we had to write our own from scratch, with the idea of distribution in mind. My business partner Ted took about a month to write the code. It worked great. I can't provide a link, as this was well before the Internet and it was proprietary code which I no longer have anyways.

Besides just handling integrity, Ted handled synchronization on the record and field level with a pretty sophisticated transaction logging routine(s). We first had to do this as four of us were writing code and creating tables with what little time we could "borrow" from client's mini computers (we couldn't afford our own back then at a cost of over $50,000 for the cheapest model--not to mention the space and air-conditioning to run it). Once a week we all brought our 1/2" tapes to the vendor's sales office, which let us use their computer after hours on Friday nights, and synched up all the programs and data. It was rare there was a conflict, as Ted had each transaction log down to the millisecond of a given day, even though the time might be off a few minutes between all the computers we had used. Then we rolled out all the changes back to our client's computers the next week as we visited them (the long-forgotten sneaker-net). Now, if Ted could do that in a month, I wonder why Microsoft has had so much trouble over thirty years? Which all goes to show, one motivated to find-a-new-career-truck-driver can often do a better job that a "Seattle campus" filled with certified geniuses.

Sorry that I keep adding little edits, but (there's the big but), the main driver program for my "forms" program took 45 minutes to compile. Two years ago, when I had it running again, it compiled in less than a second. So, in my mind, there's no reason with the power available today, that MS can't do things we did forty years ago on a Friday evening (with beer and pizza).

Anyways, I think we come up out of one rabbit hole and gone down another from the original post. I've lost track of where that happened.
I am not at all sure where in that gray wall of text you think you addressed the critical point about two distinct databases and the lack of Referential Integrity across them. However, it's clear that this is indeed a dank rabbit hole. I'm going to move on to other things. Best of luck with your original project.
 

Users who are viewing this thread

Back
Top Bottom