两张桌子,两个关系?

时间:2013-03-20 04:47:11

标签: database-design

仅为两个表创建两个关系是正确的吗? 我所处的情况:我有 用户

的表格

另一个 图书

和我有两个关系:

1- offer book(一对多):提供您想要出售的书籍

2- order book(一对多):订购之前提供的其中一本书

3 个答案:

答案 0 :(得分:0)

在你的情况下,我认为你应该创建两个表:offer,orders,列表如下:

offer:id | id_user | id_book | datetime |价值..
顺序:id | id_user | id_book | datetime |价值..

然后在4个表之间创建关系

答案 1 :(得分:0)

我会使用4个表

用户, user_offer_book, user_buy_book, 书

用户购买书籍的次数是多少,所以来自user_buy_book(关系表)

用户提供的书籍也很多,所以来自user_offer_book(relashionship表)

您还需要用户和书籍表

欢呼声

答案 2 :(得分:0)

我认为你走在正确的轨道上,两个关系应该用两个表来表示。

如果您有2个表,则表示您可以表示由多个人订购的书(可以生成延期交货等候名单的想法),请参阅示例下面:

UserOffersBook 表:bookId可以是唯一的,因为不应该有多个人提供同一本书

[[UserOffersBook]]
bookId | userId | ...
---------------------
 100   |   1
 101   |   1
 200   |   2
 201   |   2

每本书都由一位用户提供。用户可以提供很多书籍。


UserOrdersBooks 表:orderId可以是表示用户订单的唯一标识符

[[UserOrdersBooks]]
orderId | bookId | userId | ...
-------------------------------
   123  |   100  |   2
   124  |   100  |   3 
   125  |   201  |   1
   126  |   101  |   2

每个订单都包含一本书和一个用户。一本书可以属于许多订单和不同的用户,因为这些用户可能想要将自己置于该书的等候名单

但我认为你可能希望用书籍订单来代表一系列书籍,所以:

[[UserOrdersBooks]]                      [[BasketsBooks]]
orderId | basketId | userId | ...         basketId | bookId
---------------------------------         -----------------
  123   |    500   |   2                     500   |   100
  124   |    501   |   1                     500   |   101
  125   |    502   |   3                     501   |   201
                                             502   |   100

所以这意味着:

  • Person1想要订购Book201(一本书在篮子里),他的订单#124。
  • Person2想要订购Book100和Book101(2本书在篮子里),他的订单#123。
  • Person3想要订购Book100(1本篮子里的书),他的订单#125。他正在等待那本书,因为他的订单是在Person2之后。