Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL中特定客户的唯一表_Mysql_Sql_Database - Fatal编程技术网

MySQL中特定客户的唯一表

MySQL中特定客户的唯一表,mysql,sql,database,Mysql,Sql,Database,我目前正在设计一个计费应用程序,可供顾问向其客户计费。我目前在mysql中有3个表用于存储信息。表格包括活动、客户和费用 在活动表中,我得到了活动id、活动名称、百分比、小时数 在customer表中,我得到了customer\u id以及关于客户的所有信息 在费用表中,我有费用id、说明、成本、数量 我试图找出如何设计数据库,以便跟踪每个客户在活动上花费的时间。我希望它能用于多个客户,但我不知道如何为此构建数据库 在活动表中最好使用像custId这样的外键吗 听起来像。每个活动是否有一个(且只

我目前正在设计一个计费应用程序,可供顾问向其客户计费。我目前在mysql中有3个表用于存储信息。表格包括活动、客户和费用

在活动表中,我得到了活动id、活动名称、百分比、小时数

在customer表中,我得到了customer\u id以及关于客户的所有信息

在费用表中,我有费用id、说明、成本、数量

我试图找出如何设计数据库,以便跟踪每个客户在活动上花费的时间。我希望它能用于多个客户,但我不知道如何为此构建数据库


在活动表中最好使用像custId这样的外键吗

听起来像。每个活动是否有一个(且只有一个)客户?然后,您可以将activity\u id作为
activity
表的主键,customer\u id作为外键。对于每个客户,您可以获得一份活动列表,对于每个活动,您可以计算出顾问在该活动中为该客户工作的时间。


但很大程度上取决于你的整体结构。这是一个非常简单的数据模型。例如,如果您有类似于“项目”的活动,那么您应该将客户id放在项目表中。同样,如果该活动有多个客户,您将有另一个表,其中包含活动id和客户id,以显示该关系。因此,这取决于你试图模拟的问题。

习惯于倾听,这取决于。。。。从表面上看,将customer_ID作为外键添加到活动中是有意义的,但活动是否会“重复使用”给不同的客户?是否可以在客户之间划分活动?如果是这样,那么您需要一个关联表。如果一个活动总是针对一个客户,并且一个客户可以有零个或多个活动,那么活动中的客户Id是有意义的。问问你自己,在肉欲和设计方面更容易理解。是的。。。一项活动是否可以为多个客户重复使用?针对两个不同客户使用的活动会产生不同的费用吗?这些都是确定正确道路的好问题。我猜是第四个表,它包含客户、活动和费用之间的关系(可能有日期或日期范围)。所有活动都将用于所有客户。费用也一样。使用第四个表格是有意义的,因为我需要在所有活动上加盖日期戳。我还将有几个相同的活动,带有不同的日期戳,以及抓取一个日期范围。基本上,我将有一个项目,我将执行许多活动。我必须记录在项目的每项活动上花费的每一个小时。也许我会有一个项目表,上面有活动id、客户id等信息。相反,情况会更糟。如果项目表是最重要的“工作”,那么它的标识符将是项目id,活动表将包含该项目id,因为您将有一个包含许多活动的项目。太棒了。谢谢你的帮助。今晚我来测试一下我的数据库就是这样布置的。最终,我希望根据所有活动为客户生成发票,这些活动都是基本表,但表之间没有链接。客户如何与活动和发票关联?发票如何与活动关联?费用是如何与任何事情联系在一起的?您将需要标志和日期来指示哪些活动已被计费,哪些活动已被支付。你们有标准的活动,有标准的价格吗?如果不同的话,您是否希望跟踪向单个客户提供的费率?只是我想到的几件事。