该站点和其他站点上的多个问题与使用 MySQL 表定义有关,其中表的名称是列名。
例如,对于数据库中的“笔记”,我正在考虑使用以下结构:
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;
我一直在到处读到这是糟糕的数据库设计。我发现这被称为多态关联。多态关联被特别列为 SQL 反模式。(或在幻灯片中)
我已经看到了反模式的缺点,但我不需要执行任何我能想到的那些类型的查询。
对于我的应用程序,我希望能够在数据库中的几乎每一行上写笔记。可能有数百个其他行。
令人困惑的是,虽然这被列为 AntiPattern,但它似乎是ruby ActiveRecord 概念的基本部分。活动记录层是否在发挥作用,使这一切正常。(即它在记录级别的多态关联,但不是在数据库级别)?
具体来说,我想了解何时/是否可以安全使用此 SQL 设计。
-FT