Table of Contents
Reply content:
Solution
Home Backend Development PHP Tutorial How can all users share one table in the database, but each user's order number has an independent namespace?

How can all users share one table in the database, but each user's order number has an independent namespace?

Aug 04, 2016 am 09:20 AM
java mysql php sql database

1. Actual scenario:
The order table in the database is public, and all users are on one order table.
How to make each user’s order number an independent namespace? For example, if user A places two orders, his order numbers should be C001 and C002, and if user B places three orders, the starting position of his numbers should still be C001, not C003, and all his order numbers should be C001. C002,C003.
How to do this?
Is it necessary to save a field under each user for how many orders he has currently opened, and then read it out first, add one, and then save it back? This is not good... Is there a better way to do it on the database side? I seem to have heard someone talk about using database functions or triggers?

2. If the database can do the above, does this C001 generally exist in the primary key field? Or is the primary key still an incremental primary key of numeric type, just adding a field to the table to store this C001?

Note: It is in the Mysql database.

Reply content:

1. Actual scenario:
The order table in the database is public, and all users are on one order table.
How to make each user’s order number an independent namespace? For example, if user A places two orders, his order numbers should be C001 and C002, and if user B places three orders, the starting position of his numbers should still be C001, not C003, and all his order numbers should be C001. C002,C003.
How to do this?
Is it necessary to save a field under each user for how many orders he has currently opened, and then read it out first, add one, and then save it back? This is not good... Is there a better way to do it on the database side? I seem to have heard someone talk about using database functions or triggers?

2. If the database can do the above, does this C001 generally exist in the primary key field? Or is the primary key still an incremental primary key of numeric type, just adding a field to the table to store this C001?

Note: It is in the Mysql database.

1: There is no need to store them in the database like this. You only need to traverse all the orders and display them in order.
2: Add static member variables to each user attribute, and add corresponding fields to the database. The data added each time will be what you said.

What the poster means is to establish a unified order management library for different customer accounts. Different accounts can only see their own orders, which is somewhat similar to cloud ERP.

The order table can have a redundant primary key id. In terms of data storage uniqueness, it can be viewed as order code + user id to uniquely confirm a piece of data.

If you need to optimize the design of the table structure, you can automatically create an order table according to each user, and separate the order data of each user. The table name is similar to order_userid. Each time the corresponding table name is found according to the user, the data is fetched, but at the end The comprehensive background statistics of all user order data may be a little troublesome.

How can you ensure the uniqueness of your order

If the database is designed according to the meaning of the title, only the operation of finding orders will cause an exception. Because we cannot determine the unique order based on the order number.
The value of the primary key is used to uniquely identify a record in the table.

(About your project
I suggest:
The primary key of the Order table can be OrderId
And the primary key of the User table can be UserId
I think your problem should lie in the basic understanding of database tables. It is recommended to read Database Normalization related content )

.

  1. Use an orderid table to store the IDs of all users' next orders. If you find it troublesome, it is recommended that you use time as part of the order number.

  2. Cannot be used as a primary key. There is a principle in primary key design - it must be irrelevant to the business. Therefore, the primary key will always be a meaningless auto-incrementing ID or the like.

I don’t see what actual need your question is trying to solve

The design of table structure must comply with the requirements of the three most basic paradigms. The purpose of the three paradigms is to ensure that there is no redundancy or dependency between fields. I won’t repeat the issues mentioned above. Your design like this violates the principles of the three major paradigms of database table structure design. I suggest you clarify your requirements carefully. You should not do such a design, or we have misunderstood it. You rephrase the question. Or directly post your table creation statement.

You can use a joint primary key to combine uid and cid, which ensures uniqueness. But please pay attention to the following two points:
1. To use mysql joint primary key auto-increment, you need to use MyISAM as the storage engine.
2. When using a union to auto-increment the primary key, the auto-increment key cannot be the leftmost key of the primary key.

Just add a user_owner_order_key to the order table, and then write your own code to handle the exchange logic between C001 and the real order_id.

<code>//伪码 
$user_owner_order_id = (select count(*) from order where user = $uid and order_id < $currentOrderId order by order_id asc) + 1;
$user_owner_order_key = $uid . fillZero($user_owern_order_id);</code>
Copy after login

To talk about another issue, generally third-party payment cannot make multiple payments for the same order number, so it is best to consider carefully whether to do so.

Solution


  1. The user table can have a field to store the order quantity. Every time there is a new order, add one to this value and then update it back;

  2. The new order gets the number of existing orders, plus one. However, when deleting the order, it must be soft deleted

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP and Python: Comparing Two Popular Programming Languages PHP and Python: Comparing Two Popular Programming Languages Apr 14, 2025 am 12:13 AM

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

PHP's Current Status: A Look at Web Development Trends PHP's Current Status: A Look at Web Development Trends Apr 13, 2025 am 12:20 AM

PHP remains important in modern web development, especially in content management and e-commerce platforms. 1) PHP has a rich ecosystem and strong framework support, such as Laravel and Symfony. 2) Performance optimization can be achieved through OPcache and Nginx. 3) PHP8.0 introduces JIT compiler to improve performance. 4) Cloud-native applications are deployed through Docker and Kubernetes to improve flexibility and scalability.

PHP: The Foundation of Many Websites PHP: The Foundation of Many Websites Apr 13, 2025 am 12:07 AM

The reasons why PHP is the preferred technology stack for many websites include its ease of use, strong community support, and widespread use. 1) Easy to learn and use, suitable for beginners. 2) Have a huge developer community and rich resources. 3) Widely used in WordPress, Drupal and other platforms. 4) Integrate tightly with web servers to simplify development deployment.

PHP: A Key Language for Web Development PHP: A Key Language for Web Development Apr 13, 2025 am 12:08 AM

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

MySQL's Place: Databases and Programming MySQL's Place: Databases and Programming Apr 13, 2025 am 12:18 AM

MySQL's position in databases and programming is very important. It is an open source relational database management system that is widely used in various application scenarios. 1) MySQL provides efficient data storage, organization and retrieval functions, supporting Web, mobile and enterprise-level systems. 2) It uses a client-server architecture, supports multiple storage engines and index optimization. 3) Basic usages include creating tables and inserting data, and advanced usages involve multi-table JOINs and complex queries. 4) Frequently asked questions such as SQL syntax errors and performance issues can be debugged through the EXPLAIN command and slow query log. 5) Performance optimization methods include rational use of indexes, optimized query and use of caches. Best practices include using transactions and PreparedStatemen

The Enduring Relevance of PHP: Is It Still Alive? The Enduring Relevance of PHP: Is It Still Alive? Apr 14, 2025 am 12:12 AM

PHP is still dynamic and still occupies an important position in the field of modern programming. 1) PHP's simplicity and powerful community support make it widely used in web development; 2) Its flexibility and stability make it outstanding in handling web forms, database operations and file processing; 3) PHP is constantly evolving and optimizing, suitable for beginners and experienced developers.

PHP vs. Python: Core Features and Functionality PHP vs. Python: Core Features and Functionality Apr 13, 2025 am 12:16 AM

PHP and Python each have their own advantages and are suitable for different scenarios. 1.PHP is suitable for web development and provides built-in web servers and rich function libraries. 2. Python is suitable for data science and machine learning, with concise syntax and a powerful standard library. When choosing, it should be decided based on project requirements.

PHP vs. Other Languages: A Comparison PHP vs. Other Languages: A Comparison Apr 13, 2025 am 12:19 AM

PHP is suitable for web development, especially in rapid development and processing dynamic content, but is not good at data science and enterprise-level applications. Compared with Python, PHP has more advantages in web development, but is not as good as Python in the field of data science; compared with Java, PHP performs worse in enterprise-level applications, but is more flexible in web development; compared with JavaScript, PHP is more concise in back-end development, but is not as good as JavaScript in front-end development.

See all articles