目录
回复内容:
解决方法
首页 后端开发 php教程 在数据库中怎么做到所有用户共用一张表,但是每个用户的订单编号却是独立的命名空间?

在数据库中怎么做到所有用户共用一张表,但是每个用户的订单编号却是独立的命名空间?

Aug 04, 2016 am 09:20 AM
java mysql php sql 数据库

1.实际场景:
数据库中订单表是公用的,所有用户在一张订单表上。
怎么让每个用户的订单编号是独立的命名空间?比如用户A下了两张订单,他的订单编号应该是C001、C002,用户B下了三张订单,他的编号起始位置应该还是C001,而不是C003,他的所有订单编号应该是C001,C002,C003。
请问怎么做到这一点?
难道要在每个用户底下存一个他当前开了多少个订单的字段,然后每次先读出来,加一,再存回去?这不太好吧……有没有更好的方法,在数据库端就做了?好像听人说起过用数据库函数或者触发器?

2.如果数据库能做到上述这一点,请问这个C001一般是存在主键字段里么?还是主键依然是一个数字类型的递增主键,只是在表中增加一个字段去存这个C001?

注:是在Mysql数据库中。

回复内容:

1.实际场景:
数据库中订单表是公用的,所有用户在一张订单表上。
怎么让每个用户的订单编号是独立的命名空间?比如用户A下了两张订单,他的订单编号应该是C001、C002,用户B下了三张订单,他的编号起始位置应该还是C001,而不是C003,他的所有订单编号应该是C001,C002,C003。
请问怎么做到这一点?
难道要在每个用户底下存一个他当前开了多少个订单的字段,然后每次先读出来,加一,再存回去?这不太好吧……有没有更好的方法,在数据库端就做了?好像听人说起过用数据库函数或者触发器?

2.如果数据库能做到上述这一点,请问这个C001一般是存在主键字段里么?还是主键依然是一个数字类型的递增主键,只是在表中增加一个字段去存这个C001?

注:是在Mysql数据库中。

1:数据库中不用那样存,你只需要遍历出来所有定单之后,显示时按顺序就行了。
2:给每个用户属性中增加静态成员变量,并且数据库中相应增加字段,每次加入的数据就是你说的样子了。

楼主的意思应该是建立不同客户账户的统一订单管理库,不同账户只能看到属于自己的订单,有点类似云erp。

订单表可以冗余一个主键id,在数据存储唯一性上面,可以看为订单code+用户id来唯一确认一条数据。

如果说需要表结构优化设计的话,可以根据每个用户自动建立一张订单表,将每个用户的订单数据独立出来,表名类似order_userid 每次根据用户找到对应表名取数据,但在最后的综合后台对所有用户订单数据统计可能会稍微麻烦些。

请问你如何保证订单的唯一

如果根据题述意思设计数据库,则仅查找订单这一操作就将出现异常。因为我们根据订单号无法确定唯一订单
主键的值用于唯一地标识表中的某一条记录。

(关于你的项目
我建议:
订单这张表的主键可以是OrderId
而用户表的主键可以是UserId
我认为您的问题应该出在数据库表的基本理解上。建议阅读数据库规范化的相关内容。)

  1. 用一个orderid表存放所有用户下一个order的id,如果觉得麻烦建议你用时间作为订单号的一部分。

  2. 不能作为主键,主键设计有一个原则——必须是和业务无关的。所以主键永远都是无意义的自增ID之类的。

我看不出你这个问题是要解决什么实际的需求

表结构的设计,要遵守最基本的三个范式的要求。三个范式的目的,是要保证字段之间不要有冗余,不要有依赖。上面几位说的问题,我就不重复了,你这样设计,违反了数据库表结构设计的三大范式的原则,建议你好好理清楚需求,不应该做这样的设计,或者我们理解错了,你把问题重新表述一番。或者直接贴出你的建表语句来。

可以使用联合主键将uid和cid组合起来,这就就可以保证唯一性了。但要注意如下两点:
1、要使用mysql联合主键自增,需使用MyISAM作为存储引擎。
2、使用联合 主键自增的时候,自增键不能是主键最左的键。

order表里面增加一个user_owner_order_key,然后自己写代码处理 C001 这种东西与真实order_id之间的互换逻辑就行了。

<code>//伪码 
$user_owner_order_id = (select count(*) from order where user = $uid and order_id </code>
登录后复制

说一个其他方面的问题,一般的第三方支付对于同一个订单号是无法多次付款的,所以最好考虑清楚要不要这样做。

解决方法


  1. 用户表可以有一个字段存放订单数量,每次有新订单就取这个值加一,然后更新回去;

  2. 新订单获取已有订单的条数,加一,不过这个删除订单的时候必须是软删除了

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PHP和Python:比较两种流行的编程语言 PHP和Python:比较两种流行的编程语言 Apr 14, 2025 am 12:13 AM

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP的持久相关性:它还活着吗? PHP的持久相关性:它还活着吗? Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在现代编程领域中依然占据重要地位。1)PHP的简单易学和强大社区支持使其在Web开发中广泛应用;2)其灵活性和稳定性使其在处理Web表单、数据库操作和文件处理等方面表现出色;3)PHP不断进化和优化,适用于初学者和经验丰富的开发者。

PHP的目的:构建动态网站 PHP的目的:构建动态网站 Apr 15, 2025 am 12:18 AM

PHP用于构建动态网站,其核心功能包括:1.生成动态内容,通过与数据库对接实时生成网页;2.处理用户交互和表单提交,验证输入并响应操作;3.管理会话和用户认证,提供个性化体验;4.优化性能和遵循最佳实践,提升网站效率和安全性。

PHP行动:现实世界中的示例和应用程序 PHP行动:现实世界中的示例和应用程序 Apr 14, 2025 am 12:19 AM

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP和Python:代码示例和比较 PHP和Python:代码示例和比较 Apr 15, 2025 am 12:07 AM

PHP和Python各有优劣,选择取决于项目需求和个人偏好。1.PHP适合快速开发和维护大型Web应用。2.Python在数据科学和机器学习领域占据主导地位。

PHP:处理数据库和服务器端逻辑 PHP:处理数据库和服务器端逻辑 Apr 15, 2025 am 12:15 AM

PHP在数据库操作和服务器端逻辑处理中使用MySQLi和PDO扩展进行数据库交互,并通过会话管理等功能处理服务器端逻辑。1)使用MySQLi或PDO连接数据库,执行SQL查询。2)通过会话管理等功能处理HTTP请求和用户状态。3)使用事务确保数据库操作的原子性。4)防止SQL注入,使用异常处理和关闭连接来调试。5)通过索引和缓存优化性能,编写可读性高的代码并进行错误处理。

PHP:轻松创建交互式Web内容 PHP:轻松创建交互式Web内容 Apr 14, 2025 am 12:15 AM

PHP可以轻松创建互动网页内容。1)通过嵌入HTML动态生成内容,根据用户输入或数据库数据实时展示。2)处理表单提交并生成动态输出,确保使用htmlspecialchars防XSS。3)结合MySQL创建用户注册系统,使用password_hash和预处理语句增强安全性。掌握这些技巧将提升Web开发效率。

PHP和Python:解释了不同的范例 PHP和Python:解释了不同的范例 Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

See all articles