如果选择枚举/查找表的特定值,如何为其他数据构造表?

时间:2010-04-02 01:18:38

标签: database-design

如果在表中的枚举列或查找列中选择了特定值,我想存储其他数据。显而易见的选择是在表中有一个额外的列,但这将导致一个基本上空的列,似乎是坏方法。还有其他选择/方法吗?

2 个答案:

答案 0 :(得分:0)

多个表是一种选择。它与面向对象的代码类似,只是与您的数据库表一样。想象一下,你有一个水果对象,下拉菜单指定了什么类型的水果:香蕉,苹果,橙子,西瓜。

因此,您的水果表将包含您的ID,重量,颜色,价格,IsOrganic等字段。然后香蕉也可能有FruitID,Length,RipenessLevel,Brand,IsBundled等.Apple会有FruitID,Flavor,IsBagged,IsWaxed等。橙色会有FruitID,IsWaxed,Flavour,IsBagged等。西瓜会有FruitID,CutType, IsSeedless等。

显然你可以在这里添加多个级别,因为苹果和橙子有一些共同的字段,根据你的需要可能有意义也可能没有意义。这样,当您查找水果数据时,您可以查看两个表以获取所有数据,或只查看Fruit表以获取基本数据。

答案 1 :(得分:0)

更干净的方法是使另一个表包含原始表中的行与可选值之间的映射。例如,假设您正在存储员工记录,因此您有一个包含4列的表:Id,Name,Department和SalesQuota。现在,SalesQuota值仅填入Department =“Sales”的行。

将表分开,以便您的员工表包含Id,Name和Department,以及包含Id和SalesQuota的销售配额表。您可以在id上加入两个表来获取原始视图,但同时,您没有大多数空列。您可以加入这两个表,也可以分别对它们进行操作。

在线搜索“数据库规范化”以获取更多关于此主题的文章。