4

该站点和其他站点上的多个问题与使用 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

4

0 回答 0