Mysql 数据库设计帐户与客户帐户

Mysql 数据库设计帐户与客户帐户,mysql,database-design,primary-key,composite-primary-key,user-accounts,Mysql,Database Design,Primary Key,Composite Primary Key,User Accounts,你好,堆栈溢出器 我正在为一个订购组重新设计一个系统。 我们有大约一百家公司(订购账户)向我们订购。 这些公司中可能有40家在我们这里有在线商店(管理员帐户) 在线商店有属于其商店的用户的客户列表,管理员帐户允许他们创建和管理客户和客户订单 因此,客户购物,完成后,订单将转到公司 公司验证订单(如果他们愿意,合并订单以节省运费),然后将其(/部分)发送给我们或从他们的库存中填充(/部分) 我们在我们的仓库包装他们的订单,并将其运送到订单上的地址 我们给公司开发票 然后,公司与客户结算付款。(我

你好,堆栈溢出器

我正在为一个订购组重新设计一个系统。 我们有大约一百家公司(订购账户)向我们订购。 这些公司中可能有40家在我们这里有在线商店(管理员帐户)

在线商店有属于其商店的用户的客户列表,管理员帐户允许他们创建和管理客户和客户订单

  • 因此,客户购物,完成后,订单将转到公司

  • 公司验证订单(如果他们愿意,合并订单以节省运费),然后将其(/部分)发送给我们或从他们的库存中填充(/部分)

  • 我们在我们的仓库包装他们的订单,并将其运送到订单上的地址

  • 我们给公司开发票

  • 然后,公司与客户结算付款。(我们从不直接向客户开票)

希望这不会太复杂

同样,我们从不直接向“客户”开账单。但在我们当前的系统中,我们以相同的方式存储所有帐户(订单、管理员和客户)

在考虑重新设计时,我质疑这是否是最合乎逻辑的方法。我正在考虑将我们的计费帐户(订购和管理)存储在accounts表中,将customers存储在单独的customers表中

我想设置它的方式是,我们的帐户有一个accountID XXXXX,而用户有一个类似的userID YYYYY,但由这两个组合键(XXXXX-YYYYY)标识

所以A公司的第一个客户是AAAA-000001,B公司的BBB-00001。当我想到客户订单向其母公司计费、显示所有公司客户等事情时,这似乎很好

但是,如果客户表中包含非唯一的customerid,即使这不是主键,这是一个坏主意吗

我知道我可以让它工作,但是当做一些像customerID和addressID相关的CustomerU地址表这样的事情时,它是不是不理想?那么它不需要使用accountID+customerID吗

最初我认为它们都是账户,账号的结构是AAAAA-00000是管理员账户,AAAAA-00001是客户1,等等

但这又让我想到,我们的账户表是否应该同样对待我们的客户/账单账户及其客户

对不起,如果这个问题到处都是。我想这说明了我是多么不确定这一切应该如何安排


如有任何意见,将不胜感激

在构建数据库时,您应该记住,您认为当前的需求将发生变化,因此如何才能最好地应对可扩展性。考虑到您的广泛需求,您应该从一开始就将一切正常化,我可以看到,您的数据库中有3种不同类型的“人”,即客户、管理员和公司。我会将所有这些都构建到一个表中,并为“权限”创建一个不同的表,即任何客户都可以成为商户等。将地址和帐户保存在单独的表中,并使用JOINsThank链接到您的主要客户ID感谢您的回复。我最初确实想把所有这些放在一起。我计划有一个Accounts表,其中包含所有帐户信息(地址、注册日期、状态[冻结/活动],等等),然后包括一个Users表,其中包含在线配置文件(用户名、密码、用户类型/权限、父帐户)。我将设法消除系统中多种类型的“人”。谢谢你的建议:)