【问题标题】:Is it bad practice to store multiple ids into one table column将多个 id 存储到一个表列中是否是不好的做法
【发布时间】:2011-08-20 02:41:03
【问题描述】:

我正在做一个项目,其中数据库有几个表,其中包含一个 type_id 字段,用于存储来自多个表的 id

例如:

id | table_type | table id
==============================
1    ADDRESS      1
2    ADDRESS      2
3    CITY         1
4    CITY         2
4    ADDRESS      3
5    COUNTRY      1

table_id 字段包含来自 Addresses 表、Cities 表或 Country 表的 id

我只是想知道这是否是一个好的设计。还是我应该尽可能避免这种情况?

此表用于获取用户输入的所有位置。

【问题讨论】:

标签: database database-design


【解决方案1】:

答案是:

视情况而定。

如果您提供的示例表名为Location,并且您正在使用它来实现类型继承,其中AddressCityCountryLocation 的特定类型,那么这种设计可以工作。在这种情况下,您的主键将位于Location 表中,而其他每个表都将具有指向Location 的外键。如果这不是您使用它的方式,那么这不是一个正确规范化的数据库设计。

【讨论】:

    【解决方案2】:

    这似乎是一个令人困惑的设计。如果您的表AddressCityCountry 都有自己的id 字段,那么引用它们的表应该使用类似Address_idCity_idCountry_id 的列名。

    您当前的设计过于笼统。以后一定会给你带来麻烦。

    【讨论】:

      【解决方案3】:

      看,如果你可以用你拥有的值来制作键。

      在这种情况下,您可以组合使用 table_typetable id 作为主键/唯一键。

      虽然如果table_type 只能是少数几个值之一,也许可以将类型保存为enum

      【讨论】:

      • 我会尽量避免以“看”开始回复。不是想在这里成为一名邮政警察,而是以一种相当激进的语气开始回复,无论这是否是故意的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      相关资源
      最近更新 更多