I'm developing a system that make use of national ID one of "identifying record" is it a good idea to embed nat_id in all the tables to make query easier? What are the downsides of doing so? I just want to get opinions from people here in SO because I might miss something important.
Using National ID as Primary Key
649 Views Asked by Random Joe AtThere are 2 best solutions below
nvogel
On
Whether national ID would make a good key or not depends largely on your requirements. Is it a requirement to record national ID as part of the business process and that users/employees/whoever are uniquely identified in that way? Are you legally entitled to ask people for that information? Are they obliged to disclose their national ID to you? If yes to all these then it probably makes good sense for you to make it a key in the database.
Make sure you understand any standards for the national IDs that you'll need to support. E.g. length, data type, any check digits and whether there are legacy codes or other special purpose codes in use that may not match the expected rules.
If there are privacy concerns and you don't need to retrieve the actual ID from the database then you could store a secure hash of the national ID instead.
Related Questions in POSTGRESQL
- Only the first SQL script gets executed inside Docker Postgres container
- Compare fields in two tables
- Hibernate ClobJdbcType bindings: what are the diferences?
- Postgres && statement Error in Mybatis Mapper?
- Can this query be optimized? (Choosing a random row to insert, that excludes previously inserted Rows)
- Connection terminated unexpectedly while performing multi row insert using pg-promise
- Processing multiple forms in nodejs and postgresql
- How to copy data from SQLite to postgreSQL?
- PGAdmin4 configured behind a reverse proxy but unable to connect to Postgresql server
- Updates to pgsodium encrypted values don't use specified key_id
- Connecting to Postgres running in a Docker container using psql
- Can't connect to local postgresql server from my docker container
- Django Arrayfield migration to cloud sql (Postgresql) not creating the column
- Get list of matching keywords for each post
- docker-compose can't reset postgresql database
Related Questions in DATABASE-DESIGN
- SQL schema for a fill-in-the-blank exercise
- When an E-R attribute should be perceived as a relationship attribute or as an entity set attribute?
- steps to create a web app with backend and database and web
- Use data type uuid or varchar(36) for my UUID column?
- Containing Object Design
- Many-to-many relationship between objects of the same type
- When hashing an API key, should I hash the suffix / prefix as well?
- Database design, authentication and authorization in a microservices ticketing system
- Unique index on 3 columns where NULL conflicts with all other values in one column
- Can i create a table with 2 foreign keys? These 2 foreign keys are 2 primary keys of 2 different tables
- I have a basic ms access question about a relationship between 3 tables
- how can i calculate mutual friends/followers efficiently?
- Access Table ,setting in design ,column 'Catagory' as Combobox in lookup with list "Action";"War";"Drama". in vb.net DGV and Detail how to multiselct
- Table Design for Calculating Median Over User-Defined Period from Pre-Processed Data
- Use conditional constraint or normalize table?
Related Questions in PRIMARY-KEY
- Claves combinadas
- Postgresql Primary Key Index Maintenance
- "Number of referencing columns in foreign key differs from number of referenced columns" inline error
- Entity Framework Core 7 - configuring two keys
- Create a flexible key for merge in R
- Record versioning and approving changes TypeOrm postgres
- Primary key issue of a table imported from CSV, using MySQL Workbench (Linux Mint 21 Vanessa)
- Why Hibernate now uses TABLE strategy as default for MySQL?
- how to make a django model with no id column and primary key?
- CockroachDB: The best way to turn a UNIQUE CONSTRAINT into a PRIMARY KEY?
- Alter entries of Primary key in table to match number of rows from COUNT Postgresql
- How to update a part of primary key if it is a combination of three columns
- Is it wise to construct a custom string (combination of entity, year and alphanumeric) to have as a primary key for a postgres database in Django?
- Django filtering with Custom primary key
- TypeORM joins by multiple PrimaryColumns ignoring defined JoinColumn
Related Questions in RDBMS
- Prisma Many to Many relationship with at least one value
- Precedence of operators in SQL
- How do I create columns that add a tag if it matches with a keyword from a different dataset?
- Does replacing string column with repeating values at some point with an int FK have any performance benefits in RDBMS?
- How will Spring boot work with Sql Response?
- How to replicate the "Script as Create" functionality from Azure Data Studio in python using pyodbc?
- How to properly connect GCP Cloud Functions with Relational Databases
- Unable to run pg_buffercache_pages() function
- Does it make sense to continue looking for comparison table where I could see the difference between completely different DB types?
- Extracting values from JSON list
- Difference between local, session and shared preload library in PostgreSQL and use of LOAD command
- Google Android Management API - mapping Map<K,V> fields
- What is the design logic for postgresql to not provide the construct as 'create database IF NOT EXISTS dbname'?
- RDBMS Many To Many Relationships Django
- How many entity tables should I have? User table attribute role or three tables for the roles?
Related Questions in NATURAL-KEY
- Is it possible to have a natural and surrogate multicolumn primary key?
- Filtering by natural key?
- Django Natural Keys Unable to Load For Some Models
- Rest with natural keys: Can a 201 Created response to HTTP PUT include a Location header that differs from the request URI?
- Why would one consider using Surrogate keys vs Natural with ON UPDATE CASCADE?
- Unique constraints on their own or as a primary key?
- How can I reach second level natural keys on django query?
- What are some good candidate keys for ‘person’?
- Django: no attribute 'get_by_natural_key'
- Re-processing fact records when a change has occurred to one of the related Type 2 dims. What to do with key on Fact table?
- Django fixtures many to many with natural keys over multiple fields
- Natural key for sign polarity
- What are the type of data problems that relational databases have when they are designed using natural keys (and not surrogate keys)?
- Mostly immutable NaturalId
- How to model a one-to-one relationship in JPA when the "parent" table has a composite PK?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
As suggested by @Oded, there may be legal and privacy implications (that very much depends on your country).
One example of a privacy issue is that in some countries the person's date of birth -- and in some countries their gender -- is part of their national ID number. Replicating that into every table in your schema might not be a great idea, since it will make it hard to restrict access to this information.
On top of that, there are several purely technical concerns:
I would use a surrogate primary key, and would store the national ID as an attribute.