ArtsAutosBooksBusinessEducationEntertainmentFamilyFashionFoodGamesGenderHealthHolidaysHomeHubPagesPersonal FinancePetsPoliticsReligionSportsTechnologyTravel

database application development -- tables

Updated on April 24, 2013

Once you have determined the need for a database application, the next step is to determine what data you need (and what data you do NOT need). Then you must organize it in the best way for the purpose of the application. So, for instance, you would set up personnel information differently for an accounting application than for a team roster.

I find that I like to develop Access applications backwards. That is, find out what the client wants in the end, and be sure the tables, fields relationships, and so on, will produce that end. And often while you are developing, you see other demographics or queries the client may want in the future; make sure they are available when it dawns on the client in the future – you will save yourself a lot of grief.

Tables should not be loaded with unnecessary fields, but related fields should be kept together. If you have a car sales room, you should keep employee information in a separate table from customer information, since you need different fields for each after the address and phone number.

Keep in mind that you do not want to waste time or memory, so customize the fields as much as necessary from the outset. However, err on the side of generosity until the database is well-established.

Data types – Access (and most RDBMSs) allows you to define the information in each field – currency, dates and times, text, different types of numbers. But you can also customize these further for format and content. The most common data types are text (even numbers such as zip codes and phone numbers should be text), number (both integer and decimal), date (which includes time), hypertext link (web sites) and lookup. A short number is a decimal; a short integer only goes to about 3600 and has no negatives; a long integer is unlimited and can be negative. For dates and times you can define the format; this only determines how the information is displayed, not how it is saved or entered. The hypertext data type is very handy – you can open up WWW sites directly. For instance, I keep a database on my desktop which has information on the gazillion sites where I am registered. I can open the record for PayPal, and find out what my username and password are, which e-mail address was used – and click right on the hyperlink field to get there.

Most Access is set up with a default text length of 50 characters – this is too many for a first name, and too little for a description of a topic. Text fields can be up to 256 characters in length; define it as as small a length as practicable. If you expect a number to include a fraction, select “double” as the format; otherwise, select “integer”, since that requires the least amount of memory. For dates, you can select time formats, and various date formats. These selections are available on the grid below the list of fields – changing for each field in which the cursor is sitting. The description area after the data type is for ‘hints’ – this shows up in the status bar when the cursor is in that field.

The Lookup data type – avoids typos and mismatched information by limiting the entries in a field by creating a list for the user. I usually create a “base table” first, containing the selections I want to go in that field. Then the wizard takes over when you select that data type. Access automatically builds a relationship between the base table and the one holding the lookup data type.

You can also select a default value for a field, which saves the user a lot of time in data entry. For instance, if 80% of your clients are in North Dakota, enter that as the default value in the State field – the person doing data entry can change it if the client is from Florida. This is not a locked value.

You can set up parameters for the values to be entered as well. For instance, I created an Access database test for my Access students. One of the first things they had to do was enter the date they took the test. If that date was not the current date, they were lying about when they took the online test – the test was terminated.

You can index fields. But remember that the more indexes in a table the longer it takes to search the table. The usual recommendation is to index 1:8 (one indexed field if you have 8 fields). The key is also an index that allows no duplications.

Keep text fields as small as you can, since the database will reserve that memory size. If possible, instead of using the Memo type, use a text box (255 characters is the limit). The reason is that Memo fields cannot be printed off in a report. You can also put default data into a field, and either lock it or don’t. My feeling is that if the field is locked, it means that it can never hold any other data. If that’s true, why put it in at all? I had this problem with a database that the state was having one of my clients fill in monthly. The only zip codes you could enter were those in its list; if the zip code wasn’t on the list you could enter “00000” during a patient intake – but on discharge you had to choose a zip on the list. This was a problem because I live and work near the Rhode Island border, and about 2% of my client’s patients were from RI.

But if the vast majority of the time the information is the same, then set it as a default, to be changed when necessary. For instance, if I am developing a mailing list for a local not-for-profit, I know that 90% of the time the state in the address will be Connecticut. So I type that into the state field, and then the data entry person doesn’t have to type anything in that field unless it is NOT Connecticut. This can save a lot of time.

I am not a big proponent of coding everything with autonumbering ID fields – sometimes one of the fields, or a combination of them, are preferable. I know this is what they teach now, and it’s to let habits coincide with different DBMS setups. But one must be careful of not duplicating autonumbers in different tables. And readouts can become very cryptic as keys take over information. If the key field is short (up to 5 characters of text or a long integer), use it as its contents. If the key could change, as in a name, use an autonumber instead.

Text fields should not be left as the default 50 characters. Access does not save the memory until there is data in a field, but if you have “ABC” in the field it will then save 50 chars. So define the chars as the maximum that might be needed and no more – 15 for names, for instance. You can expand it if needed later. That’s one of the nice features of a relational database.

Avoid memo fields – they cannot be linked and chew up memory. If you cannot enter 255 characters or less into a text field, rethink your structure.

Memo field specifications

Memo fields in Office Access 2007 can store up to 1 gigabyte of characters, or 2 gigabytes of storage (2 bytes per character), of which you can display 65,535 characters in a control on a form or report. In addition, you can now apply rich-text formatting to the data in a Memo field. For example, you can set colors, change fonts, and make data bold or italic ….

Unicode Compression

Access uses Unicode to represent data in Text, Memo, and Hyperlink fields. Unicode takes up more storage space because it uses 2 bytes per character instead of one. To help reduce file size, the default value of the Unicode Compression property for a Text, Memo, or Hyperlink field is Yes. When set to Yes, any character whose first byte is 0 is compressed when it is stored and uncompressed when it is retrieved.

Data in a Memo field is not compressed unless it requires 4,096 bytes or less of storage space after compression. As a result, the contents of a Memo field might be compressed in one record, but might not be compressed in another record.

retrieved 12/17/06

Field names should be short and clear – avoid overly cryptic names; the user will need to memorize them. If the field name is overly long, use the caption property to enter an easier name to recognize. I rarely use the caption property – better to name a field SysInfo, which is clear as to its purpose, than Customer’s System Information.

I also do not recommend building relationships at the beginning of a database design – I let them automatically develop as I build queries. But sometimes setting up relationships can help you figure out how to arrange the data. I’d rather use one of the UML modeling diagrams – or delete the relationships once I have it under control.

Sorting is easiest in the list view of the data table. Just select the heading on the field that you want to sort and click AàZ (ascending sort) or ZàA (descending). I do this to check some aspects of data integrity – blank field entries will show up at the top with an ascending sort; and it’s easy to scan down the field to find typos.

Filtering is another feature that I use constantly and teach to my users. Filtering takes all or part of a field entry and shows only those records that meet that criterion. It’s a nice down-and-dirty way to check for duplicates or variations. Just be careful when you close the table – Access will ask you if you want to save the design of the table. If you do, it will always be filtered after that – it appears as if you lost all the rest of the data! If you say no to the design – all the data will remain intact.

You can also ‘block’ the display of specific fields when you only need to read a few of them, so that in the datasheet view you don’t have to scroll, by selecting the fields you do not want to see; select the “Format” menu and click on “hide”.

Rather than save changes in the design of a table as you use the data, if you will be wanting to view the data in the same filtered or sorted manner several times, create a query (or even a form, depending on the desired result) to achieve the same thing. For instance, I have a database of all the static information on the network devices, but most of the time I am interested only in the device name, IP address, location and focus file name. So I whipped up a select query that only shows those fields, which I use several times a day. I can specify a particular location when I run the query if desired.

Oversized Databases: As you work on your databases, Access saves every keystroke (yeah, every single one), rather than just the end result. So you may suddenly find you are uploading and downloading huge files. To fix this problem, you need to "compact" or "pack" the database. To do so, open it and use the Tools menu \ Database Utilities \ Compact and Repair Database. The database will be packed under the same name as a snapshot of its current condition. You will be amazed at the resulting size, especially if you format the fields the right way.

All of this information is not just advice on managing MS Access – these are applicable to any RDBMs, and just as necessary.


    0 of 8192 characters used
    Post Comment

    No comments yet.


    This website uses cookies

    As a user in the EEA, your approval is needed on a few things. To provide a better website experience, uses cookies (and other similar technologies) and may collect, process, and share personal data. Please choose which areas of our service you consent to our doing so.

    For more information on managing or withdrawing consents and how we handle data, visit our Privacy Policy at:

    Show Details
    HubPages Device IDThis is used to identify particular browsers or devices when the access the service, and is used for security reasons.
    LoginThis is necessary to sign in to the HubPages Service.
    Google RecaptchaThis is used to prevent bots and spam. (Privacy Policy)
    AkismetThis is used to detect comment spam. (Privacy Policy)
    HubPages Google AnalyticsThis is used to provide data on traffic to our website, all personally identifyable data is anonymized. (Privacy Policy)
    HubPages Traffic PixelThis is used to collect data on traffic to articles and other pages on our site. Unless you are signed in to a HubPages account, all personally identifiable information is anonymized.
    Amazon Web ServicesThis is a cloud services platform that we used to host our service. (Privacy Policy)
    CloudflareThis is a cloud CDN service that we use to efficiently deliver files required for our service to operate such as javascript, cascading style sheets, images, and videos. (Privacy Policy)
    Google Hosted LibrariesJavascript software libraries such as jQuery are loaded at endpoints on the or domains, for performance and efficiency reasons. (Privacy Policy)
    Google Custom SearchThis is feature allows you to search the site. (Privacy Policy)
    Google MapsSome articles have Google Maps embedded in them. (Privacy Policy)
    Google ChartsThis is used to display charts and graphs on articles and the author center. (Privacy Policy)
    Google AdSense Host APIThis service allows you to sign up for or associate a Google AdSense account with HubPages, so that you can earn money from ads on your articles. No data is shared unless you engage with this feature. (Privacy Policy)
    Google YouTubeSome articles have YouTube videos embedded in them. (Privacy Policy)
    VimeoSome articles have Vimeo videos embedded in them. (Privacy Policy)
    PaypalThis is used for a registered author who enrolls in the HubPages Earnings program and requests to be paid via PayPal. No data is shared with Paypal unless you engage with this feature. (Privacy Policy)
    Facebook LoginYou can use this to streamline signing up for, or signing in to your Hubpages account. No data is shared with Facebook unless you engage with this feature. (Privacy Policy)
    MavenThis supports the Maven widget and search functionality. (Privacy Policy)
    Google AdSenseThis is an ad network. (Privacy Policy)
    Google DoubleClickGoogle provides ad serving technology and runs an ad network. (Privacy Policy)
    Index ExchangeThis is an ad network. (Privacy Policy)
    SovrnThis is an ad network. (Privacy Policy)
    Facebook AdsThis is an ad network. (Privacy Policy)
    Amazon Unified Ad MarketplaceThis is an ad network. (Privacy Policy)
    AppNexusThis is an ad network. (Privacy Policy)
    OpenxThis is an ad network. (Privacy Policy)
    Rubicon ProjectThis is an ad network. (Privacy Policy)
    TripleLiftThis is an ad network. (Privacy Policy)
    Say MediaWe partner with Say Media to deliver ad campaigns on our sites. (Privacy Policy)
    Remarketing PixelsWe may use remarketing pixels from advertising networks such as Google AdWords, Bing Ads, and Facebook in order to advertise the HubPages Service to people that have visited our sites.
    Conversion Tracking PixelsWe may use conversion tracking pixels from advertising networks such as Google AdWords, Bing Ads, and Facebook in order to identify when an advertisement has successfully resulted in the desired action, such as signing up for the HubPages Service or publishing an article on the HubPages Service.
    Author Google AnalyticsThis is used to provide traffic data and reports to the authors of articles on the HubPages Service. (Privacy Policy)
    ComscoreComScore is a media measurement and analytics company providing marketing data and analytics to enterprises, media and advertising agencies, and publishers. Non-consent will result in ComScore only processing obfuscated personal data. (Privacy Policy)
    Amazon Tracking PixelSome articles display amazon products as part of the Amazon Affiliate program, this pixel provides traffic statistics for those products (Privacy Policy)
    ClickscoThis is a data management platform studying reader behavior (Privacy Policy)