Navicat Blog

3 Things You Should Never Store in Your Database Jan 19, 2024 by Robert Gravelle

In the digital age, databases play a vital role in managing and organizing information for countless applications and systems. As stewards of valuable data, it's essential for businesses and developers to be mindful of the types of information stored in their databases. While databases are designed to efficiently handle data, there are certain types of information that should almost never be stored in a database. In this article, we'll explore three things you should avoid storing in your database to maintain data integrity, security, and compliance.

1. Duplicate and Redundant Data

Storing duplicate or redundant data in your database might seem harmless at first, but it can lead to a host of issues down the line. Duplicate data not only wastes storage space but also introduces the risk of inconsistencies and errors. When information is duplicated across multiple records, updating one instance may be overlooked, resulting in discrepancies that can compromise the accuracy of your data.

To address this, databases should be designed with normalization principles in mind. Normalization involves organizing data to minimize redundancy and dependency, ensuring that each piece of information is stored in one place. By doing so, you not only optimize storage but also enhance data consistency and integrity.

2. Credit Card Information

In the realm of online transactions and e-commerce, the protection of financial information is paramount. Storing credit card information in a database poses significant risks and raises serious concerns about compliance with industry standards such as the Payment Card Industry Data Security Standard (PCI DSS). The PCI DSS outlines strict guidelines for handling and securing credit card data to prevent fraud and protect consumers.

Rather than storing credit card information directly, businesses should leverage secure payment gateways. Payment gateways facilitate the secure transmission of credit card information between the customer, the merchant, and the financial institution. This not only reduces the risk of data breaches but also ensures compliance with industry regulations.

3. Sensitive Personal Identifiable Information (PII)

Storing sensitive personal information, such as social security numbers, passport details, or driver's license numbers, in a database without proper safeguards is a recipe for disaster. PII is a prime target for identity theft and can be misused for fraudulent activities if it falls into the wrong hands. Even if encryption is applied to the database, the risk remains high, as decryption keys could potentially be compromised.

To mitigate this risk, it's advisable to implement tokenization or pseudonymization techniques for handling PII. Tokenization involves replacing sensitive data with unique tokens, rendering the original information unreadable. Pseudonymization involves replacing or encrypting sensitive identifiers with reversible algorithms, ensuring data protection while maintaining usability for authorized users.

Exceptions and Considerations

While some values may be derived from other fields, exceptions may be made for performance reasons. In cases where you have millions of records, it's sometimes preferable to fetch the actual value from the database as opposed to cycling through records and dynamically calculating the answer every time. With that in mind, here are a couple of fields that you may want to store in your database:

Retail Price

The retail price of an item is often calculated as the cost plus the tax. However, this seemingly simple concept introduces complexities when underlying prices change or new sales taxes go into effect. Storing the calculated price in the database requires an 'as of date' along with it for context. This allows for a historical view of prices, ensuring accurate records even when factors affecting pricing change over time.


Storing age information may seem unnecessary when you have someone's birthday and today's date. However, considering that age changes over time, storing the 'as of date' of the record and the 'as of age' at the time of storage eliminates the need for sometimes tricky calculations. This approach ensures that age-related information remains accurate, providing a snapshot of the individual's age at a specific point in time.

If you ever need to store a calculated field, you can quickly create an insert trigger in Navicat 16.

navicat-trigger (53K)


Knowing which pieces of data to include in your database is just as important as understanding what to exclude. By avoiding the storage of duplicate and redundant data, sensitive personal information, and certain types of information better suited for dynamic calculations, you not only optimize storage but also enhance data consistency, integrity, and security.

Navicat Blogs
Feed Entries
Blog Archives