存储带破折号的帐号

时间:2018-07-31 20:35:27

标签: mysql sql

我确定有人问过这个问题,但是我一直在寻找有关电话号码的讨论。

我正在为一个控制多个在线商店的供应商组设计一个系统。有5种不同类型/级别的商店(根据其购买群体而定)。 这些帐户可以从我们的仓库订购产品,也可以拥有可以从其订购产品的客户集合。

由于商店帐户及其客户帐户都将存储在我们的系统中并可以通过我们的系统进行访问,但是商店将独立访问其客户帐户,因此我想为帐户建立一个“组织化”的结构,该结构适用于系统。

我计划使用10位数字的帐号,其中前5位数字标识商店(其中前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,并在向用户显示时对其进行格式化吗? (那么显然请确保接受带短划线的帐号输入)

1 个答案:

答案 0 :(得分:3)

1NF表示每个属性中的值必须是原子的。您通过添加破折号并将两个属性存储为一个来违反1NF。


您(理想情况下)应该做什么?

每个商店都有一个ID,因此商店的表应具有一个包含该ID的ID列。

接下来,客户还应该在表中拥有自己的ID。

最后,商店与客户之间的关系(或联结)表应该在每一行中包含商店的ID和客户的ID。

或者,客户可以有一个外键,该键可以告诉客户应该从哪家商店购物,前提是客户仅与一家商店绑定。