2011-09-27 69 views
0

我正在设计一个软件,它将使用标签来识别类似于StackOverflow的帖子,但有一些差异。如何从其他表格设计标签表格?

这些标签必须在dinamically(如这里)加载,但来自各种不同的表,因为它将用于识别。

例如:标签Brazil标识country table中的国家,标签Monday标识week day table中的一天。

我需要一个在数据库中如何设计这个想法。如何加载所有表中的标签,但是标识数据所属的正确表。

回答

1

这可能会做你想要什么:

CREATE TABLE countries (
    name VARCHAR PRIMARY KEY, 
    ... 
); 

CREATE TABLE weekdays (
    name VARCHAR PRIMARY KEY, 
    ... 
); 

CREATE VIEW tags AS 
(SELECT name AS tag, 'countries' AS source 
FROM countries) 
UNION ALL 
(SELECT name AS weekdays, 'weekdays' AS source 
FROM weekdays) 
UNION ALL ...; 

然后你就可以让更多的表,并将它们添加到视图。当你标记一些其他的表,你会汤治疗标记的名称和源作为主键,是指这种观点,比如:

CREATE TABLE foo (
    id SERIAL PRIMARY KEY, 
    ... 
); 

CREATE TABLE foo_tags (
    foo_id INTEGER REFERENCES foo, 
    tag_name VARCHAR, 
    tag_source VARCHAR 
); 

不幸的是,它不是可以定义一个外键从表foo_tags到上面定义的视图tags