我正在写一个Crud应用程序来存储我的客户信息。但是,每个客户端都需要存储不同的数据。例如。一个客户可能需要与存储的车辆有关的数据,而另一个客户需要存储有关钓鱼竿的信我每周都有很多新客户,目前约有100个。反正是为每个客户创建一个新表吗?
编辑:使用Access 2010
答案 0 :(得分:0)
不要在不同的栏目中存储不同产品的信息!你必须normalize your database。在您的情况下,您需要至少有3个表
Table Customer
--------------
CustomerID (PK)
Name
Address
etc.
Table Product
-------------
ProductID (PK)
Name
Price
etc.
Table CustomerItem
------------------
CustomerItemID (PK)
CustomerID (FK)
ProductID (FK)
Date
Remarks
etc.
如果您要存储订单(或发票),则必须用以下两个表替换CustomerItem
表:
Table Order
-----------
OrderID (PK)
CustomerID (FK)
Date
etc.
Table OrderItem
---------------
OrderID (PK, FK)
ProductID (PK, FK)
Quantity
Price
etc.
(PK)表示主键列,(FK)外键列。
数据库图如下所示:
Customer
1 | n
+------> Order Product
1 | n n | 1
+------> OrderItem <------+
这使您可以通过始终使用相同的列为每个客户存储任意数量的信息。您只需添加新的相关记录(例如现有订单中的新订单或新订单商品),而不是使用不同的列。
答案 1 :(得分:0)
你对这些数据做了什么?
如果您告诉我一个客户想要存储商品价格,并且他希望您稍后将商品价格乘以库存中的数量以获得总库存价值,而另一个客户希望您存储海拔高度一架飞机正在飞行,他希望你比较同一区域内不同飞机的高度作为防撞系统的一部分,我说你有两个截然不同的领域,可能是两个不同的桌子。您需要为它们创建单独的字段和/或表。如果你有100个客户都有完全不同的要求,比如一个想要一个工资单系统而另一个想要一个零售系统而另一个想要一个系统来监控他的实验室实验的温度和压力,我不会试图以某种方式填补所有这些完全不同的东西都集成到一个数据库中。
但是,如果你的意思是,两个客户都是零售商,一个销售有手续描述,价格和数量的车辆,另一个销售具有描述,价格和数量的钓鱼竿,以及你使用两者的数据做了几乎相同的事情,那么唯一的问题就是给字段提供适当的通用名称。如果您查看了汽车经销商对系统的要求,并且您的想法是,&#34;我将创建一个我称之为“vehicle_inventory&#39;有一个名为&#39; vehicle_description&#39;&#34;的列,现在你发现自己为钓竿经销商创建了一个非常相似的系统,唯一真正的问题可能是&#34; vehicle_inventory&#34;和&#34; vehicle_description&#34;太具体了,你可以打电话给他们&#34;库存&#34;和&#34; item_description&#34;然后它适用于两种情况。
如果这不能回答您的问题,请更具体地说明问题所在。