SQL中的数据建模

时间:2016-03-01 18:36:54

标签: mysql sql data-modeling

“政治家可以从许多公民那里收钱,同一个公民也可以向多个政客捐款”

我想知道这是否是一个多对多的关系,如果是这样,那就意味着模型中有三个实体:公民,政治家,以及像资本一样的第三个实体

1 个答案:

答案 0 :(得分:1)

你是正确的,这是一个多对多的关系,链接表本身也是一个完整的实体。政客,公民和捐赠。

Politicians
    ID
    Name
    ...

Citizens
    ID
    Name
    ...

Donations
    ID
    CitizenID
    PoliticianID
    Amount
    Timestamp

任何商业交易记录都遵循相同的模式:ThingsForSale,Customers,Purchases。

所有这些都是您想要搜索的内容,因此所有这些都会获得自己唯一的ID,甚至是链接表。有人可以多次购买相同的东西,因此对CitizenID,PoliticianID没有独特的限制。事实上,时间戳对于分开多次购买非常有帮助。

您还希望避免使用CASCADE ON DELETE之类的内容,因为购买记录通常应该永久存在。