Mysql 设置表关系
我在mysql数据库中设置关系时遇到困难。我有两张桌子。这些表的关系是公司和销售订单号 我本以为mySQL workbench会自动检测到这种关系,但事实并非如此。我发现了很多关于使用外键定义关系的引用,但它们都基于单个字段,我的关系同时依赖于Mysql 设置表关系,mysql,Mysql,我在mysql数据库中设置关系时遇到困难。我有两张桌子。这些表的关系是公司和销售订单号 我本以为mySQL workbench会自动检测到这种关系,但事实并非如此。我发现了很多关于使用外键定义关系的引用,但它们都基于单个字段,我的关系同时依赖于公司和销售订单编号字段 定义这些表的关系的正确方法是什么?您必须使用外键来定义关系吗 谢谢 Table: sales_order_header - (PK) sys_rowid - (UNIQUE) company - (UNIQUE) sa
公司和销售订单编号字段
定义这些表的关系的正确方法是什么?您必须使用外键来定义关系吗
谢谢
Table: sales_order_header
- (PK) sys_rowid
- (UNIQUE) company
- (UNIQUE) sales_order_number
- Order Total
“您必须使用外键定义关系吗?”绝对不是,外键是关于引用完整性而不是关系的。鉴于FKs是关于引用完整性的,您应该在引用公司表的公司的sales\u order\u标题中有1个,公司不应该存在于sales\u order\u详细信息中(这是多余的)但是你应该有一个关于销售订单号的FK,它引用销售订单号。公司必须存在销售订单号,这是一个多公司数据库,因此我们可以有两个销售订单号相同但公司不同(公司不是下订单的人)。因此,如果我仅在销售订单号上设置FK,则关系将不正确。谢谢。“我们可以有两个销售订单,它们的销售订单号相同,但公司不同。”-你是说你可以有两个销售订单头?是的,数据库是多公司的,因此一个数据库/系统可以操作两个不同的公司。有少量的共享信息,但在大多数情况下,每个表中都有一个公司代码。如果您登录到“A公司”,那么您只能看到来自您公司的记录,同样,如果您登录到“B公司”。因此,您可以有两个销售订单标题,它们的销售订单编号相同,但公司代码不同。
Table: sales_order_detail
- (PK) sys_rowid
- (UNIQUE) company
- (UNIQUE) (FK) sales_order_number
- (UNIQUE) sales_order_line
- sales_order_line_total