数据库设计和主键组成

时间:2017-06-08 08:26:32

标签: sql database ms-access

我有一张名为minib_bill的表格,我用它来记录客户的支出。我正在努力建立一个酒店/养老金系统管理。

我以为我可以制作一张桌子

Minibar_bill with(id_bill,id_minibar_product,id_client)

我想基于bill_id ...

在发票上添加这些信息

我该怎么办?

我的意思是我希望有类似的东西:

Id_bill(1)
id_minibar_product(1,2,3)
id_client(123)

所以前3条记录将是:

1, 1, 123
1, 2, 123
1, 3, 123

我希望id_bill在发票上...也许我可以用id_bill切换id_product

其中id_bill(1) - 将是数据库中的第一个账单记录 id_minibar_product(1,2,3) - 将是客户消耗的产品1,2,3 id_client(123) - 我们在发票上使用的客户端ID,用于从客户表中收集数据,以便在发票上打印(我将使用C#作为用户界面)。

我尝试过:

我尝试使用字段id_bill和id_product创建一个db,但我认为这是一个错误的方法,因为我将它们作为组合主键,我无法将它们添加到Invoice表中的外键。

1 个答案:

答案 0 :(得分:0)

以下是您的设计的一些建议:

如果您创建一个名为Minibar_bill的表格,那么描述性地命名,但是是一个好主意,如果您想要的话,它会变得不一致和短视开始为房间内的室内电影和室内用餐,服务等充电。我建议你称之为更通用的东西 - 从你的所有表名中删除迷你吧。

您绝不能将逗号分隔值放入单个字段中。

在线有一百万个销售数据模型,包括MS Access中的模板。没有必要重新发明轮子

我建议你有类似的东西

Client                  A list of clients
Products                A list of products you can be billed for (not just minibar)
Bill                    A client has zero or more bills (usually one)
BillLine                A bill has zero ore more lines. Each line represents 
                        One product being charged for on a bll

所以Bill是标题。您是否添加了一个列,指明何时/是否开具发票,付款等,或者您是否要创建单独的发票模块。

关于这个评论:

  
    

我希望将发票链接到minib_bill,以便在客户购买的迷你酒吧的所有产品的单一发票上显示状态。

  

如果您有单独的发票表,可以将BillID写入其中以进行链接。

我不确定您是否理解所有这些信息存在于不同的表格中,例如,当您打印发票时,您可以在那时收集来自各个表格的所有信息。