【发布时间】:2020-01-16 20:32:37
【问题描述】:
我有一个关于数据库设计的概念性问题,在我作为开发人员的历史中多次出现。 想象一下,我有一个过去设计的更大的数据库,并且已经投入生产(例如,您可以使用 http://sqlfiddle.com/#!9/7c06f/1,一个库数据库)。
现在有一个新功能请求:对于每个表中的每个现有对象,都应该有一个“帮助文本”(或不同的东西,一个错误,一个标签......),你可以在一个地方查看。
我过去曾多次实施类似的方法,但每次都对解决方案不满意。
一种解决方案是为每个表创建一个链接表,如下所示:
CREATE TABLE BooksHelp (
BookId INT NOT NULL,
HelpText VARCHAR NOT NULL
);
CREATE TABLE AuthorHelp (
AuthorId INT NOT NULL,
HelpText VARCHAR NOT NULL
);
...
但我需要多个链接表,这使得选择每个现有的“帮助文本”变得困难。
你会如何设计这个问题?还有其他更好的解决方案吗?
【问题讨论】:
-
我可能会在每个表中添加“helptext”列并创建一个视图,该视图执行 UNION 以显示所有表或检查所有表并使用动态 SQL 返回该信息的函数(但您如果您使用 MySQL,则没有该选项)
标签: sql database-design