假设我有一个Customer表和一个Transaction Table,我说Customer to Transaction关系是One to Many。
所以我们可以说“一个客户有很多交易”......
这是我的第一个问题:
但是,当我说...时,这是真的吗?
“很多交易有一个客户”?
这是我的第二个问题:
为了在给定的域中建立关系,两种方式都必须是真的吗?
答案 0 :(得分:3)
关系是双向的,但每个方向的cardinality不必相同。
在您的示例中,说“一个客户有很多交易”确实是正确的。
但“许多交易有一个客户”并不完全准确。您可以说“每个交易只有一个客户”(假设交易必须有客户),您可以在此之后添加“许多交易可以属于一个客户”,但这两个报表都需要目的是为了准确。
为了完整地描述关系,两组语句都必须为真。
答案 1 :(得分:1)
一对多关系是最常见的关系类型。在这种类型的关系中,表A中的行可以在表B中具有许多匹配的行,但是表B中的行在表A中只能有一个匹配的行。例如,publishers和titles表具有一对一。许多关系:每个出版商都会制作许多出版物,但每个出版物只有一个出版商。
如果只有一个相关列是主键或具有唯一约束,则建立一对多关系。
一对多关系的主键侧由键符号表示。关系的外键侧用无穷大符号表示。
这是
的直接引用编辑:
您所描述的,如果“一次交易有多个客户” - “ - ”客户有多个交易“
是多对多的关系
答案 2 :(得分:1)
通常谈论SQL,我不知道“Have”/“has”是有用的还是标准的或通用的术语。我会说“与...相关”或“有相应的”。
无论如何,如果它是一对多的话,说“所有交易都有一个客户”更准确,除非可以进行没有关联客户的交易,在这种情况下你会说“交易所有零或一个客户”< / p>
SQL本身不支持多对多,通常你有一个“链接表”或“关联表”,例如,如果一个事务可以与多个客户关联(比如人们可以进行团购)你可以有一个名为CustomerTransactionAssociation的表,它有两个字段:CustomerID和TransactionID。客户和交易没有任何外键(也就是说,您不能只查看客户记录,看看它与之相关联的内容,或者它是否与任何内容相关联。)
您是否有任何特定的平台或事情需要完成?