Mysql DB标准化2NF&;3NF

Mysql DB标准化2NF&;3NF,mysql,sql,database,Mysql,Sql,Database,有一个非常简单的表shema: order_id (pk), customer_id(fk), order_date, ship_date, ship_address 这样的桌子是2NF的吗?如果是这样,它是否也在3NF中 Thx帮助:-)我认为是2NF,因为可能还有一个更有用的表 3NF应该看起来像: # orders order_id (pk) customer_id (fk) ship_address_id (fk) order_date ship_date # customers c

有一个非常简单的表shema:

order_id (pk), customer_id(fk), order_date, ship_date, ship_address
这样的桌子是2NF的吗?如果是这样,它是否也在3NF中


Thx帮助:-)

我认为是2NF,因为可能还有一个更有用的表

3NF应该看起来像:

# orders
order_id (pk)
customer_id (fk)
ship_address_id (fk)
order_date
ship_date

# customers
customer_id (PK)
customer_field1
...

# addresses
address_id (PK)
customer_id (FK)
street
zip
...

Amazon允许添加多个地址(家庭、办公室等)。你也应该这样做!:-)

您的订单表应拆分为orderDetails,其中包含product表和ShipDetails的同级。订单表应仅具有与订单相关的属性,如订单或订单日期的产品总数量。orderDetail将包含每个订单的productID和数量


拇指法则是“钥匙,整个钥匙,只有钥匙”< /P>可能应该有Spabl AdvestsSID,这样你就可以让客户有多个地址(发货,计费,联系等),你可能想考虑分离订单信息和运输信息。一个订单可能有多个发货事件Samazon还允许单独发货或一起发货多个发货日期如何?为了实现这一点,您需要有类似发货表的东西,具有一(订单)对多(发货)关系。该表将包含装运id(pk)、订单id(fk)、装运日期(这将从订单中删除),以及与特定装运相关的任何其他内容(可能是包装类型、装运承运人等,因为它们在订单之间也可能有所不同)