Sql 什么';RDBMS中基于表的关系和基于列的关系的区别是什么?
我在项目中经常使用基于列的关系,例如:Sql 什么';RDBMS中基于表的关系和基于列的关系的区别是什么?,sql,mysql,sql-server,database,oracle,Sql,Mysql,Sql Server,Database,Oracle,我在项目中经常使用基于列的关系,例如: CREATE TABLE `user` ( id INT AUTO_INCREMENT PRIMARY KEY, usergroup INT ); CREATE TABLE `usergroup` ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) ); 然而,在工作中,似乎有些人使用以下基于表的关系: CREATE TABLE `user` ( id INT AUTO_INCREMENT PRI
CREATE TABLE `user` (
id INT AUTO_INCREMENT PRIMARY KEY,
usergroup INT
);
CREATE TABLE `usergroup` (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50)
);
然而,在工作中,似乎有些人使用以下基于表的关系:
CREATE TABLE `user` (
id INT AUTO_INCREMENT PRIMARY KEY
);
CREATE TABLE `usergrouprelation` (
userid INT,
usergroupdid INT
);
CREATE TABLE `usergroup` (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50)
);
我想知道这两种方法的优缺点是什么?官方术语是什么?关系不同 在第一个示例中,一对多关系。一个组可以有多个用户。(一个用户只能在一个组中) 在第二个示例中,是一种多对多关系。许多组可以有许多用户。(一个用户可以在多个组中,并且组可以有多个用户)
这就是两者之间的区别,通常使用中间表来分解多对多关系。这些关系是不同的 在第一个示例中,一对多关系。一个组可以有多个用户。(一个用户只能在一个组中) 在第二个示例中,是一种多对多关系。许多组可以有许多用户。(一个用户可以在多个组中,并且组可以有多个用户)
这就是两者之间的区别,通常使用中间表来打破多对多关系。这没有一般的优点或缺点。我将您的“基于列的关系”称为1:n关系,将您的“基于表的关系”称为n:m关系 1:n表示每个用户可以与零个或一个用户组关联,每个用户组可以与多个用户关联
n:m意味着,每个用户都可以与零到多个用户组相关联,反之亦然。关于这一点没有一般的优点或缺点。我将您的“基于列的关系”称为1:n关系,将您的“基于表的关系”称为n:m关系 1:n表示每个用户可以与零个或一个用户组关联,每个用户组可以与多个用户关联
n:m意味着,每个用户都可以与零对多用户组相关,反之亦然。如果你有多对多关系,你必须走第二条路。 但是如果你有一对多或多对一的关系,你可以选择两个变体中的任何一个(但是第二个更容易扩展)
查看更多信息:如果你有多对多关系,你必须走第二条路。 但是如果你有一对多或多对一的关系,你可以选择两个变体中的任何一个(但是第二个更容易扩展)
查看更多信息:您要查找的术语是“多对多关系”的“透视表”。顺便说一句,这些不是“关系”。关系是我们通常称之为表的东西,这意味着数据块与主键/候选键()相关。您要寻找的术语是“多对多关系”的“透视表”。顺便说一句,这些不是“关系”。关系是我们通常称之为表的东西,这意味着数据片段与主键/候选键()相关。