我使用这个简化的MYSQL代码:
CREATE TABLE element (
id int(11) NOT NULL auto_increment,
text varchar(100) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE tag (
id int(11) NOT NULL auto_increment,
text varchar(100) NOT NULL,
PRIMARY KEY (id)
);
我想将两个数据库与另一个数据库链接起来:
选项1
CREATE TABLE assoc_element_tags (
elem_id int(11) NOT NULL,
tag_id int(11) NOT NULL
);
我想知道这样做有什么缺点,为了更容易“文本”访问: 这里“elem_text”等于id为elem_id的元素中的“text”。 (将在INSERT期间添加)
选项2
CREATE TABLE assoc_element_tags (
elem_id int(11) NOT NULL,
tag_id int(11) NOT NULL,
elem_text varchar(100) NOT NULL,
tag_text varchar(100) NOT NULL
);
如果我需要“文字”,最好是assoc_element_tags
中的elem_id请求以及element
中的另一个文字请求。
直截了当:
选项3
CREATE TABLE assoc_element_tags (
elem_text varchar(100) NOT NULL,
tag_text varchar(100) NOT NULL
);
答案 0 :(得分:2)
如果我需要“文本”,最好是在assoc_element_tags中请求elem_id并在元素中另外请求文本
您误解了SQL的工作原理。您只需运行单查询,该查询使用JOIN
来查找表中的值。
规范化结构有哪些优点?以下是一些:
此外,SQL中的JOIN
非常有效,特别是在使用索引时。我建议你坚持使用你的第一个三表解决方案,并学习如何正确查询数据库。