本网站和其他网站上的多个问题与使用MySQL表定义有关,其中表的名称是列名。
例如,对于DB中的“注释”,我正在考虑使用结构:
CREATE TABLE IF NOT EXISTS `Notes` (
`id` int(10) NOT NULL,
`table` varchar(30) NOT NULL,
`row_id` int(10) NOT NULL,
`note` varchar(500) NOT NULL,
`user_id` int(11) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
我一直在阅读这是一个糟糕的数据库设计的地方。我已经发现这被称为多态关联。 Polymorphic association is specifically listed as a SQL Anti-Pattern。 (或in slides)
我已经看到了反模式的缺点,但我没有要求做我能想到的任何类型的查询。
对于我的应用程序,我希望能够在数据库中的每一行上写下注释。可能有数百个其他行。
令人困惑的是,虽然它被列为AntiPattern,但它似乎是ruby ActiveRecord concept的基本部分。活动记录层是否具有魔力,使其成为可能。 (即它在记录级别的多态关联,但不是在DB级别)?
具体来说,我想了解何时/如果使用此SQL设计是安全的。
-FT