外国关键人物必须只参考一张母桌。 这一点对于Kumyntax和关系理论都至关重要。
整体形态协会是指某一栏可以参考两个或两个以上母系。 您无法宣称,在“结构”中存在着这种限制。
多形态协会的设计打破了关系数据库设计的规则。 我不建议使用。
有几个备选办法:
<>光印章> 建立多个外国关键栏目,每个栏目指一名家长。 强制实施这些外国钥匙中完全可以是非民族解放军。
www.un.org/Depts/DGACM/index_spanish.htm 更改关系: 使用了三张多面表格、每张参考书和一张相应的母。
http://www.hchr.org。 与其说是暗含的“可加工”超级阶级,就形成了一个真实的表格,表明你们的每个表次都提到了这一点。 然后,你的评论与这个超级大国联系起来。 伪铁路法与以下法一样(不使用铁路,因此将其作为一条准则而不是字面法处理):
class Commentable < ActiveRecord::Base
has_many :comments
end
class Comment < ActiveRecord::Base
belongs_to :commentable
end
class Article < ActiveRecord::Base
belongs_to :commentable
end
class Photo < ActiveRecord::Base
belongs_to :commentable
end
class Event < ActiveRecord::Base
belongs_to :commentable
end
我在发言;http://www.slidecomm.net/billkarwin/practical-object-models-in-sql” rel=“nofollow noreferer”>Practical Object-Oriented Models in Luc/a>;我的书记。
评论: 是的,我确实知道,还有一栏注明了该表的名称,而该表是外国的关键。 这一设计没有外国钥匙的支持。
例如,如果你将“Video”改为“Video”号母表的名称,会发生什么情况。 评论编码>。 没有一个名为“Video”的表格。 是否应当用错误加以分类? 哪些限制被违反? 房舍管理事务所知道,这一栏应指明现有表格吗? 如何处理对案件敏感的表格名称?
同样,如果您放弃<代码>Events table,但您在Comments
上有行文表示 作为其父母的事件,结果如何? 退学表是否应当流产? <代码>Comments中的行文是否成为孤儿? 这些改动是否应当提到另一个现有表格,例如<条码>。 用于指<条码>的正值/代码>在注明<条码>时是否具有意义?
之所以出现这些困境,是因为多形态协会依靠数据(即直观价值)来指元数据(表格名称)。 这一点没有得到SQ的支持。 数据和元数据是分开的。
我花了很强的时间,围绕你的“联合监督”建议总结我的头脑。
定义<代码>Commentable,作为真正的表格,而不仅仅是在你的铁路模型定义中的形容词。 无需其他栏目。
CREATE TABLE Commentable (
id INT AUTO_INCREMENT PRIMARY KEY
) TYPE=InnoDB;
表格Articles
,Photos
和 Event
作为Commentable
的“子类别”,将其主要钥匙作为外国关键参考资料Commentable
。
CREATE TABLE Articles (
id INT PRIMARY KEY, -- not auto-increment
FOREIGN KEY (id) REFERENCES Commentable(id)
) TYPE=InnoDB;
-- similar for Photos and Events.
定义<代码>Comments table with a foreign key to Commentable
。
CREATE TABLE Comments (
id INT PRIMARY KEY AUTO_INCREMENT,
commentable_id INT NOT NULL,
FOREIGN KEY (commentable_id) REFERENCES Commentable(id)
) TYPE=InnoDB;
如你想建立<条码>,<>条/代码>(例如),你也必须在<条码>上建立一个新行。 。
INSERT INTO Commentable (id) VALUES (DEFAULT); -- generate a new id 1
INSERT INTO Articles (id, ...) VALUES ( LAST_INSERT_ID(), ... );
INSERT INTO Commentable (id) VALUES (DEFAULT); -- generate a new id 2
INSERT INTO Photos (id, ...) VALUES ( LAST_INSERT_ID(), ... );
INSERT INTO Commentable (id) VALUES (DEFAULT); -- generate a new id 3
INSERT INTO Events (id, ...) VALUES ( LAST_INSERT_ID(), ... );
当你想创建<条码>Comment时,使用<条码>所载数值。
INSERT INTO Comments (id, commentable_id, ...)
VALUES (DEFAULT, 2, ...);
当你想询问某一个特定<代码>标准代码”的评论意见时,有些代表团加入:
SELECT * FROM Photos p JOIN Commentable t ON (p.id = t.id)
LEFT OUTER JOIN Comments c ON (t.id = c.commentable_id)
WHERE p.id = 2;
如果你只收到评论,而且你想找到什么值得评论的资源,那么你会提出评论。 为此,你可能认为,指定哪一个参考表格是有益的。
SELECT commentable_id, commentable_type FROM Commentable t
JOIN Comments c ON (t.id = c.commentable_id)
WHERE c.id = 42;
然后,在从<代码>可计量的<> 类型代码>中发现数据后,需要再进行第二次查询,以便从相应的资源表获取数据。 你可以在同一个问询中这样做,因为LQ要求明确列出表格;你可以加入由同一询问中的数据结果确定的表格。
诚然,其中一些步骤违反了铁路公约。 但是,铁路公约在适当的关系数据库设计方面是错误的。