【发布时间】:2018-08-01 04:52:46
【问题描述】:
我确定有人问过这个问题,但我一直只找到有关电话号码的讨论。
我正在为一个控制多个在线商店的供应商组设计一个系统。有 5 种不同类型/级别的商店(基于他们的购买群体,等等)。 这些帐户可以从我们的仓库订购产品,也有自己的客户集合,可以从他们那里订购产品。
由于商店帐户及其客户帐户都将存储在我们的系统中并由我们的系统访问,但商店将独立访问他们的客户帐户,我想为帐号设置一个“有组织”的结构,该结构适用于双方系统。
我计划使用 10 位数字的帐号,前 5 位数字标识商店(第一个数字将标识商店类型/级别),最后 5 位数字标识客户。
例如,
First LEVEL1 store account : 10001-00000
Their customer accounts : 10001-00001, 10001-00002, etc.
Third LEVEL2 store account : 20003-00000
Their customer accounts : 20003-00001, 20003-00002, etc.
这应该有足够的增长来支持我们潜在的商店数量及其客户数量。
我的问题是,我应该用破折号分隔数字吗?
这当然让人类更清楚,但感觉在数据库中存储为真正的 int 会更好,虽然我不知道我会多久比较一次,等等。
我是否应该将其存储为不带破折号的 INT,并在向用户显示时对其进行格式化? (那么显然一定要接受带或不带破折号的帐号输入)
【问题讨论】:
-
这个问题的答案完全是主观的。为什么叫 Blend-O-Tron 9000B 而不是 Blend-O-Tron 9000/B 或 9000-B 或 9000+B?您可以使用任何您想要的分隔符,但请考虑您拥有的用户类型,以及是否会输入这些,在发票上看到它们等。有时越短越好,在这种情况下,AFX00001 可能比 20003-00001 更好.字母可以用更少的字符处理更多的可能性。
-
正确设计您的表格。这种结构只会在以后给您带来问题。阅读一些介绍性的数据库设计书籍。
-
感谢您的反馈!是的,这是非常主观的。从系统的角度来看,我更好奇破折号的一些缺点是什么。就我们的用户而言,在总部,我们只会与我们的经销商沟通(因此我们可能会要求提供前 5 位数字部分,然后我们将审查他们商店下的帐户),而我们的经销商只会与他们的客户打交道,因此他们永远不需要使用具有不同起始部分的帐号。我认为破折号可以帮助用户了解商店编号的结束位置和用户编号的开始位置。