如何规范化数据库模式

时间:2012-02-15 11:13:10

标签: database database-design normalization

我有两张桌子:

customer (
  client_id(PK), 
  lastname, 
  firstname, 
  flightID (Fk)
)

flight (
  flight_id(PK), 
  flightarrival, 
  flightdepart
)

我的问题是:

  • 架构有问题吗?
  • 如何将数据添加到航班表?

我真的想把两者分开,因为批量表很容易混淆。

以下是“批量表”的示例:

customer(
  client_id(PK), 
  lastname, 
  firstname, 
  flightarrival, 
  flightdepart
)

但我希望将其标准化并将其与客户表分开,然后将它们链接起来。

2 个答案:

答案 0 :(得分:4)

您提出的架构意味着每个客户都可能与一个(不是零,不超过一个)航班相关,这感觉不对。

从本质上讲,我认为你有一个多对多关系,你可以用三个表做:

customer (id(PK), lastname, firstname)

flight (id(PK), flightarrival, flightdepart)

customer_flight (
    customer_id REFERENCES customer(id),
    flight_id REFERENCES flight(id)
)

答案 1 :(得分:1)

你应该创建一个单独的交叉引用many-tomany - table,就像

一样

customer_flights(id int(pk),customer_id int,flight_id int,timecreated(optional))

一位客户可能会像过去和将来一样预订多个航班......

以后根据此表中的记录加入两个表