【问题标题】:create tables country with city用城市创建表格国家
【发布时间】:2021-09-04 08:30:40
【问题描述】:

哪个更好 - 制作两张表,一张用于国家/地区,另一张用于城市?

countries
countery_id pk
country_name

cities
city_id  pk
city_name
country_id   fk

或国家和城市一张表

id  pk
country_name
city_name

【问题讨论】:

    标签: sql forms ms-access relational-database


    【解决方案1】:

    我会为每个对象方法使用一个单独的表。 (2 表)

    1. 它会更容易维护和扩展(例如,您需要为国家/地区添加货币)。
    2. 它促进数据完整性,例如消除来自同一国家的两个城市的国家名称拼写不同(“美国”、“美国”等)的风险。
    3. 它节省了磁盘空间(没有数据重复)。

    【讨论】:

      【解决方案2】:

      这是一个复杂的问题。 “正式”的答案是国家和城市是不同的实体,因此您应该将它们放在单独的表中。

      实际的答案是,使用单独的表格可能没有多大用处:

      • 一个城市恰好位于一个国家/地区(尽管都会区可能跨越多个国家/地区)。
      • 城市从不——或很少——改变国家/地区。
      • 国家/地区具有标准化的名称和代码。

      “国家”可以被视为“城市”的一个属性。但这意味着通过多行重复国家名称。而且这样的重复很可能是有问题的,并且容易出错。但这取决于数据的来源。

      对我来说,我认为这可以归结为三个因素。

      1. 数据来源是什么?如果源是城市和经过验证的国家名称的标准化列表,我将它们存储为单个表不会有问题。如果来源是任意的或涉及任何人工输入,那么我建议为countries 单独提供一个表格。
      2. 您是否还需要存储有关某个国家/地区的其他信息,例如语言或人口?如果是这样,那么您需要为country 提供一个单独的表。
      3. 其他表格是否需要引用国家/地区(例如列出官方语言的表格)?

      总之,我想说可能有更多的情况需要两张桌子。但是在您非常简单的示例中,在某些情况下,一张桌子可能没问题。

      【讨论】:

        猜你喜欢
        • 2017-10-20
        • 2022-06-15
        • 1970-01-01
        • 2018-03-13
        • 2011-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-25
        相关资源
        最近更新 更多