如何为多值属性设计数据库?

时间:2015-08-10 10:46:48

标签: sql database-schema

我有一些具有不同类型属性的实体 首先,我的db模式如下:

tbl_attr
attr_id | user_id | value

其中value - 字符串类型,包含INT,DATE和STRING值。

其次,我有一个帮助我获取属性的功能

FUNCTION get_attr(id int, user_id int)
  RETURNS text CHARSET utf8
BEGIN
  RETURN (SELECT tbl_attr.value FROM tst WHERE tbl_attr.user_id = user_id and tbl_attr.attr_id = id);
END

如此简单的聚合查询如下所示:

Select sum(get_attr(2, 2)), sum(get_attr(3, 2)) from tst where get_attr(2, 2)
Order by get_attr(2, 2) desc

这适合我的情况吗?

UPD:此代码不起作用,因为我应该将CAST添加到get_attr函数以将字符串转换为int或date。这段代码只是为了解释我的想法应该如何运作

0 个答案:

没有答案