在列db设计方法

时间:2016-03-12 08:25:10

标签: mysql database-design

我需要一张带有列的表格 - > hotel_id,hotel_name,price_per_night,设施,首选

在此列中,设施和首选可能包含多个值。

例如 - >

设施可以是游泳池,水疗中心等(可以随时间添加许多差异值)

首选可以是情侣,家庭等(可以随时间添加许多差异值)

我对mysql很新。我很困惑如何设计我的数据库并考虑以下方法 - >

  1. 在一个列中包含多个值(这是一个坏主意)

  2. 创建三个表 - >

    a.first将是hotel_main,列为hotel_id,hotel_name,price_per_night

    b.second将是hotel_hotel,其中包含hotel_id,hotel_name,facility

    c.third将是preferred_hotel的hotel_id,hotel_name,首选

  3. 我想就如何设计数据库提出更多建议。

1 个答案:

答案 0 :(得分:1)

通常,非1NF设计在事务处理系统中是不好的想法。您遇到了许多难以解决的更新/删除完整性问题,并且MySQL甚至没有为您提供使插入安全的工具。

如果人们有效地使用非1NF设计,这些通常符合两个标准:

  1. 他们总是分析平台,
  2. 数据要么容忍降级完整性,要么很少更新/删除。
  3. 在两者都属实的情况下,甚至不考虑打破1NF。即使两者都是真的,这还不足以决定这样做。

    所以选择第二种方法